模拟题目:

设置配置环境:

[candidate@node-1] $ kubectl config use-context k8s

Task

在 namespace ingress-ckad 下,有 deployment service ingress 三个资源已经部署好了, 但是他们的配置有问题,导致的ingress 网络不通。 3个资源的配置清单在目录 /ckad/CKAD202206 中 ,请将其修改为正确的,并重新创建。

请注意,这道题的deployment 是正确的,请不要修改 deployment

参考:

https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

解答:

切换环境

kubectl config use-context k8s

查看已有的svc并访问

kubectl -n ingress-ckad get pod,svc,ingress -owide
curl 10.106.76.153

file

查看配置 并进行修改

vim /ckad/CKAD202206/ingress.yaml

ingress.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dm
  namespace: ingress-ckad
spec:
  replicas: 2
  selector:
    matchLabels:
      name: nginx-ing
  template:
    metadata:
      labels:
        name: nginx-ing #标签
    spec:
      containers:
      - name: nginx
        image: vicuu/nginx:hello81
        imagePullPolicy: IfNotPresent
        ports:
          - containerPort: 81 #容器端口
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-ing-svc #服务名
  namespace: ingress-ckad
spec:
  ports:
  - port: 80 #和ingress的端口一致
    targetPort: 81 #这个端口需要和deployment的containerPort值一致
    protocol: TCP
  selector:
    name: nginx-ing #修改标签 和deployment的一致

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress-test
  namespace: ingress-ckad
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx-example123
  rules:
  - http:
      paths:
      - path: /hello
        pathType: Prefix
        backend:
          service:
            name: nginx-ing-svc #需要和service的服务名一致
            port:
              number: 80 # 需要和service的port的值一致

应用

kubectl apply -f /ckad/CKAD202206/ingress.yaml

查看并测试

kubectl apply -f /ckad/CKAD202206/ingress.yaml
curl 10.106.76.153
curl 10.102.130.182/hello

file