跳转至

CKA 模拟考题与标准解法

使用方式

这页的目标不是堆很多碎题,而是帮你建立“看到题目后应该如何落手”的标准节奏。

建议每道题都按这个方式训练:

  1. 先自己做,不看答案
  2. 用计时器限制在 5 到 8 分钟
  3. 做完后再对照标准解法
  4. 最后把自己的慢点和错点记下来

模拟题 1:创建 Deployment 并扩容

题目

app 命名空间创建一个名为 web 的 Deployment,镜像为 nginx:1.25,副本数为 3

标准解法

k create namespace app
k create deployment web --image=nginx:1.25 -n app
k scale deployment web --replicas=3 -n app
k get deployment,pod -n app

验证点

  • Deployment 名称正确
  • 副本数为 3
  • Pod 正常 Running

常见失误

  • 忘了切 namespace
  • 只创建 Deployment 没扩容
  • 没验证 Pod 是否起来

模拟题 2:滚动升级并回滚

题目

app 命名空间中的 web Deployment 镜像升级为 nginx:1.26,确认升级完成后再回滚到上一个版本。

标准解法

k set image deployment/web nginx=nginx:1.26 -n app
k rollout status deployment/web -n app
k rollout history deployment/web -n app
k rollout undo deployment/web -n app
k rollout status deployment/web -n app

考点

  • set image
  • rollout status
  • rollout history
  • rollout undo

模拟题 3:用 Service 暴露 Deployment

题目

app 命名空间的 web Deployment 创建一个名为 web-svc 的 ClusterIP Service,对外暴露 80 端口。

标准解法

k expose deployment web --port=80 --target-port=80 --name=web-svc -n app
k get svc,endpoints -n app

验证点

  • Service 已创建
  • Endpoints 正常生成

模拟题 4:创建 ConfigMap 并挂载环境变量

题目

app 命名空间创建一个名为 app-config 的 ConfigMap,包含键值 ENV=prod,并让某个 Pod 读取该环境变量。

标准解法思路

  1. 先创建 ConfigMap
  2. 再生成 Pod YAML
  3. 手动补 env.valueFrom.configMapKeyRef
k create configmap app-config --from-literal=ENV=prod -n app
k run env-test --image=busybox:1.36 -n app --restart=Never --dry-run=client -o yaml -- sh -c 'env && sleep 3600' > pod.yaml

然后在 pod.yaml 中补:

env:
  - name: ENV
    valueFrom:
      configMapKeyRef:
        name: app-config
        key: ENV

应用后:

k apply -f pod.yaml
k exec -it env-test -n app -- env | grep ENV

模拟题 5:调度到指定节点

题目

给节点 node01 打上标签 disktype=ssd,然后创建一个 Pod,只允许它调度到该节点。

标准解法

k label node node01 disktype=ssd
k run pod-ssd --image=nginx --restart=Never --dry-run=client -o yaml > pod-ssd.yaml

在 YAML 中补:

spec:
  nodeSelector:
    disktype: ssd

然后:

k apply -f pod-ssd.yaml
k get pod pod-ssd -o wide

模拟题 6:创建 CronJob

题目

创建一个名为 date-cron 的 CronJob,每 5 分钟执行一次 date

标准解法

k create cronjob date-cron --image=busybox:1.36 --schedule="*/5 * * * *" -- date
k get cronjob

模拟题 7:RBAC 授权

题目

dev 命名空间创建一个 ServiceAccount 名为 app-sa,赋予它只读 Pod 的权限。

标准解法

k create namespace dev
k create serviceaccount app-sa -n dev
k create role pod-reader --verb=get,list,watch --resource=pods -n dev
k create rolebinding read-pods \
  --role=pod-reader \
  --serviceaccount=dev:app-sa \
  -n dev
k auth can-i list pods --as=system:serviceaccount:dev:app-sa -n dev

模拟题 8:PVC 挂载

题目

创建一个 1Gi 的 PVC,名称为 data-pvc,并让一个 nginx Pod 把它挂载到 /usr/share/nginx/html

标准解法思路

  1. 先写 PVC YAML
  2. 再写 Pod YAML
  3. volumesvolumeMounts

验证

k get pvc
k describe pvc data-pvc

模拟题 9:排查 Pod Pending

题目

某个 Pod 一直处于 Pending,请找出原因并修复。

标准解法模板

k describe pod <pod> -n <ns>

优先看:

  • FailedScheduling
  • requests 是否过大
  • taint / toleration
  • affinity
  • PVC

标准作答思路

  • 如果是资源不足,就调小请求或换可用节点
  • 如果是 taint 问题,就补 toleration
  • 如果是 selector / affinity 太严,就修改调度约束
  • 如果是 PVC,就排查存储绑定

模拟题 10:排查 CrashLoopBackOff

题目

某个 Pod 一直 CrashLoopBackOff,请排查并恢复服务。

标准解法模板

k logs <pod> -n <ns>
k logs <pod> -n <ns> --previous
k describe pod <pod> -n <ns>

高频原因

  • 启动命令错误
  • 配置文件错误
  • 环境变量缺失
  • 探针误杀
  • OOMKilled

模拟题 11:排查 Service 不通

题目

某 Service 已创建,但集群内访问失败,请定位问题。

标准解法模板

k get svc,endpoints -n <ns>
k get pod -o wide -n <ns>
k describe svc <svc> -n <ns>

检查顺序

  1. selector 是否匹配
  2. Pod 是否 Ready
  3. targetPort 是否正确
  4. NetworkPolicy 是否放通

模拟题 12:节点维护

题目

node01 标记为不可调度,驱逐其上业务 Pod,维护完成后重新恢复调度。

标准解法

k cordon node01
k drain node01 --ignore-daemonsets --delete-emptydir-data --force
k uncordon node01

模拟题 13:切换上下文后操作资源

题目

先切换到指定 context,再在目标 namespace 内完成资源修改。

标准解法

k config use-context <context-name>
k config set-context --current --namespace=<ns>

易错点

  • 忘记切 context
  • 在错误集群里做对了操作

模拟题 14:NetworkPolicy

题目

为某应用添加一条策略:默认拒绝 ingress,仅允许 team-a namespace 中带指定标签的 Pod 访问其 80 端口。

标准解法思路

  • 先写默认拒绝策略
  • 再写精确放通策略
  • 最后用临时 Pod 验证

模拟题 15:综合小题

题目

在指定命名空间中创建一个 Deployment、暴露 Service、挂 ConfigMap,并保证它只运行在带特定标签的节点。

这道题想训练什么

  • 一次串起工作负载、配置、网络、调度
  • 训练你在多步骤题目里的节奏控制

标准做题节奏

你以后做任何 CKA 模拟题,都建议用这个答题框架:

  1. 先看 context 和 namespace
  2. 再识别资源类型
  3. 优先生成 YAML 骨架
  4. 再补题目要求字段
  5. 最后验证结果

下一步怎么用

这页更适合:

  • 你已经懂大方向,开始做题
  • 想看“标准做法”而不是只看结论
  • 想把错误题型归类复盘

如果继续强化,最有效的方式是把这些题目逐个搬进本地集群实际做一遍。