CKA-Mock 試験問題 & テスト スクリプト (2022 年 12 月 1 日)

本当の質問:

本当の質問リンク

シミュレーション システム効果:

試験の注意事項:

  • 1. yaml ファイルの名前は、トラブルシューティングに便利な、対応する質問に対応する 01.yaml、02.yaml などにすることができます。yaml ファイルのインデントにはスペースを使用する必要があります
  • 2. Vim が yaml ファイルを編集します. 公式 Web サイトから yaml を貼り付ける場合は、次のように設定する必要があります: set paste
  • 3. コピーできる場合は、トピックをコピーします。
  • 4. ノード node でテスト環境が実行されます. 不十分な権限が発生した場合は、sudo を追加します.

模擬テスト スクリプトの説明: 

  • 自分で k8s クラスターを構築する必要があり、すべてのノードでこのスクリプトを実行する準備ができています。1 マスター + 2 ノードで十分です。(私自身は 3+2 です)
  • Exam-CKA ディレクトリに入り、exam-k8s.sh を実行して、1. テスト問題のロード、2. 真偽のチェック、3. テスト問題のリセットを選択します。
  • スクリプトは現時点で 13 の質問しか実行できず、次の 14 の kubadm -17 へのアップグレードは、各人のバージョンや環境をシミュレートできないため、自分でしか実行できません。
  • テスト問題がリセットされるたびに、exam-CKA ディレクトリで rm -f *.yaml を実行します。
  • 各ノード node がテスト問題をロードする準備ができていること、および作業ノードの名前が node01 と node02 であることを確認してください。そうしないと、複数の問題が誤って判断されます。ノードのホスト名が異なる場合は、このコマンド kubectl label nodes <node host name> disk=ssd を実行できます

 模擬試験問題:

[root@master01 ~]# mkdir -p exam-CKA/yaml && cd exam-CKA
[root@master01 exam-CKA]# vim yaml/bar.yaml

apiVersion: v1
kind: Pod
metadata:
  name: bar
  namespace: k8s
  labels:
    name: bar-log
spec:
  containers:
  - name: bar-log
    image: nginx:1.14.2
    ports:
    - containerPort: 8888
    resources:
      requests:
        cpu: 50m
      limits:
        cpu: 100m
    command: ["/bin/sh","-c","while true;do echo file-not-foundtest;sleep 10000;done"]

[root@master01 exam-CKA]# vim yaml/csi.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-hostpath-sc
provisioner: hostpath.csi.k8s.io
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true

[root@master01 exam-CKA]# vim yaml/loadbalance.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadbalancer
  namespace: k8s
  labels:
    name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      name: nginx
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 88

[root@master01 exam-CKA]# vim yaml/cpu-utillizer.yaml

apiVersion: v1
kind: Pod
metadata:
  name: qq
  namespace: k8s
  labels:
    name: cpu-utilizer
spec:
  containers:
  - name: cpu-utilizer
    image: nginx:1.14.2
    ports:
    - containerPort: 8081
    resources:
      requests:
        cpu: 50m
      limits:
        cpu: 100m
    command: ["/bin/bash"]    
    args:
    - -c 
    - |
      while :
      do
      echo "are you ok"
      sleep 0.2
      done 

[root@master01 exam-CKA]# vim yaml/front-end.yaml 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: front-end
  namespace: k8s
  labels:
    name: front-end
spec:
  replicas: 1
  selector:
    matchLabels:
      name: front-end
  template:
    metadata:
      labels:
        name: front-end
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2

[root@master01 exam-CKA]# vim yaml/sidecar.yaml

apiVersion: v1
kind: Pod
metadata:
  name: legacy-app
  namespace: k8s
spec:
  containers:
  - name: legacy-app
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/legacy-app.log;
        i=$((i+1));
        sleep 1;
      done     



Exam.k8s.sh スクリプトを作成する

[root@master01 exam-CKA]# vim exam-k8s.sh 
[root@master01 exam-CKA]# chmod +x exam-k8s.sh
#!/bin/bash
function check() {
#-------------------------------第一题
kubectl describe clusterrole deployment-clusterrole |grep daemonsets &>/dev/null && kubectl describe clusterrole deployment-clusterrole |grep deployments &>/dev/null && kubectl describe clusterrole deployment-clusterrole |grep statefulsets &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第一题:deployment-clusterrole 正确\033[0m"
else
        echo -e "\033[31m第一题:deployment-clusterrole 错误\033[0m"
fi
kubectl describe serviceaccount cicd-token -n app-team1 |grep cicd-token &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第一题:app-team1 正确\033[0m"
else
        echo -e "\033[31m第一题:app-team1 错误\033[0m"
fi

kubectl describe rolebinding -n app-team1| grep cicd-token &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第一题:deployment-rolebinding 正确\033[0m"
else
        echo -e "\033[31m第一题:deployment-rolebinding 错误\033[0m"
fi
#-----------------第二题
if [ `cat /opt/KUTR00401/KUTR00401.txt` == qq ]
then
        echo -e "\033[32m第二题top 正确\033[0m"
else
        echo -e "\033[31m第二题top 错误\033[0m"
fi
#-----------------第三题
kubectl describe networkpolicies -nmy-app|grep "Namespace:    my-app" &>/dev/null && kubectl describe networkpolicies -nmy-app|grep 8080/TCP &>/dev/null && kubectl describe networkpolicies -nmy-app|grep "NamespaceSelector: name=big-corp" &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第三题networkpolicies 正确\033[0m"
else
        echo -e "\033[31m第三题networkpolicies 错误\033[0m"
fi
#-----------------第四题
kubectl get svc front-end-svc -owide -n k8s| grep 80 &>/dev/null && kubectl get svc front-end-svc -owide -n k8s| grep NodePort &>/dev/null && kubectl get svc front-end-svc -owide -n k8s| grep front-end-svc &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第四题front-end 正确\033[0m"
else
        echo -e "\033[31m第四题front-end 错误\033[0m"
fi
#-----------------第五题
kubectl describe ingress -n ing-internal |grep pong &>/dev/null && kubectl describe ingress -n ing-internal |grep hello:5678 &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第五题ingress 正确\033[0m"
else
        echo -e "\033[31m第五题ingress 错误\033[0m"
fi
#-----------------第六题
kubectl get deployment -n k8s | grep 5/5 &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第六题scale数量 正确\033[0m"
else
        echo -e "\033[31m第六题scale数量 错误\033[0m"
fi
#-----------------第七题
kubectl get pods nginx-kusc00401 -owide -n k8s | grep Running &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第七题Node selector 正确\033[0m"
else
        echo -e "\033[31m第七题Node selector 错误\033[0m"
fi
#-----------------第八题
ba1=`kubectl describe node | grep Taints | grep -I NoSchedule | wc -l `
ba2=`kubectl get node | grep -wc  Ready`
ba=$(( ba2 - ba1 ))
if [ `cat /opt/KUSC00402/kusc00402.txt` == $ba ]
then
        echo -e "\033[32m第八题woker 正确,正确数量:$ba \033[0m"
else
        echo -e "\033[31m第八题woker 错误,正确数量:$ba \033[0m"
fi
#-----------------第九题
kubectl get  pod kucc4 -n k8s| grep 3/3 &>/dev/null && kubectl get  pod kucc4 -n k8s| grep Running &>/dev/null && kubectl get  pod kucc4 -n k8s| grep 3/3 &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第九题3个images启动 正确\033[0m"
else
        echo -e "\033[31m第九题3个images启动 错误\033[0m"
fi
#-----------------第十题
kubectl get  pv |grep app-data &>/dev/null && kubectl get  pv |grep 2Gi &>/dev/null && kubectl get  pv |grep Available &>/dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第十题pv 正确\033[0m"
else
        echo -e "\033[31m第十题pv 错误\033[0m"
fi
#-----------------第十一题
kubectl get pvc -n ok8s| grep csi-hostpath-sc &> /dev/null && kubectl get pvc -n ok8s| grep pv-volume &> /dev/null
if [ $? == 0 ]
then
        echo -e "\033[32m第十一题pvc 正确\033[0m"
else
        echo -e "\033[31m第十一题pvc 错误\033[0m"
fi
#-----------------第十二题
grep file-not-foundtest /opt/KUTR00101/bar &> /dev/null
if [ $? == 0  ]
then
        echo -e "\033[32m第十二题log 正确\033[0m"
else
        echo -e "\033[31m第十二题log 错误\033[0m"
fi
#-----------------第十三题
kubectl get pod legacy-app -oyaml -n k8s| grep "tail -n+1 -F /var/log/legacy-app.log" &> /dev/null && kubectl get pods legacy-app -n k8s| grep 2/2 &> /dev/null && kubectl get pods legacy-app -n k8s| grep Running &> /dev/null
if [ $? == 0  ]
then
        echo -e "\033[32m第十三题sidecar 正确\033[0m"
else
        echo -e "\033[31m第十三题sidecar 错误\033[0m"
fi
}
function frist() {
kubectl create namespace k8s
kubectl create namespace app-team1
kubectl create namespace ing-internal
kubectl create namespace my-app
kubectl create namespace big-corp
kubectl create namespace hk8s
kubectl create namespace ok8s
kubectl config set-context hk8s --namespace=hk8s --cluster=kubernetes --user=kubernetes-admin
kubectl config set-context k8s --namespace=k8s --cluster=kubernetes --user=kubernetes-admin
kubectl config set-context ok8s --namespace=ok8s --cluster=kubernetes --user=kubernetes-admin
kubectl label nodes node01 disk=ssd
mkdir /opt/KUSC00402 && touch mkdir /opt/KUSC00402/KUTR00401.txt
mkdir /opt/KUTR00401 && touch /opt/KUTR00401/KUTR00401.txt
mkdir /opt/KUTR00101 && touch /opt/KUTR00101/bar
kubectl apply -f ./yaml/front-end.yaml
kubectl apply -f ./yaml/loadbalance.yaml
kubectl apply -f ./yaml/bar.yaml
kubectl apply -f ./yaml/cpu-utillizer.yaml
kubectl apply -f yaml/sidecar.yaml
}
function rset() {
>/opt/KUTR00401/KUTR00401.txt
>/opt/KUSC00402/kusc00402.txt
>/opt/KUTR00101/bar
kubectl delete -f ./yaml/sidecar.yaml
kubectl delete pod bar -n k8s
kubectl delete clusterrole deployment-clusterrole
kubectl delete rolebinding deployment-rolebinding -n app-team1
kubectl delete -f ./yaml/cpu-utillizer.yaml 
kubectl delete -f ./yaml/loadbalance.yaml
kubectl delete networkpolicy allow-port-from-namespace -n my-app
kubectl delete deployment front-end
kubectl delete svc front-end-svc -n k8s
kubectl delete  pods nginx-kusc00401
kubectl delete  pods kucc4
kubectl delete  pv app-data
kubectl label nodes node01 disk-
kubectl delete namespace ok8s
kubectl delete namespace my-app
kubectl delete namespace big-corp
kubectl delete namespace ing-internal
kubectl delete namespace app-team1
kubectl delete namespace hk8s
kubectl delete namespace k8s
kubectl config use-context kubernetes-admin@kubernetes
}
#---------------------功能-----------------------------------------------
while :
do
read -p "CKA模拟系统,请输入:1.开始加载试题,2.检测试题,3.重设考题,0.退出 :" ch
case $ch in
1)
frist
echo ok!
echo 模拟考试开始!
exit
;;
3)
rset
echo ok!!!
;;
2)
check
;;
0)
echo 88~~
exit
;;
*)
esac
done

 スクリプト パッケージ リンク

圧縮されたパッケージは tar パッケージであり、K8s クラスターに送信され、コマンドが実行されます: tar -xf Exam-CKA.tar.gz

スクリプト リンク

おすすめ

転載: blog.csdn.net/weixin_72758284/article/details/128191581