K8S CKA 1.29 题库 考试环境+模拟环境
微信: kc123123v
题库
题库一共17道题,题目难度都不大,在题库中,context和task是描述信息和任务,每一题都配置了官网的文档。
关键词的使用方法: 在考试的时候只能访问官网查资料,考试是类似于远程桌面,在远程桌面的浏览器访问官网,不能做书签和收藏,所以需要掌握如何查询每道题的官方文档。在给你的关键词中,是让你在官网去搜索用的,考试的时候建议这样用,因为每个题目的链接你下来,用关键词可事半功倍。根据截图去搜索就行。
1、基于角色的访问控制-RBAC
Context:
为部署流水线创建一个新的ClusterRole并将其绑定到范围为特定的 namespace 的特定ServiceAccount。
Tasks:
创建一个名为deployment-clusterrole的clusterrole,该clusterrole只允许对Deployment、Daemonset、Statefulset具有create权限,在现有的 namespace app-team1中创建一个名为cicd-token的新 ServiceAccount。
限于 namespace app-team1中,将新的ClusterRole deployment-clusterrole绑定到新的 ServiceAccount cicd-token。
关键词:RBAC
考试环境:
[student@node-1]$ kubectl config use-context k8s # 设置配置环境,模拟环境不用
[student@node-1]$ kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
[student@node-1]$ kubectl create serviceaccount cicd-token -n app-team1
[student@node-1]$ kubectl create rolebinding cicd-token-rolebinding -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
[student@node-1] $ kubectl describe rolebinding cicd-token-rolebinding -n app-team1 # 检查
模拟环境:
root@master:~# kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
root@master:~# kubectl create serviceaccount cicd-token -n app-team1
root@master:~# kubectl create rolebinding cicd-token-rolebinding -n app-team1 --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
root@master:~# kubectl describe rolebinding cicd-token-rolebinding -n app-team1 # 检查
2、节点维护-指定node节点不可用
Tasks:
Set the node named ek8s-node-1 as unavailable and reschedule all the pods running on it .
翻译:
Tasks:
将ek8s-node-1节点设置为不可用,然后重新调度该节点上的所有Pod.
关键词:drain node
考试环境:
[student@node-1] $ kubectl config use-context ek8s
[student@node-1] $ kubectl cordon ek8s-node-1 #设置节点是不可调度状态
[student@node-1] $ kubectl drain ek8s-node-1 --delete-emptydir-data --ignore-daemonsets --force
模拟环境:
root@master:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 5h55m v1.29.0
node Ready <none> 5h53m v1.29.0
root@master:~# kubectl cordon node
node/node cordoned
root@master:~# kubectl drain node --delete-emptydir-data --ignore-daemonsets --force
3、k8s版本升级
现有的Kebernetes集群正在运行的版本1.29.0。仅将master节点上的所有Kubernetes控制平面和节点组件升级到版本1.29.1。
(注意,考试时,有的考生是1.29.0升级到1.29.1,有的考生是1.30.0升级到1.30.1,具体升级的版本要注意,根据题目要求更改)
确保升级之前drain master节点,并在升级后uncirdon master节点
可以使用一下命令,通过ssh连接到master节点。
ssh master01
可以使用一下命令,在该master节点上获取更高权限:
sudo -i
另外在主节点上升级kubelet和kubectl。
请不要升级工作节点,etcd,container管理器,CNI插件,DNS服务或任何其他插件。
[student@node-1] $kubectl config use-context mk8s
[student@node-1] $ kubectl get nodes
# cordon 停止调度,将node调为SchedulingDisabled。新pod不会被调度到该node,但在该node的旧pod不受影响。
# drain 驱逐节点。首先,驱逐该node上的pod,并在其他节点重新创建。接着,将节点调为 SchedulingDisabled。
[student@node-1] $ kubectl cordon master01
[student@node-1] $ kubectl drain master01 --delete-emptydir-data --ignore-daemonsets --force
# ssh到master节点,并切换到root下
[student@node-1] $ ssh master01
[student@master01] $ sudo -i
[root@master01] # apt-cache show kubeadm|grep 1.29.1
[root@master01] # apt-mark hold kubeadm # 解锁
[root@master01] # apt-get update
[root@master01] # apt-get install -y kubeadm=\1.29.1-1.1'
# 验证升级计划
[root@master01] # apt-mark hold kubeadm # 锁定kubeadm 自动升级
[root@master01] #kubeadm upgrade plan
# 排除etcd,升级其他的,提示时,输入y。
[root@master01] # kubeadm upgrade apply v1.29.1 --etcd-upgrade=false # 输入Y
[root@master01] # systemctl restart kubelet
[root@master01] # kubeadm version
# 升级kubelet
[root@master01] # apt-mark unhold kubelet kubectl
[root@master01] #apt-get install -y kubelet=1.29.1-1.1
[root@master01] # kubelet --version
# 升级kubectl
[root@master01] #apt-get install kubectl=1.29.1-1.1
[root@master01] #kubectl version
# 退出root,退回到student@master01
[root@master01] # exit
# 退出master01,退回到student@node-1
[student@master01] $ exit
# 不要输入exit多了,否则会退出考试环境的。
#恢复master01调度
[student@node-1] $ kubectl uncordon master01
[student@node-1] $ kubectl get node
模拟环境:
kubectl version
kubelet --version
kubeadm version
kubectl get nodes
# master节点上设置
kubectl cordon master
kubectl drain master --delete-emptydir-data --ignore-daemonsets --force
apt-cache show kubeadm | grep 1.29.1 # 如果执行这个没有结果的话 先执行后面三条命令
# apt-mark unhold kubeadm apt-get update apt-get install -y kubeadm='1.29.1-1.1'
# 考试的时候已经有了
apt-mark unhold kubeadm # 允许升级kubeadm
apt-get update
apt-get install -y kubeadm='1.29.1-1.1' # 下载的时候需要多等一下,考试的时候下载会很快
apt-mark hold kubeadm # 锁定
kubeadm upgrade plan # 验证升级计划
kubeadm upgrade apply v1.29.1 --etcd-upgrade=false # 交互式页面输入Y
systemctl restart kubelet
kubeadm version # 至此kubeadm升级完成
# 升级kubeket 和kubectl
apt-mark unhold kubelet kubectl
apt-get install -y kubelet='1.29.1-1.1'
kubelet --version
systemctl restart kubelet
apt-get install -y kubectl='1.29.1-1.1'
kubectl version
root@master:~# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready,SchedulingDisabled control-plane 45d v1.29.1
node Ready <none> 45d v1.29.0
kubectl uncordon master
4、ETCD数据库备份恢复
Task:
首先,为运行在https://127.0.0.1:2379上的现有 etcd 实例创建快照并将快照保存到 /srv/data/etcd-snapshot.db文件
为给定实例创建快照预计能在几秒钟内完成。 如果该操作似乎挂起,则命令可能有问题。用 CTRL + C 来取消操作,然后重试。
然后还原位于/var/lib/backup/etcd-snapshot-previous.db的现有先前快照。
提供了以下TLS证书和密钥,以通过etcdctl连接到服务器。
CA 证书: /opt/KUIN00601/ca.crt
客户端证书: /opt/KUIN00601/etcd-client.crt
客户端密钥: /opt/KUIN00601/etcd-client.key
考试环境:
# 确认一下ssh终端,是在[student@node-1] $ 下
# 备份:
# 如果不使用export ETCDCTL_API=3,而使用ETCDCTL_API=3,则下面每条etcdctl命令前都要加ETCDCTL_API=3。
# 如果执行时,提示permission denied,则是权限不够,命令最前面加sudo即可。
student@node-1:~$ export ETCDCTL_API=3
student@node-1:~$ sudo ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" --cacert=/opt/KUIN000601/ca.crt --cert=/opt/KUIN000601/etcd-client.crt --key=/opt/KUIN000601/etcd-client.key snapshot save /srv/data/etcd-snapshot.db
# 还原:
student@node-1:~$ sudo export