CKA考试真题(2)-- 绝对干货!

目录

前言

11. NetworkPolicy网络策略

12. Deployment暴露端口/创建Service

13. 创建Ingress

14. 创建pvc及挂载pvc的pod


前言

17道真题难度等级

一级 rbac cpu 扩容 pod指定节点 pv pod日志 排障 查看可用节点 多容器pod 节点维护

二级 networkpolicy service  ingress  pvc

三级 sidecar 升级集群 备份还原etcd

本系列有三篇博客,本博客为第二篇,即二级难度篇

CKA注意事项:CKA考试注意事项--考前必看!_luo_guibin的博客-CSDN博客

第一篇:CKA认证真题(1)-- 必考_luo_guibin的博客-CSDN博客

第二篇:CKA考试真题(2)_luo_guibin的博客-CSDN博客

第三篇:CKA认证真题(3)-- 绝对干货!_luo_guibin的博客-CSDN博客

11. NetworkPolicy网络策略

CKA考试真题(2)-- 绝对干货!_第1张图片


Task

在现有的 namespace my-app 中创建一个名为 allow-port-from-namespace 的新 NetworkPolicy

确保新的 NetworkPolicy 允许 namespace corp-net 中的 Pods 连接到 namespace echo 中的 Pods 的 9000 端口。

进一步确保新的 NetworkPolicy:

不允许对没有在监听 端口 9000 的 Pods 的访问

不允许非来自 namespace echo 中的 Pods 的访问


参考文档:网络策略 | Kubernetes

CKA考试真题(2)-- 绝对干货!_第2张图片

 #删除egress部分,更改ingress相关参数

#答案

vi networkpolicy.yaml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace
  namespace: echo     #被访问者
spec:
  podSelector:
    matchLabels: {}
  policyTypes:
    - Ingress
  ingress:
    - from:
        - namespaceSelector:
            matchLabels:
              project: corp-net     #访问者
      ports:
        - protocol: TCP
          port: 9000


kubectl apply -f networkpolicy.yaml

12. Deployment暴露端口/创建Service

CKA考试真题(2)-- 绝对干货!_第3张图片


Task

请重新配置现有的 deployment front-end 以及添加名为 http 的端口规范来公开现有容器 nginx 的端口 80/tcp

创建一个名为 front-end-svc 的新 service,以公开容器端口 http

配置此 service,以通过各个 Pod 所在的节点上的 NodePort 来公开他们。


参考文档: 服务(Service) | Kubernetes

CKA考试真题(2)-- 绝对干货!_第4张图片

#edit deployment 然后添加端口信息,注意添加位置

#答案

kubectl edit deployment front-end

    ports:
      - containerPort: 80
        name: http-web-svc

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 get deployment front-end -o wide

#如果你 kubectl expose 暴露服务后,发现 service 的 selector 标签是空的,kubectl edit svc front-end-svc在 ports 这一小段下面添加 selector 标签
 selector:
 app: front-end

13. 创建Ingress

CKA考试真题(2)-- 绝对干货!_第5张图片


Task

如下创建一个新的 nginx Ingress 资源:

名称: ping

Namespace: ing-internal

使用服务端口 5678 在路径 /hello 上公开服务 hello

可以使用以下命令检查服务 hello 的可用性,该命令应返回 hello

curl -kL /hello


参考文档: Ingress | Kubernetes

CKA考试真题(2)-- 绝对干货!_第6张图片

CKA考试真题(2)-- 绝对干货!_第7张图片

 ingressclass、ingress 写在同一个yaml文件中, ingressclass不需要更改内容。

vi ingress.yaml

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  labels:
    app.kubernetes.io/component: controller
  name: nginx-example
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ping
  namespace: ing-internal    #注意新增namespace
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx-example
  rules:
  - http:
      paths:
      - path: /hello
        pathType: Prefix
        backend:
          service:
            name: hello
            port:
              number: 5678

kubectl apply -f ingress.yaml

#检查
kubectl get ingress -n ing-internal
curl http://ingress-IP/hello

14. 创建pvc及挂载pvc的pod

CKA考试真题(2)-- 绝对干货!_第8张图片


Task

创建一个新的 PersistentVolumeClaim

名称: pv-volume

Class: csi-hostpath-sc

容量: 10Mi

创建一个新的 Pod,来将 PersistentVolumeClaim 作为 volume 进行挂载:

名称:web-server

Image:nginx

挂载路径:/usr/share/nginx/html


参考文档:配置 Pod 以使用 PersistentVolume 作为存储 | Kubernetes

CKA考试真题(2)-- 绝对干货!_第9张图片

 CKA考试真题(2)-- 绝对干货!_第10张图片

 #需要创建pvc和一个挂载pvc的pod

#答案

pv pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-volume
spec:
  storageClassName: csi-hostpath-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Mi


pv pvc-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  volumes:
    - name: task-pv-storage     #与下面对应,可不更改
      persistentVolumeClaim:
        claimName: pv-volume    #对应pvc.yaml的name
  containers:
    - name: nginx               #容器名题目无要求可随意更改
      image: nginx
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage  #与上面对应,可不更改

kubectl apply -f pvc.yaml
kubectl apply -f pvc-pod.yaml

你可能感兴趣的:(cka认证,k8s,cka考试,cka认证)