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 的定义文件做如下修改即可
apiVersion: v1kind: ReplicationControllermetadata:name: frontendspec:replicas: 1selector:tier: frontendtemplate:metadata:labels:app: app-demotier: frontendspec:containers:- name: httpd-demoimage: httpdvolumeMounts:- mountPath: /mydata-dataname: datavolimagePullPolicy: IfNotPresentvolumes:- name: datavolemptyDir: {}
未完待续…..Volume功能很多
