网站首页 > 教程文章 正文
一、安装NFS服务:
1.1 服务器端
yum install -y nfs-utils rpcbind
sudo mkdir -p /data/nfs # 创建共享目录
sudo chmod 755 /data/nfs
sudo chown nfsnobody:nfsnobody /data/nfs # 设置权限
sudo vim /etc/exports
/data/nfs 192.168.1.0/24(rw,sync,no_root_squash,no_all_squash)
参数说明:
rw:读写权限。
sync:数据同步写入磁盘。
no_root_squash:允许 root 用户访问。
192.168.1.0/24:允许访问的客户端 IP 段。
systemctl enable --now rpcbind nfs-server
exportfs -ra # 重新加载配置
showmount -e # 显示共享目录
1.2 nfs客户端
dnf install -y nfs-utils
mount 192.168.1.100:/data/nfs /mnt # 服务器IP:共享路径 本地挂载点
编辑/etc/fstab 添加
192.168.1.100:/data/nfs /mnt nfs defaults 0 0
systemctl daemon-reload
mount -a # 挂载所有 fstab 中配置的文件系统
二、创建 NFS StorageClass
步骤 1:部署 NFS Client Provisioner
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.1.100 \
--set nfs.path=/data/nfs
步骤 2:创建 StorageClass
# sc-nfs.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-storage
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner
parameters:
pathPattern: "${.PVC.namespace}/${.PVC.name}"
onDelete: retain # 保留数据
kubectl apply -f sc-nfs.yaml
创建完成
三、创建nginx应用
3.1、声明pvc
# cat nginx-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs-client
kubectl apply -f nginx-pvc.yaml
会发现NFS服务器会自动创建一个文件夹
3.2 创建nginx应用关联使用nginx-pvc
# cat nginx-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: nfs-client
[root@master lap]# cat nginx-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: nginx-data
mountPath: /usr/share/nginx/html # 将PVC挂载到Nginx的网页文件目录
volumes:
- name: nginx-data
persistentVolumeClaim:
claimName: nginx-pvc # 关联之前创建的PVC
kubectl apply -f nginx-deploy.yaml
测试:
由上述可以知道 nginx容器内的 /usr/share/nginx/html 是挂载到nignx-pvc的
进入容器:
kubectl exec -it nginx-deployment-65f9b944d4-th6fz -- bash
cd /usr/share/nginx/html
touch 111.txt //创建文件等,可以到nfs 服务器查看目录是否有对应文件。
猜你喜欢
- 2025-07-28 在K8S中,volumeMounts用于指定容器内要挂载的卷及其挂载路径
- 2025-07-28 kubernetes基础知识之存储volume类型和emptyDir
- 2025-07-28 K8S YML配置详解(k8s deployment配置)
- 2025-07-28 K8s与OpenStack云计算融合技术分析报告
- 2025-07-28 K8S——Volumes详解(k8s 详解)
- 2025-07-28 深入理解K8s的Volume生命周期管理
- 2025-07-28 30分钟了解K8S(30分钟了解经济机器)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)