1、RBAC

cka真题2 - 图1

cka真题2 - 图2

  1. kubectl create clusterrole deployment-clusterrole --verb=create --resource=Deployments,StatefulSets,DaemonSet
  2. kubectl create serviceaccount cicd-token -n app-team1
  3. kubectl create rolebinding cicd-token-clusterrole --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token

2、设置节点不可用

cka真题2 - 图3

  1. Flag this to return to later | I am satisfied,next
  2. 将此标记为稍后返回 我满足,下一个
  3. -------------------------------------------------
  4. kubectl cordon ek8s-node-1
  5. kubectl drain ek8s-node-1 --ignore-daemonsets

3、升级k8s版本

cka真题2 - 图4

  1. kubectl drain mk8s-master-0 --ignore-daemonsets
  2. ssh mk8s-master-0
  3. sudo -i
  4. apt install kubeadm=1.20.1-00 -y
  5. kubeadm version
  6. kubeadm upgrade plan
  7. kubeadm upgrade apply v1.212.1 --etcd-upgrade=false
  8. apt install kubectl=1.21.1-00 kubelet=1.21.1-00 -y
  9. systemctl daemon-reload
  10. systemctl restart kubelet
  11. kubectl get nodes
  12. kubectl uncordon mk8s-master-0

4、etcd备份和恢复

cka真题2 - 图5

  1. ETCDCTL_API=3 etcdctl snapshot save /data/backup/etcd-snapshot.db --cacert=ca.crt --cert=etcd-client.crt --key=etcd-client.key
  2. systemctl stop etcd
  3. systemctl cat etcd
  4. mv etcd目录 etcd-bak
  5. ETCDCTL_API=3 etcdctl snapshot restore 恢复文件位置 --endpoints=https://127.0.0.1:2379 --data-dir=etcd数据目录
  6. chown -R etcd:etcd etcd数据目录
  7. systemctl start etcd

5、网络策略

cka真题2 - 图6

  1. kubectl label ns big-corp name=big-corp
  2. apiVersion: networking.k8s.io/v1
  3. kind: NetworkPolicy
  4. metadata:
  5. name: allow-port-from-namespace
  6. namespace: my-app
  7. spec:
  8. podSelector: {}
  9. policyTypes:
  10. - Ingress
  11. ingress:
  12. - from:
  13. - namespaceSelector:
  14. matchLabels:
  15. name: big-corp
  16. ports:
  17. - protocol: TCP
  18. port: 8080

6、SVC暴露

cka真题2 - 图7

  1. kubectl edit deployment front-end
  2. ...
  3. containers:
  4. - image: nginx
  5. imagePullPolicy: Always
  6. name: nginx
  7. ports:
  8. - name: http
  9. protocol: TCP
  10. containerPort: 80
  11. ...
  12. kubectl expose deployment fron-end --type=NodePort --port=80 --target-port=80 --name fron-end-svc

7、Ingress

cka真题2 - 图8

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: pong
  5. namespace: ing-internal
  6. spec:
  7. rules:
  8. - host:
  9. http:
  10. paths:
  11. - pathType: Prefix
  12. path: "/hello"
  13. backend:
  14. service:
  15. name: hello
  16. port:
  17. number: 5678
  18. kubectl get ingress -n ing-internal
  19. curl -kL <ingressIP>:/hello

8、扩容pod数量

cka真题2 - 图9

  1. kubectl scale deployment loadbalancer --replicas=5

9、nodeSelector

cka真题2 - 图10

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: nginx-kusc0041
  5. spec:
  6. containers:
  7. - name: nginx
  8. image: nginx
  9. nodeSelector:
  10. disk: ssd

10、统计就绪节点数量

cka真题2 - 图11

  1. kubectl describe node $(kubectl get nodes | grep -v NotReady | grep Ready | awk '{print $1}') | grep Taint | grep -vc NoSchedule > 文件位置

11、配置多容器

cka真题2 - 图12

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. labels:
  5. run: kuc4
  6. name: kuc4
  7. spec:
  8. containers:
  9. - image: nginx
  10. name: kuc4
  11. - image: redis
  12. name: redis
  13. - image: memcached
  14. name: memcached

12、pv

cka真题2 - 图13

  1. apiVersion: v1
  2. kind: PersistentVolume
  3. metadata:
  4. name: app-data
  5. spec:
  6. capacity:
  7. storage: 2Gi
  8. accessModes:
  9. - ReadWriteOnce
  10. hostPath:
  11. path: "/srv/app-data"

13、PVC

cka真题2 - 图14

  1. apiVersion: v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4. name: pv-volume
  5. spec:
  6. storageClassName: csi-hostpath-sc
  7. accessModes:
  8. - ReadWriteOnce
  9. resources:
  10. requests:
  11. storage: 10Gi
  12. ---
  13. apiVersion: v1
  14. kind: Pod
  15. metadata:
  16. name: web-server
  17. spec:
  18. volumes:
  19. - name: task-pv-storage
  20. persistentVolumeClaim:
  21. claimName: pv-volume
  22. containers:
  23. - name: web-server
  24. image: nginx
  25. volumeMounts:
  26. - mountPath: "/usr/share/nginx/html"
  27. name: task-pv-storage
  28. kubectl edit pvc pv-volume --save-config

14、获取错误日志

cka真题2 - 图15

  1. kubectl logs footbar | grep file-not-found | tee 日志文件

15、边车容器

cka真题2 - 图16

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: legacy-app
  5. spec:
  6. containers:
  7. - name: legacy-app
  8. image: busybox
  9. args:
  10. - /bin/sh
  11. - -c
  12. - >
  13. i=0;
  14. while true;
  15. do
  16. echo "$i: $(date)" >> /var/log/1.log;
  17. echo "$(date) INFO $i" >> /var/log/2.log;
  18. i=$((i+1));
  19. sleep 1;
  20. done
  21. volumeMounts:
  22. - name: varlog
  23. mountPath: /var/log
  24. - name: sidecar
  25. image: busybox
  26. args: [/bin/sh, -c, 'tail -n+1 -f /var/log/legacy-app.log']
  27. volumeMounts:
  28. - name: varlog
  29. mountPath: /var/log
  30. volumes:
  31. - name: varlog
  32. emptyDir: {}

16、统计使用CPU最高的Pod

cka真题2 - 图17

  1. kubectl top pod -l name=cpu-utilizer --sort-by=cpu -A
  2. echo "<pod-name>" > 文件位置

17、节点NotReady处理

cka真题2 - 图18

  1. ssh ..
  2. sudo -i
  3. systemctl status kubelet
  4. systemctl start kubelet
  5. kubeclt get nodes