使用存储卷的步骤:
1 定义pod的volume,这个volume要指明关联到那个存储。
2 容器中要使用的volume mounts 挂载存储。
临时存储
使用临时存储,在pod生命周期结束后,数据就会消失。
kubectl explain pod.spec.volumes
emptyDir
可以通过查看官方样例。
样例:
apiVersion: v1
kind: Pod
metadata:
name: test-tmpdir
spec:
containers:
- name: test-tmpdir
image: nginx
volumeMounts:
# 挂载存储
- mountPath: /tmpdir
name: test-vol
# 指定需要关联的存储
volumes:
- name: test-vol
emptyDir: {}
查看pod的uid
kubectl get pod test-tmpdir -o yaml| grep uid
根据uid查看pod所在node节点的文件目录
持久化存储
hostpath
是指Pod挂载在宿主机的目录或文件。
样例:
apiVersion: v1
kind: Pod
metadata:
name: test-host
spec:
containers:
- name: test-host
image: nginx
volumeMounts:
- mountPath: /tmpdir
name: test-vol1
volumes:
- name: test-vol1
hostPath:
path: /tmpdir
# 不存在创建文件夹
type: DirectoryOrCreate
pod删除后node节点文件内容不会被删除
nfs:
NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件.
# 安装NFS服务(在所有K8S的节点都需要安装)
yum install -y nfs-utils
# 创建共享目录
mkdir -p /opt/nfs
# 编写NFS的共享配置
vi /etc/exports
# 内容如下:
/opt/nfs/jenkins *(rw,no_root_squash) *代表对所有IP都开放此目录,rw是读写
# 启动服务
ystemctl enable nfs 开机启动
systemctl start nfs 启动
# 更新nfs配置
exportfs -arv
# 查看NFS共享目录
showmount -e nfsServerIP
样例:
apiVersion: v1
kind: Pod
metadata:
name: test-nfs
spec:
containers:
- name: test-nfs
image: nginx
volumeMounts:
- mountPath: /tmpdir
name: test-vol2
volumes:
- name: test-vol2
nfs:
# 填写nfs信息
path: /opt/nfs
server: 192.168.241.191