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: v1
kind: ReplicationController
metadata:
name: frontend
spec:
replicas: 1
selector:
tier: frontend
template:
metadata:
labels:
app: app-demo
tier: frontend
spec:
containers:
- name: httpd-demo
image: httpd
volumeMounts:
- mountPath: /mydata-data
name: datavol
imagePullPolicy: IfNotPresent
volumes:
- name: datavol
emptyDir: {}
未完待续…..Volume功能很多