kubernetes-CKA/CKS認證


本文共分為倆部分kubernetes雙證考試感悟和具體報考流程

 一 最近參加了kubernetes的雙證考試認證即CKA、CKS,總體感覺倆點

1 認證目的不是拿證而是學習知識點,單純的考試還是比較好考的 前提是相關的知識點已經掌握。

CKA的知識點包括RBAC授權,節點調度,升級版本,etcd備份與還原,網絡策略,svc應用,ingress應用,pod擴容,pod配置多個容器,pv/pvc使用

,獲取pop日志,增加收集日志容器

2 考試題目都是相同或者相類似的考試期間可以使用--help和官網文檔,考試全是實際上機操作題,感覺CNCF的主旨是想培養使用者的解決問題的能力。

二報考流程

大致流程:

 

 第一步:賬號登錄 CKA+CKS雙證考試資格購買地址: https://training.linuxfoundation.org/certification/certified-kubernetes-securityspecialist 打開會有一個彈窗,點擊繼續英文站點,

 

 

 

第二步:下單交費 

 

 

第三步:預約考試前檢查 

 支付成功后跳轉到儀表盤,如果沒跳轉可直接訪問儀表盤查看我的課程https://portal.linuxfoundation.org/portal 正常情況下會看到CKA和CKS認證課程及有效期,至此購買考試資格已經完成,等確定考試的時候再完成后續操作。 

 

 

第四步:預約考試 完成上述六項打鈎后,點擊Schedule 預約考試: 

 

 

 

 

 第五步:考試環境檢查 環境檢查

 

 

預約完成,等待考試。 如果有事參加不了,要在考試前24小時且工作日內修改時間。 考試系統:https://www.examslocal.com 

 

考前須知

考試形式

 盡量提前10分鍾左右進入倒計時頁面(https://www.examslocal.com 點擊登錄->Or Sign In With->點擊按鈕 My Exams),等待出現進入考試系統的按鈕(考官到位會出現),剛開始考官會讓你出示證件,然后考官會讓你拿攝像頭環繞考試環境一周,確保房間無外人、桌面上沒雜物,然后考官會讓我們在考試系統里打開共享屏幕和攝像頭按鈕;最后考官會告訴我們一些注意事項,比如記事本功能,以及可以查閱哪些網站資料等等。考試過程中如有意外狀況,可以在線與考官交流(文字),並爭取你應有的權益;

 開始需要出示證件,有護照最好,如果沒有可以使用身份證;如果有必要確認你的英文名可以用信用卡給他們看;

 在線考試,考試系統國內訪問速度比較慢,需要一個穩定網絡環境(強烈建議考試時間約在早上,越早越好,因為早上網絡比較穩定,如果你的網絡訪問預約考試系統很慢,建議購買可FQ工具,我是早上6點考的沒有使用梯子網絡也是很好);

 只允許打開兩個標簽頁,一個是考試系統,另一個建議打開官網文檔 https://kubernetes.io/zh/docs/home/,將官網相關參考資料保存好書簽,方便快速查找內容;

 考試全部都是實操任務題,會給出多個 K8s 集群,要求你在指定集群完成指定的操作;

 K8s集群環境采用ubuntu系統,不用擔心,會普通用戶執行sudo -i切root就行了,除了k8s升級版本這題用了apt軟件包管理執行安裝外,其他題操作都一樣

 CKA

1RBAC授權

 Kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulset,daemonset

kubectl create -napp-team1 serviceaccount cicd-token

kubectl create rolebinding cicd-token -napp-team1  --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token

2節點設置不可用

 kubectl drain master-k8s --ignore-daemonsets

3升級版本

apt-get install -y kubeadm=1.20.1-00

kubectl drain master-k8s --ignore-daemonsets

kubectl upgrade plan

kubectl upgrade apply kubeadm=1.20.1-00

apt-get install -y kubectl=1.20.1-00 kubelet=1.20.1-00 --etcd-upgrade=false

systemctl restart kubele

kubectl uncordon master-k8s

kubectl get node

4etcd備份與恢復

ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379  --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-clent.crt --key=/opt/KUIN00601/etcd-clent.key \

snapshot save /data/backup/etcd-snapshot.db

systemctl stop etcd

ps  -ef  |grep etcd

mv /var/lib/etcd/default.etcd /var/lib/etcd/default.etcdback

ETCDCTL_API=3 etcdctl --data-dir /data/backup/etcd-snapshot-previous.db snapshot restore snapshotdb

chown -R etcd:etcd /var/lib/etcd/default.etcd

systemctl start etcd

5 網絡策略

 kubectl lable namepace big-corp name=big-corp

apiVersion: networking.k8s.io/v1

kind: NetworkPolicy

metadata:

  name: allow-port-namespace

  namespace: my-app

spec:

  podSelector: {}

  policyTypes:

  - Ingress

  ingress:

  - from:

    - namespaceSelector:

        matchLabels:

          name: big-corp

    ports:

    - protocol: TCP

      port: 8080

6SVC暴露應用 

 kubectl edit deployment front-end

     ports:

     -  name: http

        protocol: TCP

          containerPort: 80  

kubectl expose deployment front-end --port=80 --target-port=80 --type=NodePort --name=front-end-svc

 7Ingress

 apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: pond

  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擴容Pod數量

kubectl scale deployment loadbalancer --replicas=5

9nodeSelector

apiVersion: v1

kind: Pod

metadata:

  name: nginx-kusc00401

spec:

  containers:

  - name: nginx

    image: nginx

  nodeSelector:

    disk: ssd   

10統計准備就緒節點數量 

kubectl get nodes

kubectl describe node |grep Taint

11Pod配置多容器

 apiVersion: v1

kind: Pod

metadata:

  name: kucc4

spec:

  containers:

  - name: nginx

    image: nginx

  - name: redis

    image: redis

  - name: memcache

    image: memcache

12創建PV

apiVersion: v1

kind: PersistentVolume

metadata:

  name: app-data

spec:

  capacity:

    storage: 2Gi

  accessModes:

    - ReadWriteOnce

  hostPath:

path: "/svc/app-data"

13 Pod使用PVC

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: pv-volume

spec:

  storageClassName: csi-hostpath-sc

  accessModes:

    - ReadWriteOnce

  resources:

    requests:

      storage: 10Mi

---

apiVersion: v1

kind: Pod

metadata:

  name: web-server

spec:

  volumes:

    - name: pv-volume

      persistentVolumeClaim:

        claimName: pv-volume

  containers:

    - name: web-server

      image: nginx

      ports:

        - containerPort: 80

          name: "web-server"

      volumeMounts:

        - mountPath: "/usr/share/nginx/html"

          name: pv-volume

kubectl edit pvc  pv-volume --save-config

 14獲取Pod錯誤日志

 kubectc logs pod bar |grep file-not-found >/opt/KUTR00101/bar

 15Pod增加一個容器(邊車)

 kubectl get pod legacy-app -o yaml >sidecar.yaml

apiVersion: v1

kind: Pod

metadata:

  name: legacy-app

spec:

  containers:

  - name: legacy-app

    image: busybox

    args:

    - /bin/sh

    - -c

    - >

      i=0;

      while true;

      do

        echo "$i: $(date)" >> /var/log/legacy-app.log;

      done      

    volumeMounts:

    - name: varlog

      mountPath: /var/log

  - name: sidecar

    image: busybox

    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log']

    volumeMounts:

    - name: varlog

      mountPath: /var/log

  volumes:

  - name: varlog

    emptyDir: {}

 

16統計使用CPU最高的Pod

kubectl top pod -l name=cup-utilizer --sort-by='cpu' -A

echo "podname" >>/opt/KUR00401.txt

17 節點NotReady處理

kubectl config use-context wk8s

ssh wk8s-node-0

sudo -i

systemctl status kubelet

systemctl start kubelet

systemctl enable kubelet

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM