为什么需要数据卷
容器中的文件在磁盘上是临时存在,这给容器中运行一些重要的程序的时候有影响
- 问题1: 当容器升级或者崩溃的时候,kubelet会重建容器,容器内的文件丢失
- 问题2: 一个容器中运行多个容器,可能需要文件共享
k8s的卷(volumn)这一抽象概念可以解决这个问题
常用的数据卷类型
- 节点本地 hostPath emptyDir
- 网络 NFS Ceph ClusterFs
- 公有云 AWS EBS
- k8s资源 configMap Secret
emptyDir卷类型
emptyDir是一个临时存储卷,与pod的生命周期绑在一起,删除pod,emptyDir卷也会被随之删除。
应用场景: pod容器之间数据共享
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: write
image: centos
command: ["bash","-c","for i in {1..100};do echo $i >> /data/hello;sleep 1;done"]
volumeMounts:
- name: data
mountPath: /data
- name: read
image: centos
command: ["bash","-c","tail -f /data/hello"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
emptyDir: {}
寻找emptyDir在宿主机上挂载的位置的方式:
1、查看pod分布在哪个节点上
# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
test 2/2 Running 0 64s 10.244.169.141 k8s-node2 <none> <none>
2、到相应的节点查看docker 容器
# docker ps -a |grep "podName"
3、查看挂载目录