代码改变世界

华为云 Kubernetes 管理员实训 四 课后作业

2019-07-23 09:31  jetwill  阅读(585)  评论(0编辑  收藏  举报

练习一

创建一个Service和一个Pod作为其后端。通过kubectl describe获得该Service和对应Endpoints的信息。

  • Service的名称为<hwcka-004-1-svc-你的华为云id>
  • Pod的名称为<hwcka-004-1-pod-你的华为云id>
  • 将所用命令、Service和Endpoints的完整yaml截图上传

首先创建 pod,注意添加标签。因为Pod和Service会通过标签关联起来。

[root@svn ch4]# cat pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: hwcka-004-1-pod-joyo
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx:alpine

[root@svn ch4]# kubectl apply -f pod.yaml
pod/hwcka-004-1-pod-joyo created

[root@svn ch4]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
busybox                1/1     Running   13         20h
hwcka-004-1-pod-joyo   1/1     Running   0          13s
[root@svn ch4]#

接着把 pod 暴露为 service

kubectl expose pod hwcka-004-1-pod-joyo --port=8888 --target-port=80 --name=hwcka-004-1-svc-joyo

测试和验证:

[root@svn ch4]# kubectl get svc
NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
hwcka-004-1-svc-joyo   ClusterIP   10.101.211.222   <none>        8888/TCP   4m19s
kubernetes             ClusterIP   10.96.0.1        <none>        443/TCP    41d

[root@svn ch4]# kubectl get ep
NAME                   ENDPOINTS              AGE
hwcka-004-1-svc-joyo   10.244.2.179:80        8m22s
kubernetes             192.168.202.130:6443   41d


[root@svn ch4]# k describe svc hwcka-004-1-svc-joyo
Name:              hwcka-004-1-svc-joyo
Namespace:         default
Labels:            app=nginx
Annotations:       <none>
Selector:          app=nginx
Type:              ClusterIP
IP:                10.101.211.222
Port:              <unset>  8888/TCP
TargetPort:        80/TCP
Endpoints:         10.244.2.179:80
Session Affinity:  None
Events:            <none>

并且运行curl 10.244.2.179:80curl 10.101.211.222:8888 都能看到Welcome to nginx!的欢迎页面。

练习二

创建一个Service和一个Pod作为其后端。通过nslookup查询该Service的Pod的域名信息。

  • Service的名称为<hwcka-004-2-你的华为云id>
  • 将所用命令、Service和Pod域名信息截图上传

首先创建Pod。

kubectl run nginx --image=nginx:alpine --generator=run-pod/v1

然后暴露Pod为Service。

kubectl expose pod nginx --port=8888 --target-port=80 --name=hwcka-004-2-joyo

Service和Pod的域名信息

[root@svn ch4]# kubectl exec -it busybox -- nslookup hwcka-004-2-joyo
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      hwcka-004-2-joyo
Address 1: 10.110.24.8 hwcka-004-2-joyo.default.svc.cluster.local

[root@svn ch4]# kubectl exec -it busybox -- nslookup nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      nginx
Address 1: ::ffff:67.215.82.154
Address 2: 67.215.82.154

busybox.yaml的内容(考试环境下,不允许下载nslookup软件包,但是可以pull 镜像,于是我们使用busybox:1.28里面的nslookup命令)

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always