CKA 模拟题库 | 4. 暴露服务 service
模拟考题
设置配置环境:kubectl config use-context k8s
Task
请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp 。
创建一个名为 front-end-svc 的新 service ,以公开容器端口 http 。
配置此 service ,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。
参考
概念 –> 工作负载 –> 工作负载资源 –> Deployments
https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/
解答
考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s
检查deployment信息,并记录SELECTOR的Lable标签,这里是app=front-end
kubectl get deployment front-end -o wide |
编辑 front-end
kubectl edit deployment front-end |
spec下 name:nginx 行后添加
ports: |
暴露端口:
kubectl expose deployment front-end --type=NodePort --port=80 --target-port=80 --name=front-end-svc |

检查
暴露服务后,检查一下service的selector标签是否正确,这个要与deployment的selector标签一致
kubectl get svc front-end-svc -o wide |

如果你kubectl expose暴露服务后,发现service的selector标签是空的,或者不是deployment的,如下图这样:

则需要编辑此service,手动添加标签
kubectl edit svc front-end-svc |
在ports这一小段下面添加selector标签 selector: app: front-end #注意yaml里是写冒号,而不是等号,不是app=front-end

确保service的selector标签与deployment的selector标签一致

kubectl get pod,svc -o wide |
curl 所在的node的ip或主机名:30xxx |
注意,只能curl通svc的80端口,pod 是无法ping通的



