K8s 使用 NFS 动态制备 PV

安装 nfs-server

# 选择一台机器安装nfs服务,此处机器的IP为:192.168.1.29
# 安装 nfs-utils,每个节点都要安装nfs-utils程序,但只在nfs节点起server服务
yum install -y nfs-utils
systemctl enable --now nfs-server
systemctl status nfs-server

# 准备 nfs 的共享目录
ll /mnt/
mkdir -p /mnt/nfs_share
cat /etc/exports
chmod 777 /mnt/nfs_share
chown -R nobody:nobody /mnt/nfs_share
ls -lh /mnt/

# 编辑 nfs 配置文件
vim /etc/exports
cat /etc/exports
/mnt/nfs_share 192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)

# 应用配置
exportfs -arv
exportfs -v
systemctl restart nfs-server

安装 nfs-subdir-external-provisioner

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=x.x.x.x \
    --set nfs.path=/exported/path \
    --namespace nfs-provisioner \
    --create-namespace

helm list --all-namespaces

使用

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-dyn-10m-pvc

spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany

  resources:
    requests:
      storage: 10Mi

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nfs-dyn-pod

spec:
  volumes:
  - name: nfs-dyn-10m-vol
    persistentVolumeClaim:
      claimName: nfs-dyn-10m-pvc

  containers:
    - name: nfs-dyn-test
      image: nginx:latest
      imagePullPolicy: IfNotPresent
      ports:
      - containerPort: 80
      volumeMounts:
        - name: nfs-dyn-10m-vol
          mountPath: /tmp

创建

kubectl create -f pvc.yaml
kubectl create -f pod.yaml

Last updated