NFS分布式存储与nfs
服务端操作
代码语言:javascript代码运行次数:0运行复制#服务端安装
yum install -y nfs-utils rpcbind
#启动服务 并设置开启启动
systemctl start rpcbind && systemctl enable rpcbind
systemctl start nfs-server && systemctl enable nfs-server
#创建共享目录
mkdir -p /root/data/nfs
#设置权限
chmod 666 /root/data/nfs
#修改 NFS 配置文件
vim /etc/exports
/root/data/nfs *(rw,sync,insecure,no_subtree_check,no_root_squash)
#载入配置
exportfs -rv
#查看 NFS 服务项 rpc 服务器注册的端口列表
rpcinfo -p localhost
#服务端看下是否正确加载了设置的 /etc/exports 配置
showmount -e localhost
#关闭防火墙
systemctl stop firewalld.service
客户端操作
代码语言:javascript代码运行次数:0运行复制#客户端安装
yum install -y nfs-utils
mkdir /nfs_share
#设置开机自动挂载
echo "10.0.2.21:/root/data/nfs /nfs_share nfs defaults 0 0" >> /etc/fstab
#客户端查看能否正常挂载 10.0.2.21 是nfs服务端ip
showmount -e 10.0.2.21
#客户端执行绑定目录注意:一定挂载根目录例如: /share
mount 10.0.2.21:/root/data/nfs /nfs_share
#客户端在/nfs_share里写入文件测试
静态PVC测试
代码语言:javascript代码运行次数:0运行复制#测试pod使用nfs存储
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv
namespace: test-ng
spec:
capacity:
storage: 1Gi # 你想要的存储大小
accessModes:
- ReadWriteMany # 允许多个节点读写
nfs:
path: /root/data/nfs # NFS 共享的路径
server: 10.0.2.21 # NFS 服务器地址
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
namespace: test-ng
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nfsdemo-v1
namespace: test-ng
labels:
app: nfsdemo
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: nfsdemo
version: v1
template:
metadata:
labels:
app: nfsdemo
version: v1
spec:
containers:
- name: nfsdemo
image: swr-north-4.myhuaweicloud/ddn-k8s/docker.io/nginx:stable-alpine
ports:
- containerPort: 80
volumeMounts:
- name: nfs-storage
mountPath: "/usr/share/nginx/html"# 容器内的挂载路径
volumes:
- name: nfs-storage
persistentVolumeClaim:
claimName: nfs-pvc
---
apiVersion: v1
kind: Service
metadata:
name: nfsdemo-service
namespace: test-ng
spec:
type: NodePort # 设置为 NodePort 类型
selector:
app: nfsdemo # 与 Deployment 中的 Pod 匹配的标签
ports:
- port: 80 # 服务的端口
targetPort: 80 # Pod 中容器的端口
安装nfs-subdir-external-provisioner
下载
代码语言:javascript代码运行次数:0运行复制
安装nfs-subdir-external-provisioner
代码语言:javascript代码运行次数:0运行复制kubectl create ns nfs-provisioner
helm install nfs-subdir-external-provisioner . \
--set storageClass.name=nfs-sc \
--set nfs.server=10.0.2.21 \
--set nfs.path=/root/data/nfs \
-n nfs-provisioner
注:需要替换国内镜像
代码语言:javascript代码运行次数:0运行复制swr-north-4.myhuaweicloud/ddn-k8s/registry.k8s.io/sig-storage/nfs-subdir-external-provisioner
卸载nfs-subdir-external-provisioner
代码语言:javascript代码运行次数:0运行复制helm uninstall nfs-subdir-external-provisioner \
-n nfs-provisioner
动态PVC测试
代码语言:javascript代码运行次数:0运行复制---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-claim
spec:
storageClassName: "nfs-sc"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: test-pod
image: swr-north-4.myhuaweicloud/ddn-k8s/docker.io/nginx:stable-alpine
volumeMounts:
- name: nfs-pvc
mountPath: "/usr/share/nginx/html"
volumes:
- name: nfs-pvc
persistentVolumeClaim:
claimName: test-claim
代码语言:javascript代码运行次数:0运行复制参考:
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-22,如有侵权请联系 cloudcommunity@tencent 删除externalnfs分布式存储服务端客户端
发布评论