练习一
创建一个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:80
和curl 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