k8s--基础--18.4--存储卷--类型--NFS
其他字段不懂通过explain来查看。
·
k8s–基础–18.4–存储卷–类型–NFS
1、介绍
1.1、 NFS概念
- NFS是一种基于TCP/IP传输的网络文件系统协议。
- 通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源
1.2、 注意
- nfs支持多个客户端挂载,可以在多创建几个pod,挂载同一个nfs服务器
- nfs如果宕机了,数据也就丢失了,需要使用分布式存储,常见的分布式存储有glusterfs和cephfs。
2、搭建NFS服务端
在master1上操作
参考资料
https://blog.csdn.net/zhou920786312/article/details/124919461
2.1、安装软件包
# 查看是否安装了 nfs-utils和rpcbind 软件包
rpm -q rpcbind nfs-utils
# 没有则用yum安装
yum install -y rpcbind nfs-utils
2.2、设置共享目录
2.2.1、创建共享目录
# 创建目录
mkdir /nfs/share -p
# 给与权限
chmod 777 /nfs/share
2.2.2、编辑配置文件
# vim /etc/exports
/nfs/share 192.168.187.0/24(rw,no_root_squash)
说明
- /nfs/share 允许192.168.187.0/24的客户端访问。
- rw:表示允许读写,ro表示为只读;
- no_root_squash:表示当客户机以root身份访问时赋予本地root权限
2.3、启动NFS服务程序
# 启动
systemctl start rpcbind.service
systemctl start nfs
# 开机自启动
systemctl enable rpcbind.service
# 开机自启动
systemctl enable nfs
2.4、查看rpcbind是否开启和本机发布的NFS共享目录
# 查看rpcbind是否开启,rpcbind服务默认使用111端口
netstat -anpt | grep rpcbind
# 宣告共享目录
exportfs -arv
# 查看本机发布的NFS共享目录
showmount -e
3、搭建NFS 客户端
- 在node1上操作
- 这里是为了测试,可以不做
- pod本质就是NFS客户端,这里搭建NFS客户端只是为了验证NFS服务端有没有搭建成功
https://blog.csdn.net/zhou920786312/article/details/124919461
3.1、安装软件包
# 查看是否安装rpcbind,nfs-utils
rpm -q rpcbind nfs-utils
# 未安装可以使用yum进行安装
yum install -y rpcbind nfs-utils
3.2、启动客户端
# 开启 rpcbind服务
systemctl start rpcbind
# 设置开机自启
systemctl enable rpcbind
3.3、手动挂载并查看是否成功
# 创建目录
mkdir /nfs-client-share
# 手动挂载
mount 192.168.187.154:/nfs/share /nfs-client-share
# 查看是否成功
df -Th | grep /nfs-client-share
4、创建有存储卷的pod
- 如果原先pod-nginx-volume.yaml已经被使用,需要先删除
- 在master1节点上操作
kubectl delete -f /root/test2/pod-nginx-volume.yaml
4.1、查看字段定义
# 其他字段不懂通过explain来查看
kubectl explain pods.spec.volumes.nfs
4.2、创建脚本
vi /root/test2/pod-nginx-volume.yaml
内容
apiVersion: v1
kind: Pod
metadata:
# pod的名称
name: pod-nginx-volume
spec:
containers:
- name: c-nginx
image: nginx:1.14
# 容器挂载存储卷
volumeMounts:
# 容器存储卷目录
- mountPath: /usr/share/nginx/html
# 引入名称为nginx-volume的存储定义
name: nginx-volume
# 设置存储卷定义
volumes:
# 存储卷类型
- nfs:
# nfs共享目录
path: /nfs/share
# nfs服务端地址
server: 192.168.187.154
# 存储卷名称
name: nginx-volume
4.3、执行
kubectl apply -f /root/test2/pod-nginx-volume.yaml
5、验证
5.1、查看pod在哪个节点上
kubectl get pods pod-nginx-volume -o wide
可以看到pod在node1上。
5.2、在容器存储卷目录 创建文件
kubectl -it exec pod-nginx-volume -c c-nginx -- /bin/sh
cd /usr/share/nginx/html
echo 'hello' > index.html
5.3、可以看到,nfs客户端和服务端都出现了index.html
5.3、访问pod
上面说明挂载nfs存储卷成功了
6、一个pod多个存储卷
6.1、nfs服务端配置修改
6.2、重启nfs服务端
# 重启
systemctl restart rpcbind.service
systemctl restart nfs
# 宣告共享目录
exportfs -arv
6.3、修改pod
apiVersion: v1
kind: Pod
metadata:
# pod的名称
name: pod-nginx-volume
spec:
containers:
- name: c-nginx
image: nginx:1.14
ports:
- containerPort: 80
protocol: TCP
# 容器挂载存储卷
volumeMounts:
# 容器存储卷目录
- mountPath: /usr/share/nginx/html
# 引入名称为nginx-volume的存储定义
name: nginx-volume
- name: c-tomcat
image: tomcat:8.5-jre8-alpine
ports:
- containerPort: 8080
protocol: TCP
# 容器挂载存储卷
volumeMounts:
# 容器存储卷目录
- mountPath: /tomcat
# 引入名称为nginx-volume2的存储定义
name: nginx-volume2
# 设置存储卷定义
volumes:
# 存储卷类型
- nfs:
# nfs共享目录
path: /nfs/share
# nfs服务端地址
server: 192.168.187.154
# 存储卷名称
name: nginx-volume
# 存储卷类型
- nfs:
# nfs共享目录
path: /nfs/share2
# nfs服务端地址
server: 192.168.187.154
# 存储卷名称
name: nginx-volume2
6.4、在容器c-nginx,c-tomcat的存储卷目录 创建文件
kubectl -it exec pod-nginx-volume -c c-nginx -- /bin/sh
cd /usr/share/nginx/html
echo 'hello1' > index.html
kubectl -it exec pod-nginx-volume -c c-tomcat -- /bin/sh
cd /tomcat
echo 'hello2' > index.html
6.5、在nfs服务端查看
更多推荐
所有评论(0)