部署与滚动更新
和 Docker 一样,K8s 的容器也是临时的,持久数据要用存储卷。K8s 抽象出 PVC(持久卷声明):你声明"要 10G 存储",K8s 自动分配。
存储体系
- emptyDir:Pod 内临时共享目录(数据随 Pod 消失)
- hostPath:宿主机目录(单机测试用)
- PVC + PV:持久存储(生产,云盘/NFS/本地卷)
使用
声明 PVC(申请存储)→ Deployment 里 volumeClaimTemplates 或 volumes 引用 → 容器挂载到路径。
代码示例
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
# Deployment 挂载
# spec:
# template:
# spec:
# volumes:
# - name: data
# persistentVolumeClaim:
# claimName: mysql-data
# containers:
# - name: mysql
# volumeMounts:
# - name: data
# mountPath: /var/lib/mysql
kubectl apply -f pvc.yaml
kubectl get pvc