NFS数据卷
- NFS数据卷提供对NFS挂载支持,可以自动将NFS共享路径挂载到pod中。
- NFS数据卷
NFS 安装
每台node上都需要安装nfs-utils
[root@k8s-master ~]# yum install nfs-utils -y
[root@k8s-node2 kubernets]# vim /etc/exports # 挂载的目录在node2节点上
/ifs/kubernetes *(rw,no_root_squash) # /ifs/kubernetes:表示将本地目录共享出去。 *:表示所有IP可以访问,可以指定网段或单个IP地址。rw:表示对这个共享目录可读可写。 no_root_squash
:表示以root的模式进行工作
[root@k8s-node2 kubernets]# systemctl start nfs
[root@k8s-node2 kubernets]# systemctl enable nfs
[root@k8s-node2 ~]# mkdir /ifs/kubernetes -p
[root@k8s-node2 kubernetes]# touch a
[root@k8s-node1 ~]# mount -t nfs 192.168.153.182:/ifs/kubernetes /mnt #测试挂载
[root@k8s-node1 ~]# cd /mnt/
[root@k8s-node1 mnt]# ls # 查看到mnt目录下有a文件,说明挂载成功
[root@k8s-node1 ~]# umount /mnt/ # 卸载挂载
NFS 案例
创建NFS.yaml
将网站程序通过NFS数据卷挂载,实现所有pod都能使用
[root@k8s-master ~]# kubectl create deployment web --image=nginx --dry-run=client -o yaml > NFS.yaml
[root@k8s-master ~]# vim NFS.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: ce
name: web
spec:
replicas: 3
selector:
matchLabels:
app: ce
template:
metadata:
labels:
app: ce
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: release
mountPath: /usr/share/nginx/html
volumes:
- name: release
nfs:
server: 192.168.153.182
path: /ifs/kubernetes
[root@k8s-master ~]# kubectl apply -f NFS.yaml
验证NFS挂载是否成功
验证容器和NFS间是否互通
[root@k8s-master ~]# kubectl exec -it web-5c4d9759-4lpg2 -- bash
root@web-5c4d9759-4lpg2:~# ls /usr/share/nginx/html/ #NFS挂载目录下存在的a文件在容器中也存在
a
root@web-5c4d9759-4lpg2:/usr/share/nginx/html# touch b.txt
root@web-5c4d9759-4lpg2:/usr/share/nginx/html# ls
a b.txt
root@web-5c4d9759-4lpg2:/usr/share/nginx/html# exit
[root@k8s-master ~]# kubectl exec -it web-5c4d9759-b9lch -- bash #换另一个副本进入容器中查看有没有a和b.txt文件
root@web-5c4d9759-b9lch:/# ls /usr/share/nginx/html/
a b.txt
[root@k8s-node2 kubernetes]# ls # 到node2节点上查看NFS挂载目录下创建的b.txt文件是否存在
a b.txt
[root@k8s-node2 kubernetes]# echo "<h1>Hello 长城</h1>" >> index.html
[root@k8s-master ~]# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
feng 1/1 Running 1 (<invalid> ago) 2d20h 10.244.169.162 k8s-node2 <none> <none>
test 2/2 Running 2 (<invalid> ago) 3d 10.244.36.9