成功最有效的方法就是向有经验的人学习!

2020年12月11日最新CKA认证试题通关秘籍

写在前面


这就是证书的样子了。

准备考试

在这里我想说的是中文网报名还是很香的,不用非得上英文,因为最终考试是一样的,考官那是那一批人。
最重要的是中文网相对折扣大,我只花了1252元就考了,香不。

另外不用纠结名字怎么填,与证件一致就OK,用身份证也是可以的,有人说用拼音高大上一点,我看未必,相反我觉得用拼音还不如用中文,现在中国的月亮也很圆,有些朋友可能还不知道,2020年上半年联合国已将中文列入全球通用语言。哈哈。不过用中文可能会乱码这是真的,但是不影响考试,拿到证后,可以联系客服改一下名字就OK,这都不是什么大事。

提前准备一间房间出来,墙上不要有字画相关,周围不要有字,提前盖一下。省得麻烦。
桌子上全部清空,除了电脑,还有桌下。可以放一个无字水杯,考试中途可以上一次厕所。

网络保证通顺,谷歌浏览器有时候可能无法共享桌面,这个要注意,我是遇到了,当时以为凉了,结果考官给了一个。
请注意考试中你所占用的时候是你的考试时间,不要试图问考官无关问题,他也不会回你。
考试余下时间在左上角有个进度条
进去直接和考官说中文,你是花了钱的。
另外最好使用命令补全,节省时间,如果你和我一样打字快,就无视吧。
默认进入的是node-1机器,这个机器上可以直接使用kubectl操作集群,只有需要操作master主机的文件时,才ssh过去,记得exit ,不支持再次ssh
另外需要输入密码请按ctrl+c 执行sudo -i提权
考试时不要出声,不要出现别的人,头不能乱看乱动

基本就这些

file

第一题

file

kubectl config use-context k8s
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,daemonsets.statefulsets
kubectl create serviceaccount cicd-token -n app-team1
kubectl create rolebinding read-secrets-global --serviceaccount=app-team1:cicd-token --clusterrole=deployment-clusterrole -n app-team1
#https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/

第二题

file

kubectl config use-context ek8s
kubectl cordon ek8s-node-1
kubectl drain ek8s-node-1 --ignore-daemonsets
#如果不能驱逐pod根据提示是否添加后面两个选项,反正我是没加可以正常执行  --delete-local-data  --force
#https://kubernetes.io/zh/docs/concepts/architecture/nodes/
#https://kubernetes.io/zh/docs/tasks/administer-cluster/safely-drain-node/

第三题

file

  1. 设置mk8s-master-1不可调度并驱逐POD
  2. 升级mk8s集群的master节点mk8s-master-1,不升级work节点
  3. 升级master时, etcd,coredns,CNI plugin,container manager及其他组件不做升级
kubectl config use-context mk8s
kubectl get node
kubectl cordon mk8s-master-1
kubectl drain mk8s-master-1 --ignore-daemonsets
#这两个选项根据需要添加,我考试没有加 --delete-local-data  --force
ssh mk8s-master-1  # 记得一定要在master主机上去操作
sudo -i
apt install kubeadm=1.19.0-00 -y
kubeadm version (检查kubeadm版本)
kubeadm upgrade plan
kubeadm upgrade apply v1.19.0 --etcd-upgrade=false  # 这一项很关键,不然没分
apt install kubelet=1.19.0-00 kubectl=1.19.0-00 -y
systemctl restart kubelet
exit
exit  (如果使用sudo -i,这里一定要退出两次)
kubectl get node (确认只升级了master节点到1.19.0版本)
#https://kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

第四题

file
file

ETCDCTL_API=3 etcdctl snapshot save snap.db --endpoints=https://127.0.0.1:2379 --cacert=/opt/KUIN00601/ca.crt --cert=/opt/KUIN00601/etcd-client.crt --key=/opt/KUIN00601/etcd-client.key
ETCDCTL_API=3 etcdctl snapshot restore /var/lib/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd
#https://kubernetes.io/zh/docs/tasks/administer-cluster/configure-upgrade-etcd/

第五题

file

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace
  namespace: internal
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: internal
    - podSelector: {}
    ports:
    - protocol: TCP
      port: 8080
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace
  namespace: bigcotp
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: internal
    ports:
    - protocol: TCP
      port: 8080
kubectl config use-context hk8s
vi netwokpolicy.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f netwokpolicy.yaml
#https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/

第六题

file

kubectl edit deployment front-end
#在image同级添加以下代码
...
您暂时无权查看此隐藏内容!
kubectl config use-context k8s kubectl expose deployment front-end --port=80 --target-port=80 --protocol=TCP --type=NodePort --name=front-end-svc #https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/expose/expose-intro/ #https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/expose/expose-interactive/

第七题

file

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ping
  namespace: ing-internal
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /hello  # 我考试时这里是hello
        pathType: Prefix
        backend:
          service:
            name: hello
            port:
              number: 5678
kubectl config use-context k8s
vi ping-ingress.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f ping-ingress.yaml
#验证
kubectl get ingress -n ing-internal   # 获取ingress的IP地址
curl -kL $(获取ingress的IP地址)/hi
#返回 hi 即为成功
#https://kubernetes.io/zh/docs/concepts/services-networking/ingress/

第八题

file

kubectl config use-context k8s
kubectl scale deployment webserver --replicas=6
#https://kubernetes.io/zh/docs/concepts/workloads/controllers/deployment/

第九题

file

apiVersion: v1
kind: Pod
metadata:
  name: nginx-kusc00401
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disk: ssd
kubectl config use-context k8s
vi pod-nginx.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f pod-nginx.yaml
#验证
kubectl get po nginx-kusc00401 -o wide
#https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/

第十题

file

kubectl config use-context k8s
kubectl get node # 查看有几个 Ready 状态节点
kubectl describe <K8S-NODE> | grep -i noschedule 
#拿眼瞅一下有几个 Ready 状态并且没有 noschedule 污点的节点,将数量写入指定文件
echo $NUM > /opt/KUSC00402/kusc00402.txt  #记得cat文件看一下,我有一次不知道为啥就没写进去
#https://kubernetes.io/zh/docs/concepts/architecture/nodes/#condition

第十一题

file

这题要注意,每个人创建的容器数量不一样,我当时就只创建nginx+redis

apiVersion: v1
kind: Pod
metadata:
  name: kucc4
spec:
  containers:
  - name: nginx
    image: nginx
  - name: redis
    image: redis
  - name: memcached
    image: memcached
  - name: consul
    image: consul
kubectl config use-context k8s
vi pod-kucc4.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f pod-kucc4.yaml
#验证
kubectl get po kucc4
#https://kubernetes.io/zh/docs/concepts/workloads/pods/init-containers/

第十二题

file

apiVersion: v1
kind: PersistentVolume
metadata:
  name: app-data
spec:
  capacity:
    storage: 2Gi
  accessModes:
    - ReadOnlyMany
  hostPath:
    path: "/srv/app-data"
kubectl config use-context hk8s
vi app-data-pv.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f app-data-pv.yaml
#验证
kubectl get pv
#https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

第十三题

file

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: task-pv-storage
      persistentVolumeClaim:
        claimName: pv-volume
  containers:
    - name: web-server
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage
kubectl config use-context ok8s
vi pv-volume-pvc.yaml
#将上面的yaml内容粘贴进来
kubectl apply -f pv-volume-pvc.yaml
#验证
kubectl get pvc
#修改pvc 10Mi --> 70Mi
您暂时无权查看此隐藏内容!
#https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/

第十四题

file

kubectl config use-context k8s
kubectl logs foobar | grep unable-to-access-website > /opt/KUTR00101/foobar
#https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/

第十五题

file

apiVersion: v1
kind: Pod
metadata:
  name: big-corp-app
spec:
  containers:
  - name: count
    image: busybox
    args:
    - /bin/sh
    - -c
    - >
      i=0;
      while true;
      do
        echo "$i: $(date)" >> /var/log/big-corp-app.log;
        sleep 1;
      done
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  - name: count-log
    image: busybox
    args: [/bin/sh, -c, 'tail -n+1 -f /var/log/big-corp-app.log']
    volumeMounts:
    - name: varlog
      mountPath: /var/log
  volumes:
  - name: varlog
    emptyDir: {}
kubectl config use-context k8s
kubectl get po big-corp-app -o yaml > big-corp-app.yaml # 导出后修改big-corp-app.yaml文件
kubectl delete po big-corp-app
kubectl apply -f big-corp-app.yaml
#https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/

第十六题

file

kubectl config use-context k8s
kubectl top po -l name=cpu-user -A # 将CPU资源消耗最大的那个pod名称写入指定文件
echo <podname> > /opt/KUR00401.txt

第十七题

file

kubectl config use-context wk8s
kubectl get node
ssh wk8s-node-0
sudo -i
systemctl status kubelet
systemctl start kubelet
您暂时无权查看此隐藏内容!
exit exit kubectl get node #确认wk8s-node-0状态是否已经为Ready

觉得有用顶,评论,预祝考试通过

内容查看本文隐藏内容查看需要消耗5土豆币,请先
土豆币按需购买,不退换,请考虑清楚后购买。
赞(27) 打赏
未经允许不得转载:陈桂林博客 » 2020年12月11日最新CKA认证试题通关秘籍

大佬们的评论 72

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #59

    桂林牛批,奥利给~

    daiwei8个月前 (04-19)回复
    • 谢谢,谢谢~~这名字太熟悉了,难道是?

      admin7个月前 (04-23)回复
  2. #58

    學習

    randolph9个月前 (02-20)回复
  3. #57

    厉害

    云原生驿站10个月前 (02-18)回复
  4. #56

    牛批,学一下考试过程

    joey12个月前 (12-20)回复
  5. #55

    向大佬学习一下

    学习学习学习学习1年前 (2021-11-02)回复
  6. #54

    干货,非常好,很有用

    leovlys1年前 (2021-08-25)回复
  7. #53

    学习

    lin1年前 (2021-08-02)回复
  8. #52

    学习学习

    meimei1年前 (2021-07-20)回复
  9. #51

    向大佬学习一下

    meimei1年前 (2021-07-20)回复

全新“一站式”建站,高质量、高售后的一条龙服务

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏