2、hostPathjava
hostPath Volume 的做用是将 Docker Host 文件系统中已存在的目录 mount 给 Pod 的容器。api
大部分应用都不会使用 hostPath Volume, 由于这实际上增长了 Pod 与节点的耦合,限制了 Pod 的使用。ide
不过那些须要访问 Kubernetes 和 Docker 内部数据的应用则须要使用 hostPath。spa
若是 Pod 被销毁了,hostPath 对应目录仍是会被保留,从这一点来看,hostPath 的持久性比 emptyDir 强。blog
不过一旦 H ost 崩溃, hostPath 也就没法访问了。部署
3、外部 Storage Providerit
若是 Kubernetes 部署在诸如 AWS、GCE、Azure 等公有云上,能够直接使用云硬盘做为 Volume。io
一个 AWS Elastic Block Store 的例子:ast
apiVersion: v1 kind: Pod metadata: name: using-ebs spec: containers: - image: busybox name: using-ebs volumeMounts: - mountPath: /test-rbs name: ebs-volume volumes: - name: ebs-volume awsElasticBlockStore: volumeID: <volume-id> fsType: ext4
要在 Pod 中使用 ESB volume,必须先在 AWS 中建立,而后经过 volume-id 引用。class
一个 Ceph 的例子:
apiVersion: v1 kind: Pod metadata: name: using-ceph spec: containers: - image: busybox name: using-ceph volumeMounts: - mountPath: /test-ceph name: ceph-volume volumes: - name: ceph-volume cephfs: path:/some/path/in/side/cephfs monitors:"10.16.154.78:6789" secretFile: "/etc/ceph/admin.secret"
Ceph 文件系统的 /some/path/in/side/cephfs 目录被 mount 到容器路径 /test-ceph。
* 相对于 emptyDir 和 hotPath,这些 Volume 类型的最大特色就是不依赖 Kubernetes。Volume 的底层基础设施由独立的存储系统管理,与 Kubernetes 集群是分离的。数据被持久化后,即便整个 Kubernetes 崩溃也不会受损。