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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CKA考试心得

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

考前須知:

1、一共16題,100分66分及格,考試有兩次機會

考試準備:

1、護照或或者包含英文名字證件

2、要選擇工作日的早上或者晚上考試,千萬不要選擇周末去考,否則卡到懷疑人生,影響考試結果

3、提前1小時等待考試,關閉VM,webex、teams等服務就花了30分鐘。

題目:

1、RBAC 4%

題目:

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

Task?

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

Deployment

Statefulset

Damonset

在現有的namespace app-team1中創建一 個名為cicd-token的新serviceaccount

限于namespace app-team1, 將新的Clusterrole? deployment-clusterrole綁定到新的serviceaccount cicd-token

?答題:

創建clusterrole

kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,damemonsets

創建sa

kubectl? -n app-team1 create? serviceaccount cicd-token

創建rolebinding?? 【如果題目中沒有指定名稱空間,則創建的是 cluster-rolebonding,如果有namespace 則創建的是 rolebonding】

kubectl? -n? app-team1 create rolebinding? cicd-token-binding? --clusterrole=deployment-clusterrole? --serviceaccount=app-team1: cicd-token

檢查:

$ kubectl auth can-i create deployment -n app-team1--as=system:serviceaccount: app-team1: cicd-token

YES

2、驅逐節點

將名為k8s-node-t 的節點設置為不可用,且重新調度到其他運行的所有pod

答題:

Kubectl?? drain? slave1? --delete-emptydir-data ?--igon

ore-daemonsets? --force

3、集群升級

現有的kubenets集群正在運行版本為1.18.8僅將主節點上的所有kubenets控制平臺和節點組件升級版本至1.19.0

另外在主節點上升級kubectl的kubelet

確認在升級之前drain主節點,且在升級后uncorder主節點,請不要升級工作節點,etcd,constainer控制器,CNI組件,DNS服務或者其他任何組件

答題:

1、登陸root的 master

2、source <{}kubectl complction bash>? \\這個考試環境不需要執行

3、kubectl drain master-1 --ingore-damensets?? 這個考試環境不需要--delete-emptydir-data ?

4、apt-cache? show kubeadm | grep 1.19.0

5、apt-get install kubeadm=1.19.0-00

6、kubeadm? version???

7、kubeadm upgrade apply 1.19.0? --etcd-upgrade=false??? 并選擇y

8、apt-get install? kubelet=1.19.0-00???????????? &&? kubelet --version

9、kubectl? get nodes? 發現master 不可調度??? &&?? kubectl? uncordcn? master-1

4、ETCD備份還原

首先,為運行在http://127.0.0.1:2379上的etcd實例創建快照,并保存到指定路徑? /var/lib/backup/etcd-snapshot.db

然后還原于 /var/www/etcd/xxxx.db

服務提供了以下TLS證書和秘鑰,以通過etcdctl鏈接到服務器

CA證書: 客戶端證書;? 客戶端秘鑰

答案??//考試環境在node1上執行 不需要切換環境

1、指定etcdctl版本為v3????? export ETCDCTL_API=3

2、備份命令:etcdctl? --endpoints=https://127.0.0.1:2379? --cacert="/opt/Kuxxxx/ca.crt"? --cert="/opt/Kuxxxx/server.crt" --key="/opt/Kuxxxx/server.key" snapshot? save?? /var/lib/backup/etcd-snapshot.db

檢查命令: etcdctl? --endpoints=https://127.0.0.1:2379? --cacert="/opt/Kuxxxx/ca.crt"? --cert="/opt/Kuxxxx/server.crt" --key="/opt/Kuxxxx/server.key" stapshot? status? /var/lib/backup/etcd-snapshot.db -wtable

3、還原?? etcdctl? snapshot restore? /var/lib/backup/etcd-snapshot.db cacert="/opt/Kuxxxx/ca.crt"? --cert="/opt/Kuxxxx/server.crt" --key="/opt/Kuxxxx/server.key" stapshot?

檢查命令:? etcdctl? snapshot? status? /var/lib/backup/etcd-snapshot.db -wtable

5、網絡策略

在已有的namespace forbar中創建一個名為allow-port? from namespace的新Network policy ,以允許namespace corp-bar訪問其端口9200

不同namespace的情況下:

//需要給namespace? corp-bar打標 ??project: corp-bar

kubectl label namespace? corp-bar project:corpbar

Vim? 5.yml

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
? name: allow-port? from namespace
? namespace: forbar
spec:
? podSelector:
??? {}

? policyTypes:
??? - Ingress
? ingress:
??? - from:
??????? - namespaceSelector:
??????????? matchLabels:
????????????? project: corp-bar

?????? ports:
???????? - protocol: TCP
?????????? port: 9200

相同namespace的情況下:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
? name: allow-port? from namespace
? namespace: forbar
spec:
? podSelector:{}

? policyTypes:
??? - Ingress
? ingress:
??? - from:

??????? - podSelector: {}?????

?????? ports:
???????? - protocol: TCP
?????????? port: 9200

Kubectl apply -f? 5.yml

6、SVC

重新配置現有的deployment frond-end? 并添加名為http的端口規范,以暴露現有容器nginx的端口80/TCP

創建一個名為plant-end-svc的新服務,以暴露容器端口HTTP

配置新服務以通過調度它們的節點上的Node? port暴露各個pod

解答:

1、kubectl? get deployment.apps

2、kubectl? edit deployment.apps

在name: nginx下增加

????????? ports:

- containerPort: 80

? name:? http

3、創建svc?

Kubectl? create? svc? nodeport? front-end-svc --tcp=80:80

修改標簽??? 與deployment的pod標簽一致

查看標簽: kubectl? get? svc front-end-svc? --show-labels

修改app: front-end

//必須要改 否則不通,需要登陸到 master節點 去 curl? svc的ip地址 ?為 nginx就可以了

kubectl? edit? svc front-end-svc?

修改app: front-end-svc? 為app: front-end

7、ingress

創建一個名為nginx的ingress并遵守以下規則:

Name? pong

Namespace? ing-internal

Exposing service hello on? path/test 使用端口5678

驗證: curl -Kl?? <INTERNAL_IP>/hello

//這個需要把要把原有的service 從 nodeport改成clusterip

?Kubectl? edit? service hello 修改 ?type nodeport改成clusterip

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
? name: pong

? namespace:? ?ing-internal

? annotations:
??? nginx.ingress.kubernetes.io/rewrite-target: /
spec:
? rules:
? - http:
????? paths:
????? - path: /hello
??????? pathType: Prefix
??????? backend:
????????? service:
??????????? name: hello
??????????? port:
????????????? number: 5678

8、擴容

將deployment?? web-server擴容到4個

Kubectl? get? delolyments.apss

Kubectl scale? deployment web-server? --replicas=4

9、通過node標簽調度pod

按以下規則調度pod:

Name? nginx.kusc004001

Image? nginx

Node? selector : disk ssd

解答:

1、kubectl? get nodes? --show-labels

2、kubectl run? nginx.kusc004001 --image=nginx --dry-run=client -oyaml > 9.yaml

3、編輯yaml文件,在resource下 添加

nodeSelector:?

???? disk: ssd

10、節點數量

檢查并查看有多少節點準備就緒(不包括不可調度的節點)并將其寫入/opt/1.txt

Kubectl describe? node|grep? Taint?

None 有2個

echo 2 > /opt/1.txt

11、創建多容器

創建一個名為kucc3的pod,并且使用以下鏡像(可能包含了1到4個鏡像)

Nginx+redis+memached+coocsal

解答:

kubectl run? nginx.kusc004001kucc3 --image=nginx --dry-run=client -oyaml > 11.yaml

增加另外三個image

12、PV

創建一個名為app.config的pv、1G大小、權限為ReadOnlyMany使用hostpath類型掛載到本地位置priveage-config

apiVersion: v1
kind: PersistentVolume
metadata:
? name: app.config
? labels:
??? type: local
spec:
??? capacity:
??? storage: 1Gi
? accessModes:
??? - ReadWriteOnce
? hostPath:
??? path: "/mnt/data"

13、PVC

創建一個pvc滿足以下要求:

name: pv-volume

class: cni-hostpath-vc

Cagcity:?? 10Mi

創建一個pod并掛載pvc

name: test

image: nginx

Mount path? /usr/share/nginx/

編輯pod volume權限為readonlyOnce

最后,使用kubectl? edit或者kubectl patch將pvc大小改為70Mi

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
? name: pv-volume


spec:
? storageClassName: ?cni-hostpath-vc
? accessModes:
??? - ReadWriteOnce
? resources:
??? requests:
????? storage: 10Mi

apiVersion: v1
kind: Pod
metadata:
? name: test
spec:
? volumes:
??? - name: pv-volume
????? persistentVolumeClaim:
??????? claimName: pv-volume
? containers:
??? - name: nginx
????? image: nginx
????? ports:
??????? - containerPort: 80
????????? name: "http-server"
????? volumeMounts:
??????? - mountPath: "/usr/share/nginx/html"
????????? name: pv-volume

14、輸出日志

監控pod的日志

并將error字段的日志輸出到/var/log/1.txt

Kubectl run bar --image=nginx

Kubectl? logs?? bar?? |grep ‘題目的關鍵字’ > /var/log/1,txt

15、sidecar

在pod? big-corp-app中增加一個busybox的sitecar。新的sidecar容器使用以下命令:

/bin/sh < tailf? -n+1 /var/log/app.log

掛載一個logs卷并確保 /var/log/app.log文件在 sidecar中可達

不要修改已經存在的容器

不要修改日志路徑與文件

解答:

1、kubectl? get pod? big-corp-app -oyaml > 15.yaml

2、在15.yaml中編輯

??? volumeMounts:下面增加

??? - name: logs
????? mountPath: /var/log

? - name: busybox

??? image: busybox:1.28
??? args: [/bin/sh, -c, 'tail -n+1 -F /var/log/app.log']
??? volumeMounts:
??? - name: logs

????? mountPath: /var/log

? volumes:增加

? - name: logs
??? emptyDir: {}

16 top

從pod標簽為name-cpu-loader中找到CPU負載最大的pod名稱,并輸出到 log、中

解答:

Kubectl? top? pod? -A? -l? app=fannel? --sort-by='cpu'

echo? 'cpu使用最大的pod的名字'? > log

17 kubelet

名為k8s-node-C的工作節點狀態為Notready,找到并解決問題

解答:

Ssh?? k8s-node-C節點上

Systemctl? start kubelet

Systemctl? enable kubelet

總結

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

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