初始化

yum install -y nfs-utils 
systemctl enable --now nfs-server 
systemctl status nfs-server

添加了 NFS Subdir External Provisioner 的 Helm 仓库

helm repo add nfs-subdir-external-provisioner https://charts.helm.sh/incubator
helm repo list
helm repo update

安装

helm install nfs-client nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
  --set nfs.server=10.0.0.100 \
  --set nfs.path=/home/nfs \
  --set storageClass.name=nfs-storage

安装后检查

适用环境:yum(CentOS 8+ 应用 dnf)。文中命令按当时环境记录,新系统上请对照官方文档调整。 ⚠️ 安全提示:本文包含「chmod 777」等操作,属于内网/测试环境做法。公网机器请勿直接照搬 —— 正确做法是保留 SELinux 与防火墙,按需放行具体端口。

kubectl get pods -n kube-system

测试

chmod 777 /home/nfs
[root@4c8-k8s-all ~]$ cat nfs-ceshi.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-deployment
  namespace: default 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs
  template:
    metadata:
      labels:
        app: nfs
    spec:
      containers:
      - name: nfs-container
        image: alpine
        command: ["/bin/sh", "-c", "while true; do sleep 30; done;"] 
        volumeMounts:
        - mountPath: /mnt/nfs
          name: nfs-storage
      volumes:
      - name: nfs-storage
        nfs:
          server: 10.0.0.100
          path: /home/nfs

kubectl exec -it nfs-deployment-6c4f87ffcd-tsbts -- /bin/sh
touch /mnt/nfs/test-file
ls /mnt/nfs

ls能出来东西就说明是成功的

使用 Helm 安装 NFS 存储

步骤 1:安装 Helm

如果还没有安装 Helm,可以参考官方文档进行安装:Helm 安装文档

步骤 2:添加 Helm 仓库

首先,添加 appstore 仓库来获取 nfs-subdir-external-provisioner 和 nfs-server 的 Helm Chart。

helm repo add appstore https://charts.grapps.cn
helm repo update appstore

步骤 3:部署 nfs-server

使用 Helm 安装 nfs-server,它将作为 NFS 服务器提供存储服务。

helm install nfs-server appstore/nfs-server --version 1.1.2

在执行此命令时,nfs-server 会被部署到你的 Kubernetes 集群中。你可以根据需求定制安装参数(如 NFS 存储路径等)。安装后,检查 NFS 服务器的状态:

kubectl get pods
kubectl get svc

步骤 4:部署 nfs-subdir-external-provisioner

接下来,安装 nfs-subdir-external-provisioner,它是一个外部存储类,可以使用 NFS 提供动态存储。

helm install nfs-subdir-external-provisioner appstore/nfs-subdir-external-provisioner --version 4.0.9

安装时,你可能需要自定义一些参数,如 NFS 服务器地址和共享路径。例如,你可以通过 --set 来设置这些参数:

helm install nfs-subdir-external-provisioner appstore/nfs-subdir-external-provisioner --version 4.0.9 \
  --set nfs.server=<NFS_SERVER_IP> \
  --set nfs.path=<NFS_SHARE_PATH>

步骤 5:验证安装

确保两个服务都已成功启动,并且相关的 PVC 也能正常工作。通过以下命令检查 Pod 和 Service 状态:

kubectl get pods -n default
kubectl get svc -n default

如果你想创建 PVC 并且让 nfs-subdir-external-provisioner 动态供给存储,可以创建一个 PVC 来测试是否工作正常。例如:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  storageClassName: nfs-client

步骤 6:使用动态存储

在部署应用时,使用 PVC 来动态挂载存储。例如,以下是一个示例部署,它使用了 nfs-pvc

yaml复制apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-test-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-test
  template:
    metadata:
      labels:
        app: nfs-test
    spec:
      containers:
      - name: nfs-test
        image: busybox
        volumeMounts:
        - mountPath: /mnt/data
          name: nfs-storage
      volumes:
      - name: nfs-storage
        persistentVolumeClaim:
          claimName: nfs-pvc
0 子项 · 2 次浏览 · 2026-09-24