先说心得
- 每道题请务必看是否需要执行kubectl config use-context k8s来加载环境变量,只有少部分的题不需要加载环境变量(因为可能用的是上一题的环境).环境变量名称大部分是 hk8s mk8s等等.环境变量会直接导致你答案的准确性.
- 不会的题可以点击左下侧按钮记性 flag 标记等全部完成后再回来做题(再次提醒如果是这种情况也要务必记得重新加载本题的环境变量)
- 故障排查问题/集群升级问题 需要进入对应节点 提权至root权限后进行配置,等本题操作完成后,务必记得退出到student(本地)的控制台再进行下一题,(需要退出两次,第一次是退出到非root账户,第二次是退出对应节点ssh)
- 考试时允许开启最多一个tab页面来查阅文档,可以提前在收藏夹里把一些重点文档保存下来方便查阅(.io的搜索系统有时候不好用需要多请求几次)
20% - Services & Networking
• Understand host networking configuration on the cluster nodes
• Understand connectivity between Pods
• Understand ClusterIP, NodePort, LoadBalancer service types and endpoints
• Know how to use Ingress controllers and Ingress resources
• Know how to configure and use CoreDNS
• Choose an appropriate container network interface plugin
20% - 服务和网络
• 掌握在集群节点配置主机网络
https://kubernetes.io/zh/docs/concepts/cluster-administration/networking/
• 掌握Pods间的通信
• 掌握ingress controllers 和 配置ingress资源
• 掌握配置和使用CoreDNS
• 选择合适的容器网络接口插件
10% - Storage
• Understand storage classes, persistent volumes
• Understand volume mode, access modes and reclaim policies for volumes
• Understand persistent volume claims primitive
• Know how to configure applications with persistent storage
10% - 存储
• 掌握存储类型,以及持久化volumes
https://kubernetes.io/zh/docs/concepts/storage/storage-classes/
• 掌握卷模式,读写,权限等相关操作
针对 PV 持久卷,Kuberneretes 支持两种卷模式(volumeModes):Filesystem(文件系统) 和 Block(块)。 volumeMode 是一个可选的 API 参数。 如果该参数被省略,默认的卷模式是 Filesystem。
访问模式有:
ReadWriteOnce -- 卷可以被一个节点以读写方式挂载;
ReadOnlyMany -- 卷可以被多个节点以只读方式挂载;
ReadWriteMany -- 卷可以被多个节点以读写方式挂载。
在命令行接口(CLI)中,访问模式也使用以下缩写形式:
RWO - ReadWriteOnce
ROX - ReadOnlyMany
RWX - ReadWriteMany
• 理解持久卷的创建cli和yaml
https://kubernetes.io/zh/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
• 掌握如何配置application的持久化存储
https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume
30% - Troubleshooting
• Evaluate cluster and node logging
• Understand how to monitor applications
• Manage container stdout & stderr logs
• Troubleshoot application failure
• Troubleshoot cluster component failure
• Troubleshoot networking
30% - 排查故障 目录
• 根据节点和集群日志排查故障
日志架构
使用sidecar容器进行日志传输
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/1.log;
echo "$(date) INFO $i" >> /var/log/2.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
---
apiVersion: v1
kind: Pod
metadata:
name: counter
spec:
containers:
- name: count
image: busybox
args:
- /bin/sh
- -c
- >
i=0;
while true;
do
echo "$i: $(date)" >> /var/log/1.log;
echo "$(date) INFO $i" >> /var/log/2.log;
i=$((i+1));
sleep 1;
done
volumeMounts:
- name: varlog
mountPath: /var/log
- name: count-log-1
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/1.log']
volumeMounts:
- name: varlog
mountPath: /var/log
- name: count-log-2
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/2.log']
volumeMounts:
- name: varlog
mountPath: /var/log
volumes:
- name: varlog
emptyDir: {}
• 理解如何监控application
• 管理容器日志的标准化输出和错误输出
• 排查application故障
• 排查集群组件问题
• 排查网络问题