前言
之前分享了CKA考试的1-10题,这篇文章继续分享CKA实操考试的最后7到题目。忘了告诉大家,考试的时候可以查看官网资料,监考官是允许这个行为的,但是你不能打开除了k8s官网的其它页面。
第11题:启动多容器pod
任务:创建一个名为kube4的pod,在pod里面分别为下面每个images单独运行一个容器nginx+redis+memcached
这个没啥好说的,把题目需要启动的加进去就完了,有时候是其它服务。
kubectl config use-context k8s
apiVersion: v1
kind: Pod
metadata:
name: kube4
spec:
containers:
- name: nginx
image: nginx
- name: redis
image: redis
- name: memcached
image: memcached
第12题:创建PV
任务:创建名为app-data的持久卷pv,容量为2G,访问模式为ReadWriteOnce。volume类型为hostPath,位于/srv/app-data
kubectl config use-context hk8s
apiVersion: v1
kind: PersistentVolume
metadata:
name: app-data
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/srv/app-data"
第13题:获取pod的错误日志
任务:监控pod bar的日志并:
提取与错误file-not-found相对应的日志行,并将日志行写入/opt/KUBE0046/bar
kubectl config use-context k8s
kubectl logs foobar | grep file-not-found > /opt/KUBE0046/bar
# 参考地址:https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/
第14题:Pod使用PVC
任务:创建一个新的PersistentVolumeClaim
名称:pv-volume
Class:csi-hostpath-sc
容量:10Mi
创建一个新的pod,将先前创建的pvc挂载到pod
名称:web-server
Image:nginx
挂载路径:/usr/share/nginx/html
配置新的pod,以对volume具有ReadWriteOnce权限
最后,使用kubectl edit或者kubectl patch将pvc的容量扩展到70M,并记录次更改
kubectl config use-context ok8s
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:
containers:
- name: web-server
image: nginx
ports:
- containerPort: 80
name: http-server
volumeMounts:
- mountPath: /usr/share/nginx/html
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: pv-volume
# 扩容 PVC 容量
kubectl edit pvc pv-volume --save-config
# 参考地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/
第15题:给pod增加一个sidecar
需求描述:将一个现有的pod集成到kubernetes的内置日志记录体系结构中(例如kubectl logs)。添加steaming sidecar容器以
实现此要求
任务:使用busybox image来将名为sidecar的边车容器添加到现有的pod legacy-app中。新的sidecar容器必须运行一下命令:
/bin/sh -c tail -n+1 -f /var/log/legacy-app.log
使用安装在/var/log的volume,使日志文件legacy-app.log可用于sidecar容器。
备注tips:除了添加需要的volume mount以外,请勿更改现有的容器规格
kubectl config use-context k8s
apiVersion: v1
kind: Pod
metadata:
name: legacy-app
spec:
containers:
- name: count
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/legacy-app.log;
sleep 1;
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: {}
# 这个题目不能在线编辑,只能导出资源的yaml,导出后修改yaml,要删掉yaml很多不要的信息
kubectl get pod big-corp-app -o yaml > big-corp-app.yaml # 导出后修改文件
kubectl delete pod big-corp-app
kubectl apply -f big-corp-app.yaml
# 参考资料:https://kubernetes.io/zh/docs/concepts/cluster-administration/logging/
第16题:统计使用CPU最高的Pod
任务:任务:通过pod label name=cpu-utilizer,找到运行时占用大量CPU的pod,并将占用CPU资源最高的pod名写入文件"/opt/kube98/kube98.txt"
kubectl config use-context uk8s
kubectl top pod -l name=cpu-utilizer --sort-by="cpu" -A
echo $podname > /opt/kube98/kube98.txt # 将第一个 Pod 名称写到文件
第17题:节点未就绪的处理
任务:名为week-node01的集群节点处于NotReady状态。需要检查发生NotReady情况的原因,并采取相应措施将节点恢复为Ready状态,确保所做的更改永久有效。
kubectl config use-context wk8s
# 查看节点状态,会发现week-node01这个节点NotReady
kubectl get node
# ssh到节点,启动对应的应用
ssh week-node01
# 需要root权限
sudo -i
systemctl status kubelet
systemctl start kubelet
systemctl enable kubelet
总结
以上就是全部的CKA考试内容了,据说题目几乎都没啥大的变化。从这些题目来看,除了一道sidecar比较麻烦,其他题目都很简单,不知道大家怎么看。最后请大家点点赞,点点关注,谢谢。