kubernetes学习 数据管理 Volume (二)

2、hostPathjava

  hostPath Volume 的做用是将 Docker Host 文件系统中已存在的目录 mountPod 的容器。api

  大部分应用都不会使用 hostPath Volume, 由于这实际上增长了 Pod 与节点的耦合,限制了 Pod 的使用。ide

  不过那些须要访问 KubernetesDocker 内部数据的应用则须要使用 hostPathspa

  若是 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。

  * 相对于 emptyDirhotPath,这些 Volume 类型的最大特色就是不依赖 KubernetesVolume 的底层基础设施由独立的存储系统管理,与 Kubernetes 集群是分离的。数据被持久化后,即便整个 Kubernetes 崩溃也不会受损。

相关文章
相关标签/搜索