1,Volume介绍

默认情况下容器的数据是非持久化的,容器消亡以后数据也会跟着丢失,这就带来了一系列的问题,第一,当一个容器损坏之后,kubelet会重启这个容器,但是文件会丢失-这个容器会是一个全新的状态,第二,当很多容器在同一Pod中运行的时候,很多时候需要数据文件的共享。Kubernete Volume解决了这个问题

Volume 是 Pod 中能够被多个容器访问的共享目录。Kubernetes 的 Volume 概念、用途和目的与 Docker 的 Volume 比较类似,但两者不能等价首先,Kubernetes 中的 Volume 定义在 Pod 上, 然后被一个 Pod 里的多个容器挂载到具体的文件目录下;其次, Kubernetes 中的 Volume 与 Pod 的生命周期相同,但与容器声明周期不相关,当容器中止或者启动时,Volume 中的数据也不会丢失,Kubernetes 支持多种类型的 Volume,例如 GlusterFS、Ceph 等先进的分布式文件存储。 Volume 的使用也比较简单,在大多数情况下,先在 Pod 上声明一个 Volume,然后在容器里引用该 Volume 并 Mount 到容器里的某个目录上

2,示例

要给之前的 Tomcat Pod 增加一个名字为 datavol 的 Volume,并且 Mount 到容器器的 /mydata-data 目 录上,则只要对 Pod 的定义文件做如下修改即可

  1. apiVersion: v1
  2. kind: ReplicationController
  3. metadata:
  4. name: frontend
  5. spec:
  6. replicas: 1
  7. selector:
  8. tier: frontend
  9. template:
  10. metadata:
  11. labels:
  12. app: app-demo
  13. tier: frontend
  14. spec:
  15. containers:
  16. - name: httpd-demo
  17. image: httpd
  18. volumeMounts:
  19. - mountPath: /mydata-data
  20. name: datavol
  21. imagePullPolicy: IfNotPresent
  22. volumes:
  23. - name: datavol
  24. emptyDir: {}

未完待续…..Volume功能很多