目录
- 1、考核知识:基于角色访问控制
- 2、考核知识:节点维护指定 node 节点不可用
- 3、考核知识:K8s 版本升级
- 4、考核知识:ETCD 数据备份恢复
- 5、考核知识:网络策略 NetworkPolicy
- 6、考核知识:四层代理 service
- 7、考核知识:七层代理 ingress
- 8、考核知识:Deployment 管理 Pod 扩缩容
- 9、考核知识:Pod 指定节点部署
- 10、考核知识:检查可用节点数量
- 11、考核知识:一个 Pod 封装多个容器
- 12、考核知识:持久卷 PersistentVolume
- 13、考核知识:PersistentVolumeClaims
- 14、考核知识:查看 Pod 日志
- 15、考核知识:Sidecar 代理
- 16、考核知识:查看 Pod 的 cpu
- 17、考核知识:集群故障排查 - kubelet 故障
温馨提示
获得对终端的访问权限后,明智的做法是花 1分钟来设置您的环境。您可以设置以下内容
alias k=kubectl # will already be pre-configured
export do="--dry-run=client -o yaml" # k create deploy nginx --image=nginx $do
export now="--force --grace-period 0" # k delete pod x $now
在~/.vimrc
做如下配置
set tabstop=2
set expandtab
set shiftwidth=2
熟记各种资源的缩写
资源类型 | 缩写 |
---|---|
componentstatuses | cs |
configmaps | cm |
daemonsets | ds |
deployments | deploy |
endpoints | ep |
event | ev |
horizontalpodautoscalers | hpa |
ingresses | ing |
limitranges | limits |
namespaces | ns |
nodes | no |
statefulsets | sts |
persistentvolumeclaims | pvc |
persistentvolumes | pv |
pods | po |
podsecuritypolicies | psp |
replicasets | rs |
replicationcontrollers | rc |
resourcequotas | quota |
serviceaccount | sa |
services | svc |
1、考核知识:基于角色访问控制
题目内容
题目内容中文解释
Context
为部署流水线创建一个新的ClusterRole
并将其绑定到范围为特定的namespace
的特ServiceAccount
。
Task
创建一个名为deployment-clusterrole
的 clusterrole,该 clusterrole 只允许Deployment
、Daemonset
、Statefulset
具有create
权限,在现有的namespace
app-team1
中创建一个名为cicd-token
的新ServiceAccount
。限于namespace
app-team1
中,将新的 ClusterRoledeployment-clusterrole
绑定到新的ServiceAccount
cicd-token
。
官方文档搜索关键字:RBAC
做题解答
- 考试时执行,切换集群。模拟环境中练习不需要执行。真实考试环境会提示你切换
kubectl config use-context k8s
- 创建一个名为
deployment-clusterrole
的clusterrole
kubectl create clusterrole deployment-clusterrole \
--verb=create --resource=deployments,daemonsets,statefulsets
- 在现有的
namespace app-team1
中创建一个名为cicd-token
的新ServiceAccount
kubectl create sa cicd-token -n app-team1
- 题目中写了限于 namespace app team1 中,则创建
rolebinding
,没有写的话,则创建clusterrolebinding
;rolebinding 后面的名字rb-cicd-token 随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。
kubectl create rolebinding rb-cicd-token
\ --clusterrole=deployment-clusterrole
\ --serviceaccount=app-team1:cicd-token
\ --namespace=app-team1
2、考核知识:节点维护指定 node 节点不可用
题目内容
题目内容中文解释
Task:
切换 k8s 集群环境:kubectl config use-context ek8s
将ek8s-node-1
节点设置为不可用,然后重新调度该节点上的所有 Pod。
官方文档搜索关键字:drain-node
有关更多细节,请参阅
Kubectl Reference Docs
安全地清空一个节点
做题解答
- cordon 停止调度,将 node 调为 SchedulingDisabled。新 pod 不会被调度到该 node,但在该node 的旧 pod 不受影响。
- drain 驱逐节点。首先,驱逐该 node 上的 pod,并在其他节点重新创建。接着,将节点调为SchedulingDisabled。
- 切换集群环境
kubectl config use-context ek8s
- 把
ek8s-node-1
节点设置为不可调度
kubectl cordon ek8s-node-1
- 把
ek8s-node-1
节点上的pod驱逐到其他节点上
kubectl drain cka-node1 --delete-emptydir-data --ignore-daemonsets --force
3、考核知识:K8s 版本升级
题目内容
切换 k8s 集群环境:
kubectl config use-context mk8s
Task
现有的 Kubernetes 集群正在运行版本 1.23.1。仅将 master 节点上的所有 Kubernetes 控制平面和节点组件升级到版本 1.23.2。(注意,考试时的集群可能为 1.23.0,会让你从 1.23.0 升级为 1.23.1。甚至是
1.22.1 升级为 1.22.2。所以敲命令时,具体要升级的版本,根据题目要求更改。) 确保在升级之前 drain master 节点,并在升级后 uncordon master 节点。 可以使用以下命令,通过 ssh 连接到 master 节点: ssh
master01 可以使用以下命令,在该 master 节点上获取更高权限:sudo -i
另外,在主节点上升级 kubelet 和 kubectl。请不要升级工作节点,etcd,container 管理器,CNI 插件, DNS 服务或任何其他插件。
官方参考文档
官方文档搜索关键字:upgrade