日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CKA认证考题+解析

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CKA认证考题+解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CKA認證考題

1.RBAC 4%

Context

為部署管道創建一個新的ClusterRole并將其綁定到范圍內特定的namespace的特定ServiceAccount

Task

創建一個名為deployment-clusterrole且僅允許創建以下資源類型的新ClusterRule

Deployment
StatefulSet
DaemonSet
在現有的namespace app-team1中創建一個名為cicd-token的新ServiceAccount
限于namespace app-team1,將新的ClusterRole deployment-clusterrole綁定到新的ServiceAccount cicd-
token

解題思路:

#第一步:命令補全 source < (kubectl completion bash) #第二步:創建ClusterRole(通過kubectl create clusterrule -h) kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets #第三步:創建ServiceAccount kubectl create serviceaccount cicd-token -napp-team1 #第四步:將ClusterRole和ServiceAccount進行綁定(指定ns就創建rolebinding,不指定ns就創建clusterrolebinding) kubectl create rolebinding cicd-token-binding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -napp-team1

2.驅逐節點 4%

Task
將名為ek8s-node-1的節點設置為不可用,并重新調度在其上運行的所有Pod。

解題思路:

#第一步:驅逐node上所有pod,node狀態變為noschedule Kubectl drain ek8s-node-1 --ignore-daemonsets --force

3.集群升級 7%

Task
現有的Kubernetes集群正在運行版本1.18.8.僅將主節點上的所有Kubernetes控制平面和節點組件升級到版本
1.19.0
另外,在主節點上升級Kubelet和Kubectl
確定在升級之前drain主節點,并在升級后uncordon主節點。請不要升級工作節點,etcd,container管理器,
CNI插件,DNS服務或任何其他插件。

解題思路:

#第一步:連接到master節點 ssh k8s-master #第二步:使用root用戶驅逐節點 su root Kubectl drain k8s-master #第三步:安裝1.19版本 apt-cache show kubeadm|grep 1.19.0 apt-get install kubeadm=1.19.0-00 #第四步:使用Kubeadm升級K8s kubeadm upgrade apply 1.19.0 --etcd-upgrade=false #第五步:升級kubelet apt-get install kubectl=1.19.0-00 #第六步:恢復master節點 kubectl uncordon k8s-master

4.ETCD備份恢復 7%

Task
首先,為運行在https://127.0.0.2379上的現有etcd實例創建快照并將快照保到/var/lib/backup/etcd-snapshot.db
然后還原位于 /var/lib/bakup/etcd-snapshot-previous.db
提供了以下TLS證書與密鑰,以通過etcdctl連接到服務器
CA證書:/opt/KUIN00601/ca.crt
客戶端證書:/opt/KUIN00601/etcd-client.crt
客戶端密鑰:/opt/KUIN00601/etcd-client.key

解題思路:

#第一步:指定etcdctl版本 export ETCDCTL_API=3 #第二步:給etcd做快照 etcdctl --endpoints=https://127.0.0.2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key" snapshot save /var/lib/backup/etcd-snapshot.db #第三步:查看快照是否創建成功 etcdctl --endpoints=https://127.0.0.2379 --cacert="/opt/KUIN00601/ca.crt" --cert="/opt/KUIN00601/etcd-client.crt" --key="/opt/KUIN00601/etcd-client.key" snapshot status /var/lib/backup/etcd-snapshot.db -wtable #第四步:恢復快照 etcdctl snapshot restore /var/lib/bakup/etcd-snapshot-previous.db #第五步:查看恢復快照狀態 etcdctl snapshot status /var/lib/bakup/etcd-snapshot-previous.db -wtable

PS:做完題目之后退回work節點終端界面

5.網絡策略 4%

Task
在已有的namespace foobar中創建一個名為allow-port-from-namespace的新NetworkPolicy,以允許
namespace corp-bar訪問其Pods的端口9200
解題思路:

#第一步:從k8s官網拷貝yaml模板(粘貼注意格式:set paste) vim NetworkPolicy.yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:name: allow-port-from-namespacenamespace: foobar spec:podSelector: {}policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:project: corp-barports:- protocol: TCPport: 9200 #第二步:創建NetworkPolicy kubectl apply -f NetworkPolicy.yaml

6.SVC 4%

Task
重新配置現有的deployment front-end,并添加名為HTTP的端口規范,以暴露現有容器nginx的端口80/
tcp。
創建一個名為front-end-svc的新服務,以暴露容器端口HTTP。
配置新服務以通過調度它們的節點上的NodePort暴露各個Pod

解題思路:

#第一步:修改deployment的yaml 添加以下一行:spec.template.spec.containers name: nginx ports: - containerPort: 80name: http #第二步:創建svc kubectl create svc front-end-svc nodeport --tcp=80:80 #第三步:檢查svc和deployment的標簽是否一致 kubectl get deployment front-end --show-labels kubectl get svc front-end-svc --show-labels #第四步:檢查是否成功 kubectl get svc front-end-svc curl $ClusterIP curl $nodeIP+隨機端口

PS:在檢查時一定進入k8s集群中,考試中不能跨集群curl,ssh到任何一個work節點再curl

7.Ingress 7%

Task
創建一個名為nginx的Ingress并遵守以下規則
Name:pong
Namespace:ing-internal
Exposing service hello on path /hello 使用端口5678
驗證
curl -KL <INTERNAL_IP>/hello

解題思路:

#第一步:在k8s官網拷貝ingress模板 vim ingress.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: pongnamespace: ing-internalannotations:nginx.ingress.kubernetes.io/rewrite-target: / spec:rules:- http:paths:- path: /hellopathType: Prefixbackend:service:name: helloport:number: 5678 #第二步:創建ingress kubectl apply -f ingress.yaml #第三步:驗證 kubectl get ingress pong -n ing-internal -o yaml(查看INTERNAL_IP) curl -KL <INTERNAL_IP>/hello #返回hello證明成功

8.擴容 4%

Task
將deployment web-server擴容到4個pods

解題思路:

kubectl get deployment -A kubectl scale --replicas=4 deployment web-server kubectl get pod

9.通過node標簽調度pod 4%

Task
按以下規則調度pod:
name:ngux-kusc00401
image:nginx
Node selector:disk=ssd

解題思路:

#第一步:查看當前集群所有node的標簽 kubectl get node --show-labels #第二步:創建pod kubectl run --generator=run-pod/v1 ngux-kusc00401 --image=nginx --dry-run -o yaml>nginx1.yaml (V1.17.0) kubectl run ngux-kusc00401 --image=nginx --dry-run=client -o yaml>nginx1.yaml (V1.20.0以上) #第三步:編輯yaml vim nginx.yaml apiVersion: v1 kind: Pod metadata:creationTimestamp: nulllabels:run: ngux-kusc00401name: ngux-kusc00401 spec:containers:- image: nginxname: ngux-kusc00401resources: {} #添加一行:nodeSelector:disk: ssddnsPolicy: ClusterFirstrestartPolicy: Always #第四步:執行yaml并檢查是否running kubectl apply -f nginx.yaml

10.節點數量 4%

Task
檢查并查看有多少個節點準備就緒(不包括已獲得Noschedule的節點)并將其寫
入/opt/KUSC00402/kusc00402.txt

解題思路:

#第一步:查看當前集群中的Node有沒有污點 kubectl describe node|grep Taint #第二步:將結果輸入到文件中 echo 2>/opt/KUSC00402/kusc00402.txt

11.創建多容器pod 4%

Task
創建一個名為kucc8的pod,并且使用以下鏡像(可能指定了1至4個鏡像)
nginx+redis+memcached+consul

解題思路:

#第一步:創建yaml模板文件 kubectl run kucc8 --image=nginx --dry-run=client -o yaml>kucc8.yaml #第二步:編輯yaml文件 vim kucc8.yaml apiVersion: v1 kind: Pod metadata:creationTimestamp: nulllabels:run: kucc8name: kucc8 spec:containers:- image: nginxname: nginx #添加以下內容:- image: redisname: redis- image: memcachedname: memcached- image: consulname: consulresources: {}dnsPolicy: ClusterFirstrestartPolicy: Always status: {} #第四步:查看結果 kubectl apply -f kucc8.yaml

12.pv 4%

Task
創建一個名為app-config的的pv,1Gi大小,權限為ReadOnlyMany便用hostPath類型掛載本地位置
為/srv/app-config

解題思路:

#第一步:從官網復制模板 vim app-config.yaml apiVersion: v1 kind: PersistentVolume metadata:name: app-configlabels:type: local spec:storageClassName: manualcapacity:storage: 1GiaccessModes:- ReadOnlyManyhostPath:path: "/srv/app-config" #第二步:創建pv并檢查 kubectl apply -f app-config.yaml kubectl get pv

13.pvc 7%

Task
創建一個pvc滿足以下要求:
Name:pv-volume
Class:csi-hostpath-sc
Capcity: 10Mi
創建一個pod并掛載PVC:
name:test
image.:nginx
Mount path:/usr/share/nginx/html
編輯pod volume權限為ReadWriteOnce
最后,使用kubectl edit或者kubectl patch將pvc大小改為70Mi

解題思路:

#創建pvc vim pv-volume.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: pv-volume spec:storageClassName: csi-hostpath-scaccessModes:- ReadWriteOnceresources:requests:storage: 10Mikubectl apply -f vim pv-volume.yaml #創建pod apiVersion: v1 kind: Pod metadata:name: test spec:volumes:- name: pv-volumepersistentVolumeClaim:claimName: pv-volumecontainers:- name: nginximage: nginxports:- containerPort: 80name: "http-server"volumeMounts:- mountPath: "/usr/share/nginx/html"name: pv-volume kubectl apply -f nginx.yaml #修改PVC大小 kubectl edit pv-volume --record

14.輸出日志 5%

Task
監控bar的日志
并將error字段內容輸出到 /opt/KUTR00101/bar

解題思路:

kubectl logs bar |grep error >>/opt/KUTR00101/bar

15.sidecar 13%

Task
在pod big-corp-app中增加一個busybox的sidecar,新的sidecar容器使用以下命令:
/bin/sh -c tail -n+1-f /var/log/big-corp-app.log
掛載一個卷的名字叫logs并確保/var/log/big-corp-app.log文件在sidecar中可達
不要修改已經存在的容器
不要修改日志路徑與文件

解題思路:

#編輯yaml文件 kubectl get pod big-corp-app -o yaml>new.yaml vim new.yaml #找對位置分別添加以下內容:volumeMounts:- name: logsmountPath: /var/log- name: busyboximage: busyboxargs: [/bin/sh, -c, 'tail -n+1 -f /var/log/big-corp-app.log']volumeMounts:- name: logsmountPath: /var/logvolumes:- name: logsemptyDir: {}kubectl delete -f new.yaml kubectl apply -f new.yaml #檢查pod狀態和日志 kubectl exec big-corp-app -c busybox -- tail -f /var/log/big-corp-app.log

16.top 5%

Task
從pod標簽為name=cpu-loader中找到CPU負載最大的pod名稱,并輸出到
/opt/KUTR00401/KUTR00401.txt(該文件已經存在)

解題思路:

kubectl top pod -A -l name=cpu-loader --sort-by='cpu' echo ${pod_name}>>/opt/KUTR00401/KUTR00401.txt

17.kubelet 13%

Task
名為wk8s-node-0的工作節點狀態為NotReady,找到并解決此問題

解題思路:

ssh wk8s-node-0 systemctl status kubelet systemctl start kubelet systemctl enable kubelet exit

18. pod 的滾動更新與回滾

Task
將 deployment 的 image 更新為 v2 版本.
驗證是否更新完成.
回滾到 v1 版本.
解題思路:
題目yaml:

apiVersion: apps/v1 kind: Deployment metadata:name: myapp spec:selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: ikubernetes/myapp:v1resources:limits:memory: "128Mi"cpu: "500m"ports:- containerPort: 80 # 更新鏡像版本 : kubectl set image kubectl set image deployment myapp myapp=ikubernetes/myapp:v2 # 查看更新過程 kubectl rollout status deployment myapp # 版本回滾 kubectl rollout undo deployment myapp

總結

以上是生活随笔為你收集整理的CKA认证考题+解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。