当前位置: 首页 > news >正文

CKAD-CN考试之路----10

CKAD-CN考试之路----10

  • 1. 题目
  • 2. 解题
  • 3. 验证

1. 题目

您必须连接到正确的主机。不这样做可能导致零分。
[candidate@base] $ ssh ckad00028
Task
在名为 honeybee-deployment 的 Deployment 和 namespace gorilla 中的一个 Pod 正在记录错误.
1 查看日志以识别错误消息。
找出错误, 包括 User “system:serviceaccount:gorilla:default ”cannot list resource “serviceaccounts” […] in the namespace “gorilla”
2 更新 Deployment honeybee-deployment 以解决 Pod 日志中的错误。
您可以在/ckad/prompt-escargot/honeybee-deployment.yaml 中找到 honeybee-deployment 的清单文件

2. 解题

  1. 登录环境 这步切勿忘记 否则可能做了也没分
ssh ckad00028
  1. 查看错误信息
candidate@master01:~$ kubectl get pods -n gorilla 
NAME                                   READY   STATUS    RESTARTS         AGE
honeybee-deployment-58f59d4bf9-z6zkm   1/1     Running   12 (4h37m ago)   187d
candidate@master01:~$ kubectl logs -n gorilla honeybee-deployment-58f59d4bf9-z6zkm | tail -3
Error from server (Forbidden): serviceaccounts is forbidden: User "system:serviceaccount:gorilla:default" cannot list resource "serviceaccounts" in API group "" in the namespace "gorilla"
2025-09-08 05:35:11+00:00
Error from server (Forbidden): serviceaccounts is forbidden: User "system:serviceaccount:gorilla:default" cannot list resource "serviceaccounts" in API group "" in the namespace "gorilla"

错误表明当前使用的 ServiceAccount system:serviceaccount:gorilla:default(即命名空间 gorilla下的默认 ServiceAccount)没有权限(forbidden)gorilla命名空间中 列出(list)serviceaccounts资源

就是默认的 ServiceAccount 没有被授予在 gorilla命名空间中列出其他 ServiceAccount 的权限。

再确认下gorilla命名空间下有哪些sa

candidate@master01:~$ kubectl get sa -n gorilla 
NAME         SECRETS   AGE
boxweb-sa    0         187d
default      0         187d
gorilla-sa   0         187d

查看role

candidate@master01:~$ kubectl describe role -n gorilla  boxweb-role 
Name:         boxweb-role
Labels:       <none>
Annotations:  <none>
PolicyRule:Resources         Non-Resource URLs  Resource Names  Verbs---------         -----------------  --------------  -----pods              []                 []              [watch]serviceaccounts   []                 []              [watch]deployments.apps  []                 []              [watch]
candidate@master01:~$ kubectl describe role -n gorilla  gorilla-role 
Name:         gorilla-role
Labels:       <none>
Annotations:  <none>
PolicyRule:Resources         Non-Resource URLs  Resource Names  Verbs---------         -----------------  --------------  -----pods              []                 []              [get list]serviceaccounts   []                 []              [get list]deployments.apps  []                 []              [get list]

显然gorilla-role 是有权限去get 和list serviceaccounts的

再次确认gorilla-role被绑定到了gorilla-sa

candidate@master01:~$ kubectl get rolebindings.rbac.authorization.k8s.io -n gorilla gorilla-rolebinding 
NAME                  ROLE                AGE
gorilla-rolebinding   Role/gorilla-role   187d
candidate@master01:~$ kubectl describe rolebindings.rbac.authorization.k8s.io -n gorilla gorilla-rolebinding 
Name:         gorilla-rolebinding
Labels:       <none>
Annotations:  <none>
Role:Kind:  RoleName:  gorilla-role
Subjects:Kind            Name        Namespace----            ----        ---------ServiceAccount  gorilla-sa  gorilla
  1. gorilla-sa 绑定给 honeybee-deployment
kubectl -n gorilla set serviceaccount deployment/honeybee-deployment gorilla-sa

这条命令如果不记得可以用-h获得帮助

candidate@master01:~$ kubectl -n gorilla set serviceaccount -h
Update the service account of pod template resources.Possible resources (case insensitive) can be:replicationcontroller (rc), deployment (deploy), daemonset (ds), job, replicaset (rs), statefulsetAliases:
serviceaccount, saExamples:# Set deployment nginx-deployment's service account to serviceaccount1kubectl set serviceaccount deployment nginx-deployment serviceaccount1

执行没错误就可以.

3. 验证

  1. 等待pod更新完毕
candidate@master01:~$ kubectl get pods -n gorilla 
NAME                                   READY   STATUS    RESTARTS   AGE
honeybee-deployment-5bcd579f9f-ffrcd   1/1     Running   0          3m10s
  1. 确认是否还有错误日志
candidate@master01:~$ kubectl logs -n gorilla honeybee-deployment-5bcd579f9f-ffrcd | tail -4
NAME         SECRETS   AGE
boxweb-sa    0         187d
default      0         187d
gorilla-sa   0         187d
  1. 确认logs里是否还有其他错误,没有返回就是正常
candidate@master01:~$ kubectl logs -n gorilla honeybee-deployment-5bcd579f9f-ffrcd | grep -i error
candidate@master01:~$ 
  1. 测试脚本
#!/bin/bash# Get the ServiceAccount name used by the 'honeybee-deployment' in namespace 'gorilla'
DEPLOY_SA=$(kubectl get deployments.apps -n gorilla honeybee-deployment -o jsonpath='{.spec.template.spec.serviceAccount}')# Get the name of the last pod in the 'gorilla' namespace (assumes 'tail -1' gets the newest)
POD_NAME=$(kubectl get pods -n gorilla | tail -1 | awk '{print $1}')# Count the number of lines containing 'error' (case-insensitive) in the logs of the last pod
ERROR_LOGS=$(kubectl logs -n gorilla $POD_NAME | grep -i error | wc -l)# Check if the deployment is using the expected ServiceAccount 'gorilla-sa'
[ "$DEPLOY_SA" = "gorilla-sa" ] && echo 1/2 success || echo 1/2 error# Check if there are no error logs in the pod
[ $ERROR_LOGS -eq 0 ] && echo 2/2 success || echo 2/2 error
  1. 授权并测试脚本
candidate@master01:~$ chmod +x check10.sh 
candidate@master01:~$ ./check10.sh
1/2 success
2/2 success
  1. 退出 此步务必记得,否则可能影响后续做题
exit

文章转载自:

http://KyZ0Tt5m.tbksk.cn
http://J2uN0gJn.tbksk.cn
http://c3PyrNyp.tbksk.cn
http://ssGKxqGa.tbksk.cn
http://7HYDdadR.tbksk.cn
http://INv4pco0.tbksk.cn
http://jdT4idRH.tbksk.cn
http://0CLMsO1W.tbksk.cn
http://gkCv9r5a.tbksk.cn
http://GRZhBVq4.tbksk.cn
http://Nj0agpan.tbksk.cn
http://j8OCHbpR.tbksk.cn
http://GQiR4diy.tbksk.cn
http://5GpRV7xt.tbksk.cn
http://JBvGWpuW.tbksk.cn
http://hC8IC5dC.tbksk.cn
http://IM7kX2DI.tbksk.cn
http://0wRkDqt7.tbksk.cn
http://YvYaHGeY.tbksk.cn
http://In0lbgyt.tbksk.cn
http://hanOAa0Z.tbksk.cn
http://bWMnC3i3.tbksk.cn
http://iXplCcDI.tbksk.cn
http://LQOC1BPL.tbksk.cn
http://mrvqwro8.tbksk.cn
http://DBZMEghg.tbksk.cn
http://oeLlvoLd.tbksk.cn
http://YHPXeCoG.tbksk.cn
http://UqdMh9UZ.tbksk.cn
http://AipIeWgm.tbksk.cn
http://www.dtcms.com/a/376437.html

相关文章:

  • Linux嵌入式自学笔记(基于野火EBF6ULL):1.配置环境
  • 2025【1460天】网络工程师经验之道
  • 图解设计模式【3】
  • java 将pdf转图片
  • ES(springcloud笔记第五期)
  • Day40 Web服务器原理与C语言实现:从HTTP协议到静态资源服务
  • 利用FFmpeg自动批量处理m4s文件
  • [iOS] ViewController 的生命周期
  • MySQL 核心文件解析:从配置到存储的 “说明书 + 记录仪” 系统
  • 一文了解大模型压缩与部署
  • Jenkins 构建 Node 项目报错解析与解决——pnpm lockfile 问题实战
  • Wazuh 研究记录 | 开源XDR | 安全基线检测
  • 配电网故障诊断与自愈控制工具的智慧能源开源了
  • [邮件服务器core] 安全通信(SSL/TLS) | OpenSSL库管理 | 服务端安全SECURITY.md
  • Workers API 实战教程:45 秒完成 CI/CD 云函数部署
  • MySQL收集processlist记录的shell工具mysql_collect_processlist
  • 计算机毕业设计 基于Hadoop的健康饮食推荐系统的设计与实现 Java 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【nginx基础】Nginx安装指南:CentOS 7.9源码编译安装Nginx 1.28.0完整指南
  • ShardingJDBC实战指南
  • 数据库--MySQL数据管理
  • Java全栈学习笔记33
  • 网络学习笔记
  • GitHub每日最火火火项目(9.10)
  • 基于stm32的环境监测系统/智能家居/空气质量监测系统
  • 基于PyQt5和阿里云TTS的语音合成应用开发实战[附源码】
  • Linux的V4L2视频框架学习笔记
  • Android studio安装教程——超详细(含安装包安装教程)
  • 如何将大型音频文件从 iPhone 发送到不同的设备
  • 使用阿里云容器镜像服务 ACR
  • ffmpeg内存模型