文章目录
- Kubernetes 存储实战:NFS PV/PVC、ConfigMap 与探针测试(最终版)
- 目录
- 1. 环境信息回顾
- 1.1 集群信息
- 1.2 节点规划
- 1.3 NFS 存储信息
- 2. 核心概念回顾
- 2.1 PV、PVC 与 StorageClass
- 2.2 NFS 存储
- 2.3 ConfigMap 与 Secret
- 2.4 探针(Probe)
- 3. 准备工作
- 3.1 所有 K8s 节点安装 NFS 客户端
- 3.2 NFS 服务器上创建应用目录
- 3.3 镜像准备与导入(离线环境关键步骤)
- 4. 命名空间与静态 PV/PVC
- 4.1 创建命名空间
- 4.2 创建静态 PV 与 PVC(MySQL 方案 A 使用)
- 5. 部署 Nginx 无状态应用
- 5.1 创建 ConfigMap
- 5.2 创建 Deployment
- 5.3 创建 Service
- 5.4 部署与验证
- 6. 部署 MySQL 有状态应用
- 6.1 创建 MySQL ConfigMap
- 6.2 创建 Secret(密码管理)
- 6.3 方案 A:单实例 + 静态 PVC(推荐先做,简单可靠)
- 6.4 方案 B:多副本 + 动态供给(扩展,需 Provisioner)
- 6.4.1 部署 NFS Subdir External Provisioner
- 6.4.2 使用动态供给的 StatefulSet
- 6.5 方案 A 与方案 B 对比
- 7. 持久化测试
- 7.1 单实例静态 PVC 验证(方案 A)
- 7.2 多副本动态供给验证(方案 B)
- 7.3 Nginx 无状态验证(反向对照)
- 8. 探针测试
- 8.1 Nginx 探针测试
- 8.1.1 测试 readinessProbe(就绪探针)
- 8.1.2 测试 livenessProbe(存活探针)
- 8.2 MySQL 探针测试
- 8.2.1 测试 readinessProbe
- 8.2.2 测试 livenessProbe
- 8.2.3 测试 startupProbe(保护慢启动)
- 8.3 探针测试记录表(交付时填写)
- 9. 扩容、优化与备份
- 9.1 扩容
- 9.1.1 无状态应用水平扩缩容
- 9.1.2 有状态应用扩展
- 9.2 优化建议
- 9.2.1 调度与高可用
- 9.2.2 资源配置
- 9.2.3 安全加固
- 9.2.4 存储优化
- 9.3 备份策略
- 9.3.1 手动备份(测试/应急)
- 9.3.2 定时备份 CronJob(推荐)
- 10. 回滚与清理 SOP
- 10.1 回滚
- 10.1.1 应用版本回滚(Deployment / StatefulSet)
- 10.1.2 ConfigMap / Secret 配置回滚
- 10.1.3 MySQL 数据回滚(从备份恢复)
- 10.2 清理(四个场景)
- 场景一:仅删除应用,保留数据与存储(最常见)
- 场景二:删除应用 + PVC(数据仍在 NFS,因 PV 为 Retain)
- 场景三:彻底清理(含 PV 与命名空间)
- 场景四:清理 NFS 数据(⚠️ 不可恢复,务必先确认已备份)
- 11. 排障手册
- 11.1 排障:Pod
- 11.1.1 Pod 状态速查表
- 11.1.2 Pending —— 调度不上去
- 11.1.3 ContainerCreating —— 卷挂载失败(NFS 高频坑)
- 11.1.4 ImagePullBackOff —— 离线镜像问题
- 11.1.5 CrashLoopBackOff —— 应用反复崩溃
- 11.1.6 CreateContainerConfigError —— ConfigMap/Secret 引用错误
- 11.1.7 OOMKilled / Evicted —— 资源问题
- 11.1.8 Running 但 NotReady —— 就绪探针失败
- 11.1.9 Terminating 卡住
- 11.2 排障:PV/PVC
- 11.3 排障:NFS
- 11.4 排障:ConfigMap / Secret
- 11.5 排障:探针(Probe)
- 11.6 排障:Service / Endpoints
- 11.7 排障:网络(CNI / Calico)
- 11.8 排障命令速查表
- 12. 交付物 SOP
- 12.1 清单文件索引
- 12.2 部署 SOP
- 12.3 验收检查表
- 12.4 日常运维要点
- 13. 总结
- 附录 A:清单文件索引
Kubernetes 存储实战:NFS PV/PVC、ConfigMap 与探针测试(最终版)
适用环境:Kubernetes v1.24.17(三主两从 HA)+ containerd 1.6.21 + CentOS 7 离线部署 + NFS 存储
统一命名空间:storage-lab
核心结论先行:Nginx 是无状态应用(Deployment + ConfigMap + 探针,不依赖持久化);MySQL 是有状态应用(StatefulSet + PVC + NFS,数据必须持久化)。
目录
- 1. 环境信息回顾
- 2. 核心概念回顾
- 3. 准备工作