前文总结了emptyDir和hostpath两种从0开始搞K8S:存储卷,这篇了解一下nfs存储卷
在Kubernetes中直接将NFS存储卷使用在Pod中,可以通过定义Pod的YAML配置文件来实现。以下是一个详细的步骤和示例,帮助你了解如何在Pod中直接使用NFS存储卷:
配置NFS服务器
具体参考从0开始搞K8S:PV
在Kubernetes集群中配置NFS客户端
在k8s集群的所有node节点上安装nfs客户端,这是必须的,k8s并没有内置nfs挂载功能。
Ubuntu
sudo apt install -y nfs-common
CentOS
yum install -y nfs-utils
定义Pod的YAML配置文件
创建一个Pod的YAML配置文件,例如pod-with-nfs.yaml
,并定义以下内容:
apiVersion: v1
kind: Pod
metadata:
name: pod-with-nfs
spec:
containers:
- name: my-container
image: busybox
command: ["/bin/sh", "-c", "sleep 600"]
volumeMounts:
- name: nfs-volume
mountPath: /mnt/nfs
volumes:
- name: nfs-volume
nfs:
server: 192.168.0.190 # 替换为NFS服务器的IP地址
path: /opt/nfs/data # 替换为NFS服务器上共享的目录路径
readOnly: false # 根据需要设置只读或读写
在上面的配置中,volumeMounts
部分定义了容器内部挂载NFS存储卷的目录(/mnt/nfs
),而volumes
部分则指定了NFS服务器的地址(server
)和共享的目录路径(path
)。
使用kubectl
命令应用Pod的YAML配置文件,以创建Pod并挂载NFS存储卷:
kubectl apply -f pod-with-nfs.yaml
如果Pod创建成功,并且NFS存储卷已成功挂载到容器中,则你可以在容器内部通过/mnt/nfs
目录访问NFS存储卷中的数据。
验证
在nfs上创建文件
date > /opt/nfs/data/now
查看pod内文件
kubectl exec pod-with-nfs -- cat /mnt/nfs/now
注意事项
- 确保NFS服务器的IP地址和共享的目录路径在Pod的YAML配置文件中正确无误。
- 如果NFS服务器需要身份验证,你可能需要在Pod的YAML配置文件中添加相应的身份验证信息。
- NFS存储卷的内容在Pod被删除时不会被删除,而是被卸载。这意味着你可以预先在NFS服务器上填充数据,并在多个Pod之间共享这些数据。
- NFS支持多个客户端同时挂载同一个共享目录,因此你可以创建多个Pod并挂载同一个NFS存储卷。但是,如果NFS服务器宕机,数据将会丢失,因此建议在使用NFS作为存储解决方案时考虑备份和容灾措施。