Kubernetes 有状态工作负载管理全解析
1. 持久卷挂载与持久卷声明抽象
在容器化应用中,我们常常需要将持久磁盘挂载到容器内,以持久化应用数据。例如,为了持久化 Tomcat 应用日志,我们可以将 GCE 持久磁盘挂载到 /usr/local/tomcat/logs
目录:
name: tomcat-log
volumes:
- name: tomcat-log
gcePersistentDisk:
pdName: gce-pd-1
fsType: ext4
不过,直接在配置文件中指定持久卷会使应用与特定基础架构紧密耦合。为了解决这个问题,Kubernetes 引入了持久卷声明(PVC)这一抽象层。通过 PVC,我们可以将 Pod 与持久卷解耦,只需要指定卷名和挂载点即可。以下是具体操作步骤:
1. 创建持久卷(PV) :
$ cat pv-gce-pd-1.yml
apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: pv-1
spec:
storageClassName: "my-10g-pv-1"
capacity:
storage: "10Gi"
accessModes:
- "ReadWriteOnce"
gcePersistentDisk:
fsType: "ext4"
pdName: "gce-pd