nfs-client-provisioner 的安装部署与绑定 PVC 的步骤如下:
安装 NFS 服务器:在一台 Linux 机器上安装并配置 NFS 服务器,创建共享目录,并确保能够访问该共享目录。
安装 Helm:使用 Helm 来管理 Kubernetes 应用程序。可以参考 Helm 官方文档进行安装。
创建 ServiceAccount 和 ClusterRoleBinding:在 Kubernetes 中为 nfs-client-provisioner 创建一个服务账户和集群角色绑定,以便它可以访问 API Server 和 NFS 服务器。可以通过以下命令来创建:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/rbac.yaml
- 配置 nfs-client-provisioner 并安装:将 nfs-client-provisioner 的配置文件存储到本地,并修改其中的参数(比如 NFS 服务器的 IP 地址和共享目录路径),然后执行以下命令来安装 nfs-client-provisioner:
helm install --name my-nfs-client-provisioner stable/nfs-client-provisioner -f values.yaml
- 验证 nfs-client-provisioner 是否已经成功运行:可以通过以下命令来查看是否已经运行:
kubectl get pods
- 创建 StorageClass:为了使得 PVC 能够动态地调度 PV,需要创建一个 StorageClass。可以使用以下 YAML 文件来创建一个名为 “my-nfs” 的 StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: my-nfs
provisioner: my-nfs-client-provisioner
parameters:
archiveOnDelete: "false"
mountOptions: ""
nfsServer: <NFS_SERVER_IP>
nfsPath: <NFS_SHARED_PATH>
reclaimPolicy: Delete
volumeBindingMode: Immediate
- 创建 PVC:可以使用以下 YAML 文件来创建一个名为 “my-pvc” 的 PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: my-nfs
- 验证 PVC 和 PV 的绑定情况:验证 PVC 是否与自动创建的 PV 绑定成功。可以使用以下命令来查看:
kubectl get pvc
kubectl get pv
如果以上步骤都执行成功,则说明 nfs-client-provisioner 工具已经搭建完成,可以通过它来动态地创建和删除 PV,并将其绑定到对应的 PVC 上。