首页IT科技cka模拟试题(CKA考试题目常用命令-练习这个就完事)

cka模拟试题(CKA考试题目常用命令-练习这个就完事)

时间2025-06-15 19:59:54分类IT科技浏览7206
导读:细节...

细节

升级版本放到倒数第二做

etcd备份题放到最后做

第九题               , 命令行启动pod导出yml                       ,不用查看官网

kubectl run nginx --image=nginx --dry-run=client -o yml > 8.yml

第十三题

kubectl edit pvc pv-volume --record 这种方法也是可以的               。                      。      。           。

设置自动补全

登陆管理节点 kubectl --help | grep bash,此步是为了找关键词completion sudo vim /etc/profile 添加source <(kubectl completion bash) file 5.保存退出      ,source /etc/profile

题目一. RBAC

Task 创建一个名为deployment-clusterrole 且允许创建以下资源类型的新ClusterRole: Deployment,StatefulSet,DaemonSet 在现有的namespace app-team1中创建一个名为cicd-token的新ServiceAccount 限于namespace app-team1,将新的ClusterRole deployment-clusterrole绑定到新的ServiceAccount cicd-token # kubectl config use-context k8s #切换集群

参考答案:

没必要参考网址           ,使用-h 帮助更方便                       。 kubectl create clusterrole -h kubectl create serviceaccount -h kubectl create rolebinding -h # kubectl config use-context k8s #切换集群 # kubectl create rolebinding -h # kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,daemonsets,statefulsets #注意:要写小写                       ,每个需要添加一个s # kubectl create serviceaccount -h # kubectl create serviceaccount cicd-token -n app-team1 # kubectl create clusterrole -h # kubectl create rolebinding cicd-binding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token -n app-team1 # 注意cicd-binding (这个名字可以任意         ,叫abc也行         。) 删除 删除使用delete即可       ,例如                        ,删除前面创建的rolebinding和clusterrole kubectl delete rolebinding cicd-binding -n app-team1 kubectl delete clusterrole deployment-clusterrole 查看 kubectl describe clusterrole deployment-clusterrole kubectl describe rolebinding -n app-team1 kubectl get serviceaccout -n 命名空间

题目二. Top

Task 通过pod label name=cpu-utilizer,找到运行时占用大量cpu的pod             , 并将占用cpu最高的pod名称写入文件/opt/KUTR00401/KUTR00401.txt(已存在) # kubectl config use-context k8s #切换集群

参考答案:

# kubectl config use-context k8s #切换集群 # kubectl top pod -h # kubectl top pod -l name=cpu-utilizer --sort-by=cpu -A # echo <podname> >/opt/KUTR00401/KUTR00401.txt #注意:这里由于翻译问题可能文件名字不存在   ,可以先进去/opt下                       ,确认这个文件具体目录在写入进去,别新建文件目录                 ,否则没分       。

题目三. Networkpolicy

Task 在现有的namespace my-app中创建一个名为allow-port-from-namespace的新NetworkPolicy 确保新的NetworkPolicy允许namespace my-app中的Pods来连接到namespace big-corp中的端口8080 进一步确保新的NetworkPolicy: 不允许对没有在监听端口8080的pods的访问 不允许不来自namespace my-app中的pods的访问 双重否定就是肯定,所以最后两句话的意思就是: 仅允许端口为 8080 的 pod 访问                        。 仅允许 my-app命名空间中的 pod 访问             。 # kubectl config use-context hk8s 切换集群

参考答案:

官网链接:https://kubernetes.io/zh-cn/docs/concepts/services-networking/network-policies/ 官网->概念->服务->网络策略 或 在搜索写入 network policy # kubectl config use-context hk8s #kubectl get namespaces --show-labels 查看命名空间 # kubectl label namespace big-corp name=big-corp #将命名空间标签 #如果访问者的 namespace 没有标签 label                   ,则需要手动打一个   。如果有一个独特的标签 label                     ,则也可以直接使用 # vim 03.yaml 内容参考下方 # kubectl apply -f networkpolicy.yaml # kubectl get networkpolicy -nmy-app #查看状态                       。如果脚本报错   ,可能是命名空间标记没标注导致脚本报错                 。

题目四: Service

Task 请重新配置现有的部署front-end 以及添加名为http的端口规范来公开现有容器nginx的端口80/tcp 创建一个名为front-end-svc的新服务               ,以公开容器端口http 配置此服务                      ,以通过在排定的节点上的NodePort来公开各个Pods # kubectl config use-context k8s

参考答案

官网地址:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ 文档主页-->概念-->工作负载-->工作负载资源-->deployments 或搜索 deployment # kubectl config use-context k8s # kubectl get svc # 查看服务有没有启动      ,考试不需要 # kubectl edit deployment front-end # 注意           ,已经存在pods                       ,修改即可,改动如下: 在name和resources中间插入         ,然后保存:wq # kubectl expose -h # kubectl expose deployment front-end --port=80 --target-port=80 --type=NodePort --name=front-end-svc #说明       ,deployment 接的是pod名字                        ,外部端口             ,容器端口   ,type别漏了                       ,--name=svc名字 # kubectl get deployment front-end -owide #查看配置 # kubectl get svc #查看服务 # curl svc-ip:端口 #验证是否访问到nginx

题目五. Ingress

Task 如下创建一个新的nginx ingress资源: 名称:pong Namespace: ing-internal 使用服务端口5678在路径/hello上公开服务hello 可以使用以下命令检查服务hello的可用性                 ,该命令应返回hello: curl -kL <INTERNAL_IP>/hello # kubectl config use-context k8s 切换集群

参考答案

官网地址:https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/#the-ingress-resource 文档路径:概念 --> 服务,负载均衡和联网 --> Ingress-->第一个示例 或搜索ingress # kubectl config use-context k8s # vim ingress.yml # kubectl apply -f 05.yaml # curl -kL ip/hello 3               、验证 kubectl get ingress -ning-internal curl -kL internal_IP/hello

题目六. 副本扩容

Task 将deployment从loadbalancer扩展至5 pods # kubectl config use-context k8s 切换集群

参考答案:

# kubectl config use-context k8s #kubectl scale deployment -h 查看帮助 # kubectl get deployment # kubectl scale deployment loadbalancer --replicas=5 #记住scale既可以 3                      、验证 kubectl get po kubectl get deployment

题目七. 分配Pod

Task 按如下要求调度一个pod 名称:nginx-kusc00401 Image: nginx Node selector: disk=ssd # kubectl config use-context k8s 切换集群

参考答案:

官网地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-pods-nodes/ 文档主页-->任务-->配置pods和容器-->将 Pod 分配给节点 或搜索pod # kubectl config use-context k8s # kubectl get node --show-labels 查看标签 # kubectl label node k8s-node1 disk=ssd 没有就打标签 # kubectl apply -f 07.yaml # kubectl get pods nginx-kusc004001 -owide

题目八: 统计污点

Task 检查有多少worker nodes已准备就绪(不包括被打上Taint:NoSchedule的节点)                   , 并将数量写入到/opt/KUSC00402/kusc00402.txt # kubectl config use-context k8s 切换集群

参考答案:

kubectl -hD #如果实在记不住命令                     ,可以手动往题目文件里面写入2 即可 [root@kubernetes-master ~]#kubectl describe nodes |grep Taint|grep -cv NoSchedule 2 # kubectl config use-context k8s 方法一: # kubectl describe node | grep -i Taints | grep -vci NoSchedule > /opt/KUSC00402/kusc00402.txt # grep -i 忽略大小写(防止大小写错) -c统计 -v取反 方法二: # kubectl describe node | grep Taints | grep -i NoSchedule | wc -l #统计污点和不允许调度 # kubectl get node | grep -w Ready | wc -l #统计启动状态 # 指令2-指令1数字 echo 数量 >/opt/KUSC00402/kusc00402.txt 方法三: # kubectl describe nodes $(kubectl get node|grep Ready|awk {print $1})|grep Taints|grep -vc NoSchedule

题目九:多容器运行一个Pod

Task 创建一个名为kucc4的pod   ,在pod里面分别为以下每个images单独运行一个app container (可能会有1-4个images):nginx +redis+memcached # kubectl config use-context k8s

参考答案:

官网地址:https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/ 文档主页-->概念-->工作负载-->pod 或搜索pods # kubectl config use-context k8s # vim 09.yaml # kubectl apply -f 09.yaml 3      、验证 kuebctl get po

题目十. PV

Task 创建名为app-data的persistent volume,容量为2Gi               , 访问模式为ReadWriteOnce,volume类型hostPath,位于/srv/app-data # kubectl config use-context hk8s

参考答案:

官方地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ 文档主页 --> 任务 --> 配置pods和容器-->配置 Pod 以使用 PersistentVolume 作为存储 可以直接搜索pvc选择第三个 # kubectl config use-context hk8s # vim 10.yaml # kubectl apply -f 10.yaml # kubectl get pv

题目十一. PVC

Task 创建一个新的PersistentVolumeClaim: 名称:pv-volume Class: csi-hostpath-sc 容量:10Mi 创建一个新的Pod                      ,此Pod将作为volume挂载到PersistentVolumeClaim 名称: web-server image: nginx 挂在路径:/usr/share/nginx/html 配置新的pod      ,以对volume具有ReadWriteOnce权限 最后           ,使用kubectl edit或kubectl patch将PersistentVolumeClaim的容量扩展为70Mi                       ,并记录此更改 # kubectl config use-context ok8s

参考答案:

官网地址:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ 文档主页 --> 任务 --> 配置pods和容器-->配置 Pod 以使用 PersistentVolume 作为存储-->创建 PersistentVolumeClaim 步骤         ,创建pvc       ,创建pod                        ,edit修改大小 # kubectl config use-context ok8s # kubectl apply -f pvc.yaml # kubectl get pvc #注意             ,这里因为没有csi这个类   ,所以状态处于pending是正常的。考试会有csi这个类                       ,csi这个类需要安装对应插件才能使用                   。 # kubectl edit pvc pv-volume --save-config #我们修改会保存不了                 ,因为上面pvc,pending状态                   ,记住在那里修改即可                     。或--save-config也可以用--record替换   。

题目十二. Logs

Task 监控pod bar的日志并: 提取与错误file-not-found相对应的日志行                     ,将这些日志写入/opt/KUTR00101/bar # kubectl config use-context k8s

参考答案:

# kubectl config use-context k8s # kubectl logs -h # kubectl logs pod/bar | grep file-not-found >/opt/KUTR00101/bar #注意pod/bar格式               。可以先logs看有没有信息在输出   ,注意权限问题               ,必要加sudo # cat /opt/KUTR00101/bar #验证

题目十三. Sidecar边车(遇到可以先做后面                      ,我考试第5题出现)

Task 使用busybox Image来将名为sidecar的sidecar容器添加到现有的pod legacy-app中                      。 新的sidecar容器必须运行以上命令: /bin/sh -c tail -n+1 -f /var/log/legacy-app.log 使用安装在/var/log的Volume      ,使日志文件legacy-app.log可用于sidecar容器      。 (注:除了添加所需的volume mount以外           ,请勿更改现有容器的规格           。) 解题 # kubectl config use-context k8s

参考答案:

官网地址:https://kubernetes.io/zh-cn/docs/concepts/cluster-administration/logging/ 文档-->概念-->集群管理-->日志架构 或 搜索栏输入side car 官网搜索logging # kubectl config use-context k8s # kubectl get po leagcy-app -oyaml > 13.yaml #导出旧pod修改,注意因为要求不对原有pod修改                       ,只能新增辅助sidecar         ,另外要注意备份 # cp 13.yaml 13.bak.yaml #备份 # kubectl delet pod legacy-app #删除旧pod # kubectl apply -f 13.yaml #重新部署 # kubectl exec legacy-app -c legacy-app -- tail -f /var/log/legacy-app.log #验证 # kubectl exec legacy-app -c sidecar -- tail -f /var/log/legacy-app.log #验证是否使用同一个log

第一步

第二步

验证

题目十四. 升级(升级需要时间       ,建议最后做                        ,我考试第2题出现)

Task 设置配置环境: kubectl config use-context mk8s 现有的Kubernetes集群正在运行版本1.20.0,仅将主节点上的所有Kubernetes控制平面和节点组件 升级到版本1.20.1 确保在升级之前drain主节点             ,并在升级后uncordon主节点 可使用以下命令通过ssh连接到主节点: ssh mk8s-master-0 可使用以下命令在该主节点上获取更高权限: sudo -i 另外   ,在主节点上升级kubelet和kubectl                       。(不需要升级etcd) kubectl config use-context mk8s

参考答案:

官网地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/ 文档主页-->任务-->管理集群-->用 kubeadm 进行管理-->升级 kubeadm 集群 或搜索kubeadm upgrade 1           、切换环境 kubectl config use-context mk8s 2                       、配置 #升级kueadm kubectl cordon mk8s-master-0 kubectl drain mk8s-master-0 --ignore=daemonsets #驱逐pod ssh mk8s-master-0 #远程到master节点 sudo -i #提权 apt install kubeadm=1.20.1-00 -y kubeadm upgrade plan #这里可以先查下的:apt-cache show|grep kubeadm #kubeadm upgrade apply install v1.20.1 #并且要加上--ectd-ugrade=false         。       。                        。             。   。                       。题目要求不升级 etcd; 注意下这2个版本号写法的区别                 。。                   。                     。 kubeadm upgrade apply v1.20.1 --etcd-upgrade=false #升级kubelt apt install kubelet=1.20.1-00 kubectl=1.20.1-00 -y systemctl restart kubelet #这里要重启下kubelt的                       ,切记   。               。                      。 Exit #退出root账户 Exit #退出ssh登陆的master节点 kubectl uncordon mk8s-master-0 3         、验证 kubectl get node -owide kubectl --version kubelet --version

题目十五. Etcd备份

Task 首先                 ,为运行在https://127.0.0.1:2379上的现有etcd实例创建快照并将快照保存到/data/backup/etcd-snapshot.db 为给定实例创建快照预计能在几秒钟内完成      。如果该操作似乎挂起,则命令可能有问题           。用ctrl+c来取消操作                   ,然后重试                       。 然后还原位于/data/backup/etcd-snapshot-previous.db的现有先前快照         。 提供了以下TLS证书和密钥                     ,以通过etcdctl连接到服务器       。 CA证书:/opt/KUIN00601/ca.crt 客户端证书:/opt/KUIN00601/etcd-client.crt 客户端密钥:/opt/KUIN00601/etcd-client.key

参考答案:

官网地址:https://kubernetes.io/zh/docs/tasks/administer-cluster/configureupgrade-etcd/ 文档主页-->任务-->管理集群-->为Kubernetes运行etcd集群 或搜索etcd 1       、确定当前环境 kubectl get node 开始做题 ETCDCTL_API=3 -H #查看帮助 mkdir /data/backup/etcd-snapshot.db #备份目录自己创建   ,考试按照考试改 2                        、配置 #备份 ETCDCTL_API=3 etcdctl snapshot save /data/backup/etcd-snapshot.db --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \ --key=/etc/kubernetes/pki/etcd/healthcheck-client.key #还原 sudo -i systemctl stop etcd systemctl cat etcd #确认下数据目录               ,注意这里是systemctl cat etcd mv /var/lib/etcd/default.etcd /var/lib/etcd/default.etcd.bak #备份设置                      ,注意这里是default.etcd sudo ETCDCTL_API=3 etcdctl restore /data/backup/etcd-snapshot-previous.db --data-dir=/var/lib/etcd/default.etcd chown -R etcd:etcd /var/lib/etcd #注意      ,不要忘记了                        。             。   。                       。 syetmctl start etcd 注:执行备份命令如果提示没证书文件           ,exit 退回上一步操作

题目十六. Node 状态排错(送分题)

Task 名为wk8s-node-0的Kubernetes worker node处于NotReady状态                 。调查发生这种情况的原因                       , 并采取相应措施将node恢复为Ready状态         ,确保所做的任何更改永久有效 可使用以下命令通过ssh连接到故障node: ssh wk8s-node-0 可使用以下命令在该node上获取更高权限: sudo -i kubectl config use-context wk8s #考试时切到这道题的集群后       ,那个 node 就是异常的

参考答案:

1             、切换环境 kubectl config use-context wk8s #考试时切到这道题的集群后                        ,那个 node 就是异常的。 真实考试时             ,这个异常节点的 kubelet 服务没有启动导致的   ,就这么简单                   。 # ssh wk8k-node-0 # sudo -i # kubectl descibe node wk8s-node-0 # systemctl status kubelet # systemctl enable kubelet --now # 这题就是这么简单                       ,也可以先start 在enable # systemctl status kubelet # exit # 退出root # exit # 退出节点 # journalctl -u kubelet # 如果没有起来                 ,查看原因 3   、验证 kubectl get node #jounarlctl -u kubelet 查看kubelet日志

题目十七. Node驱逐Pod

Task 将名为ek8s-node-1的node设置为不可用,并重新调度该node上所有运行的pods kubectl config use-context ek8s #切换集群

参考答案:

1                       、切换环境 kubectl config use-context ek8s 2                 、配置 #kubectl coredon ek8s-node-1 #设置为不可调度 kubectl drain ek8s-node-1 --ignore-daemonsets #设置次节点为不可调度                   ,并且排空次节点 #如果上面命令报错就加上一个 --delete-local-data --force 3、验证 kubectl get node

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python3.8打开文件(python打开文本文件有哪些方法?) docker部署mysql主从复制(docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例)