kubernetes CKA题库(附答案、视频)
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第一題 RBAC授權
問題權重: 4%
設置配置環境:
[student@node-1] $ kubectl config use-context k8s
Context
為部署管道創建一個新的ClusterRole并將其綁定到范圍為特定的namespace 的特定 ServiceAccount .
Task
創建一個名為 deployment-clusterrole 且僅允許創建以下資源類型的新ClusterRole :
Deployment
StatefulSet
DaemonSet
在現有的 namespace app-team1 中創建一個名為 cicd-token 的新ServiceAccount 。
限于 namespace app-team1 , 將新的ClusterRole deployment-clusterrole 綁定到新的 ServiceAccount cicd-token 。
解題
kubectl config use-context k8s kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,daemonsets,statefulsets kubectl create ns app-team1 kubectl create serviceaccount cicd-token -n app-team1 kubectl create rolebinding cicd-token --serviceaccount=app-team1:cicd-token --clusterrole=deployment-clusterrole -n app-team1 #驗證 kubectl --as=system:serviceaccount:app-team1:cicd-token get pods -n app-team1https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第二題 節點設置不可用
設置配置環境:
[studentinode-1] $ kubectl config use-context ek8s
問題權重: 4%
Task
將名カek8s-node.1 的node沒置カ不可用,并重新凋度該node上所有運行的pods
解題
kubectl config use-context ek8skubectl drain k8s21-worker01 --ignore-daemonsets注:如果執行drain提示錯誤,根據提示再加上選項,例如–delete-local-data–force
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第三題 升級K8s版本
問題權重: 7%
設置配置環境:
[student@node-1] $ kubectl config use- context mk8s
Task
現有的Kubernetes集群正在運行版本1.20.0。僅將主節點上的所
有Kubernetes控制平面和節點組件升級到版本1.20.1。
確保在升級之前drain主節點,并在升級后uncordon主節點。
可使用以下命令通過ssh 連接到主節點:
[student@node-1] $| ssh mk8s-master-0
可使用以下命令在該主節點上獲取更高權限:
[student@mk8s-master-0] $ sudo -i
另外,在主節點升級kubelet和kubectl。
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第四題 etcd備份與恢復
問題權重: 7%
此項目無需更改配置環境。但是,在執行此項目之前,請確保您已返回初始點:
[student@nk85- master-0] $ exit
Task
首先,為運行在https://127.0.0.1:2379上的現有etcd 實例創建快照并將快照保存到/data/backup/etcd-snapshot.db
為給定實例創建快照預計能在幾秒鐘內完成。如果該操i作似乎掛起,則命令可能有問題。用CTRL+C 來取消
操作,然后重試。
然后還原位于/data/backup/etcd-snapshot-previous.db的現有先前快照。
提供了以下TLS證書和密鑰,以通過etcdctl連接到服務
CA證書: /opt/KUIN00601/ca.crt
客戶端證書: /opt/KUIN00601/etcd-client.crt
客戶端密鑰: /opt/KUIN00601/etcd-client.key
答題:
# 備份 ETCDCTL_API=3 etcdctl snapshot save /data/backup/etcd-snap.db --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key --endpoints=https://127.0.0.1:2379 # 恢復 systemctl stop etcd systemctl cat etcd # 確認下數據目錄(--data-dir 值) mv /var/lib/etcd /var/lib/etcd.bak ETCDCTL_API=3 etcdctl snapshot restore /data/backup/etcd-snapshot-previous.db -- data-dir=/var/lib/etcd chown -R etcd:etcd /var/lib/etcd systemctl start etcdhttps://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第五題 網絡策略
問題權重: 7%
設置配置環境:
[studentinode-1] $ kubectl config use-context hk8s
Task
在現有的namespace my-app中創建一個名為allow-port-from-namespace 的新NetworkPolicy 。
確保新的NetworkPolicy 允許namespace my-app 中的Pods來連 接到namespace big-corp 中的端口8080 。
進一步確保新的 NetworkPolicy : 不允許對沒有在監聽端口8080的Pods的訪問 不允午不來自namespace my-app中的Pods的訪問
解題:
kubectl config use-context hk8s #給命名空間打標簽: kubectl label namespace big-corp name=big-corpapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:name: allow-port-from-namespacenamespace: my-app spec:podSelector: {} policyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:name: big-corpports:- protocol: TCPport: 8080參考文檔:https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第六題 SVC 暴露應用
問題權重: 7%
設置配置環境:
[student@node-1] $| kubectl config use- context k8s
Task
請重新配置現有的部署front-end以及添加名為http的端口規范來公開現有容器nginx 的端口80/tcp。
創建一個名為front-end-svc的新服務,以公開容器端口http。
配置此服務,以通過在排定的節點上的NodePort來公開各個Pods
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第七題:Ingress
問題權重: 7%
設置配置環境:
[student@mnode-1] $ kubectl config use-context k8s
Task
如下創建一個新的nginx Ingress 資源:
名稱: pong
Namespace: ing-internal使用服務端口5678 在路徑/hello. 上公開服務hello
可以使用以下命令檢查服務hello 的可用性,該命令應返回hello :
[student@node-1] $| curl -kL <INTERNAL_ IP>/hello
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第八題 擴容 Pod 數量
問題權重: 4%
設置配置環境:
[student@node-1] $ kubeotl corfig use- context k8s
Task
將deployment 從loadbalancer 擴展至 5 pods
解題:
#以下考試不需要操作 kubectl create deployment loadbalancer --image=nginx --replicas=1 #以下考試操作 kubectl config use-context k8s kubectl scale deployment loadbalancer --replicas=5本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第九題 nodeSelector
問題權重: 4%
設置配置環境:
[student@node-1] $ kubectl config use-context k8s
Task
按如下要求調度一個 cod:
名稱: nginx-kusc00401
Image: nginx
Node selector: disk=ssd
解題:
# 以下考試無需要操作 kubectl label node k8s21-worker02 disk=ssd # 以下考試操作 kubectl config use-context k8scat 9.yaml apiVersion: v1 kind: Pod metadata:name: nginx-kusc00401 spec:containers:- name: nginximage: nginxnodeSelector:disk: ssd kubectl apply -f 9.yamlhttps://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十題統計準備就緒節點數量
問題權重: 4%
設置配置環境:
[student@node-1] $ kubectl config use-context k8s
Task
檢查有多少worker nodes已準備就緒(不包括被打上Taint:
NoSchedule的節點),并將數量寫入
/opt/KUSC00402/kusc00402.txt
解題:
kubectl config use-context k8s kubectl describe nodes $(kubectl get nodes | grep Ready| awk '{print $1}') | grep Tain | grep -vc NoSchedule > /opt/KUSC00402/kusc00402.txt本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十一題 Pod 配置多容器
問題權重: 4%
設置配置環境:
[student@node-1] $ kubectl config use-context k8s
Task
創建一個名為kucc4 的pod, 在pod里面分別為以下每個images單獨運行一個app container (可能會有1-4個images) :
nginx + redis + memcached
解題:
kubectl config use-context k8s cat 11.yaml kind: Pod apiVersion: v1 metadata:name: kubcc4 spec:containers:- name: nginximage: nginx- name: redisimage: redis- name: memcachedimage: memcachedkubectl apply -f 11.yaml本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十二題 創建 PV
問題權重: 4%
設置配置環境:
[student@node-1] $| kubectl config use-context hk8s
Task
創建名為app-data 的persistent volume,容量為2Gi,訪問模式為ReadWriteOnce 。volume 類型為hostPath, 位于/srv/app-data
答題:
kubectl config use-context hk8s cat 12.yaml apiVersion: v1 kind: PersistentVolume metadata:name: app-data spec:capacity:storage: 2GiaccessModes:- ReadWriteOncehostPath:path: "/srv/app-data"kubectl apply -f 12.yamlhttps://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十三題 Pod 使用 PVC
問題權重: 7%
設置配置環境:
[student@node-1] $ kubectl config use- context ok8s
Task
創建一個新的PersistentVolumeClaim ;
名稱: pv-volume
Class: csi-hostpath-sc
容量: 10Mi
創建一個新的Pod, 此Pod將作為volume掛載到
PersistentVolumeClaim :
名稱: web-server
Image: nginx
掛載路徑: /usr/share/nginx/html
配置新的pod,以對volume具有ReadWriteOnce權限。
最后,使用kubectl edit 或kubectl patch將PersistentVolumeClaim的容量擴展為70Mi,并記錄此更改。
kubectl config use- context ok8s # cat 12.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: pv-volume spec:storageClassName: nfs-serveraccessModes:- ReadWriteOnceresources:requests:storage: 10Mi --- apiVersion: v1 kind: Pod metadata:name: web-server spec:volumes:- name: task-pv-storagepersistentVolumeClaim:claimName: pv-volumecontainers:- name: web-serverimage: nginxports:- containerPort: 80name: "http-server"volumeMounts:- mountPath: "/usr/share/nginx/html"name: task-pv-storage kubectl apply -f 12.yaml # 擴容 PVC 容量 kubectl edit pvc pv-volume --save-confighttps://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十四題 獲取 Pod 錯誤日志
問題權重: 5%
設置配置環境:
[student@node-1] $ kubectl config use-context k8s
Task
監控pod bar的日志并:
提取與錯誤file-not-found 相對應的日志行
將這些日志行寫入/opt/KUTR00101/bar
https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十五題 給 Pod 增加一個容器(邊車)
問題權重: 7%
設置配置環境:
[studentnode-1] $ kubectl config use- context k8s
Context
將一個現有的Pod集成到Kubernetes的內置日志記錄體系結構中(例如kubectl logs) 。添加streaning sidecar容器是實現此要求的一種好方法。
Task
使用busybox Image來將名為sidecar的sidecar容器添加到現有的Pod legacy-app 中。新的sidecar容器必須運行以下命令:
/bin/sh -c tail -n+1 -f /var/1og/legacy-app . log
使用安裝在/var/log的Volume,使日志文件legacy-app.log可用于sidecar容器。
除了添加所需的volume mount以外,請勿更改現有容器的規格。
https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/
本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十六題 統計使用 CPU 最高的 Pod
問題權重: 5%
設置配置環境:
[student@node-1] $ kubectl config use- context k8s
Task
通過pod label name=cpu-utilizer,找到運行時占用大量CPU的
pod,并將占用CPU最高的pod名稱寫入文件
/opt/KUTR00401/KUTR00401.txt (已存在)
答題:
kubectl config use-context k8s kubectl top pod -l name=cpu-utilizer --sort-by="cpu" –A # 然后將第一個 Pod 名稱寫到文件 echo "<podname>" > /opt/KUR00401.txt本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
第十七題 節點 NotReady 處理
問題權重: 13%
設置配置環境:
[student@node-1] $ kubectl config use-context wk8s
Task
名為wk8s-node-0 的Kubernetes worker node處于NotReady狀態。調查發生這種情況的原因,并采取相應措施將node恢復為Ready 狀態,確保所做的任何更改永久有效。
注意:
可使用以下命令通過ssh 連接到故障node: [student@node-1] $ ssh wk8s-node-0 可使用以下命令在該node上獲取更高權限: [student@w8ks-node-0] $ sudo -i答題:
kubectl config use-context wk8s kubectl get node ssh wk8s-node-0 sudo -i systemctl status kubelet systemctl start kubelet systemctl enable kubelet本博客相關視頻鏈接: https://www.ixigua.com/7080166741921235492?id=7151713414783042085
總結
以上是生活随笔為你收集整理的kubernetes CKA题库(附答案、视频)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 祝酷狗猴年快乐,网易云称其耍猴
- 下一篇: 南海云课堂春季11(T)K1 拓展:单调