PS: 我主要讲常用几种存储方式,分别是pv/pvc,emptyDir与hostPath, nfs原生直接挂载。更多存储方式请查看k8s官网。
1、pv和pvc方式,也是最常用的存储方式
//yaml中使用 volumeMounts: - name: logs-volume mountPath: /data/xxx/logs #mount_dir volumes: - name: logs-volume persistentVolumeClaim: claimName: xxxx-pvc #pvc_name
2、hostPath / emptyDir(节点存储卷)
emptyDir与hostPath属于节点级别的卷类型,emptyDir的生命周期与Pod资源相同,而使用了hostPath卷的Pod一旦被重新调度至其他节点,那么它将无法在使用此前的数据。如果要持久化数据还得用nfs网络存储,ceph分布式存储等
//yaml中使用 = hostPath volumeMounts: - name: nginx-time mountPath: /etc/localtime volumes: - name: nginx-time hostPath: path: /etc/localtime //yaml中使用 = emptyDir volumeMounts: - name: nginx-acc-log mountPath: /var/log/nginx volumes: - name: nginx-acc-log emptyDir: {}
3、nfs直接挂载,k8s是原生支持nfs直接挂载的。
// yaml中使用 volumeMounts: - name: jenkins-home mountPath: /var/jenkins_home volumes: - name: jenkins-home nfs: server: 192.168.136.144 #nfs服务主机IP或主机名 path: /data/nfs_vl/jenkins #挂载的目录 readOnly: false #是否以只读方式挂载