📘 Day 30:全真模拟考试
🎯 今日目标
在严格限时的模拟比赛环境中,完成一套完整试卷,检验 30 天学习成果。
📋 考试规则
| 项目 |
要求 |
| 考试时长 |
180 分钟(3 小时) |
| 总分 |
100 分 |
| 及格线 |
60 分 |
| 优秀线 |
85 分 |
| 环境 |
3 节点 K8s 集群(已就绪) |
| 允许参考 |
个人速查手册(不允许联网搜索) |
| 提交物 |
所有 YAML 文件 + 验证命令输出 |
📝 全真模拟试卷
第一部分:集群运维(15 分,25 分钟)
题目 1.1(5 分)
题目 1.2(5 分)
题目 1.3(5 分)
第二部分:工作负载编排(25 分,45 分钟)
题目 2.1:StatefulSet 数据库集群(10 分)
1 2 3 4 5 6 7 8
| 部署一个 redis 集群: - 名称:redis-cluster - 副本数:3 - 镜像:redis:7-alpine - 启动命令:redis-server --appendonly yes --cluster-enabled yes - Headless Service:redis-cluster-svc(端口 6379) - 每个 Pod 独立 PVC:200Mi - 限制资源:cpu 200m, memory 256Mi
|
题目 2.2:Deployment 应用层(10 分)
1 2 3 4 5 6 7 8 9
| 部署一个 API 服务: - 名称:api-gateway - 镜像:nginx:alpine - 副本数:4 - 滚动策略:maxSurge=1, maxUnavailable=0 - livenessProbe: HTTP GET /health, 端口 80 - readinessProbe: HTTP GET /ready, 端口 80 - 资源:requests cpu=100m mem=128Mi, limits cpu=300m mem=256Mi - Service:ClusterIP,端口 80
|
题目 2.3:DaemonSet + CronJob(5 分)
1 2 3 4
| - DaemonSet node-monitor:busybox:1.36,每 10 秒输出主机名和时间 - CronJob cluster-health:每 5 分钟检查一次 DNS 解析, 命令:nslookup kubernetes.default 保留最近 3 个成功的 Job
|
第三部分:网络配置(20 分,35 分钟)
题目 3.1:Ingress 路由(10 分)
1 2 3 4 5
| 创建 Ingress 规则,路由到题 2.2 的 api-gateway: - 域名:api.exam.com - /v1/stats → api-gateway:80/stats - /v1/health → api-gateway:80/health - 配置 rewrite-target 注解
|
题目 3.2:NetworkPolicy 网络隔离(10 分)
1 2 3 4 5 6
| 在 exam 命名空间中创建网络策略: - 默认拒绝所有入站流量 - 允许 Ingress Controller → api-gateway:80 - 允许 api-gateway → redis-cluster:6379 - 允许所有 Pod → CoreDNS(kube-system, UDP 53) - 验证:从 api-gateway 可访问 redis,从外部 Pod 不可访问
|
第四部分:存储与配置(20 分,35 分钟)
题目 4.1:配置管理(8 分)
1 2 3 4 5 6 7
| - ConfigMap api-config: LOG_LEVEL=info, MAX_CONNECTIONS=500, TIMEOUT=30s - Secret api-secret: DB_PASSWORD=exam-secret-2024, JWT_KEY=jwt-key-exam - 修改 Deployment api-gateway: envFrom 注入 api-config valueFrom 注入 DB_PASSWORD → DATABASE_PASSWORD
|
题目 4.2:持久存储(12 分)
1 2 3 4 5 6
| - 创建 hostPath PV pv-exam(容器 2Gi, RWO, /data/exam-pv) - 创建 PVC pvc-exam(请求 1Gi, RWO) - 验证 PV 和 PVC 绑定 - 创建一个 Pod exam-storage 挂载 pvc-exam 到 /data: 写入验证文件 /data/exam.txt 删除 Pod 后验证文件仍存在
|
第五部分:安全与调度(20 分,40 分钟)
题目 5.1:RBAC(10 分)
1 2 3 4 5 6 7 8 9
| 创建以下权限体系: - SA exam-admin:对 exam 命名空间全部权限 - SA exam-developer:对 Pod/Deploy/Service/ConfigMap 有 get/list/watch/create/update 权限 对 Secret 和 Pod/log 只有 get/list 权限 - SA exam-viewer:只读所有(get/list/watch)
每个 SA 创建对应的 Role + RoleBinding 验证:kubectl auth can-i --as=... 测试权限差异
|
题目 5.2:安全与调度(10 分)
1 2 3 4 5 6 7 8
| 修改 Deployment api-gateway 添加: - SecurityContext: runAsUser: 1001, runAsNonRoot: true allowPrivilegeEscalation: false drop ALL capabilities - PodAntiAffinity: 同 app=api-gateway 的 Pod 不在同一节点 - topologySpreadConstraints: 按 hostname 均匀分布 - HPA: CPU 60%, min 2, max 8
|
📊 评分卡
| 部分 |
题目 |
满分 |
得分 |
| 第一部分 |
集群运维 |
15 |
|
| 第二部分 |
工作负载编排 |
25 |
|
| 第三部分 |
网络配置 |
20 |
|
| 第四部分 |
存储与配置 |
20 |
|
| 第五部分 |
安全与调度 |
20 |
|
| 总分 |
|
100 |
|
🏁 考后总结
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 得分:____ / 100 用时:____ 分钟
各模块得分情况: - 集群运维:____ / 15 - 工作负载编排:____ / 25 - 网络配置:____ / 20 - 存储与配置:____ / 20 - 安全与调度:____ / 20
失分分析: 1. 最薄弱的模块:________ 2. 主要失分原因:________ 3. 时间分配是否合理?________
赛后提升计划: 1. ________ 2. ________ 3. ________
|
🎉 30 天学习完成
恭喜完成 Kubernetes 容器云 30 天学习计划!
1 2 3 4 5 6 7 8 9
| 回顾这段旅程: - M1: 从零搭建了 K8s 集群 - M2: 掌握了 5 种工作负载 - M3: 构建了完整网络架构 - M4: 管理了配置和持久存储 - M5: 实现了智能调度和资源管理 - M6: 加固了集群安全 - M7: 建立了监控和排错体系 - M8: 完成了 8 套赛题模拟
|
后续建议
- 赛前 3 天:每天做一套限时模拟,保持手感
- 赛前 1 天:回顾速查手册,不再学新内容
- 比赛当天:先通读全部题目,按难度分配时间
- 长期:考取 CKA/CKAD 认证,深入源码和 Operator 开发