以 MySQL 为例实现 K8S 容器的持久化挂载
步骤如下:
第一步 定义物理底座:PersistentVolume (PV)
1 | apiVersion: v1 |
第二步 提交存储申请:PersistentVolumeClaim (PVC)
1 | apiVersion: v1 |
第三步 在 Pod 中引用存储:Volumes
1 | volumes: |
第四步 最终挂载进容器:VolumeMounts
1 | volumeMounts: |
当 MySQL 往容器里的 /var/lib/mysql 写数据时,这些数据会通过 PVC 和 PV,直接写到你宿主机的 /mnt/host/f/.../mysql-live 目录中
注意:
权限问题:由于使用的是
hostPath,要确保宿主机的/mnt/host/f/.../mysql-live目录具有可读写权限,否则 MySQL 容器启动时可能会因为无法初始化数据文件而报错(CrashLoopBackOff)。Node 限制:
hostPath意味着 Pod 如果漂移到其他节点(Node),数据就找不到了。在单机开发环境(如 Docker Desktop 或 Minikube)中这没问题,但在多节点集群中,通常会使用云存储(如 AWS EBS, NFS 等)。