- 安装 nfs-client-provisioner
使用以下命令安装 nfs-client-provisioner:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/external-storage/master/nfs-client/deploy/deployment.yaml
- 创建 storage class
创建一个新的 storage class,用于指定 pvc 的存储类型和绑定规则。
例如,可以使用以下 YAML 文件创建一个名为 nfs-storage 的 storage class:
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: nfs-storage
provisioner: nfs-client.provisioner.io
parameters:
archiveOnDelete: "false"
server: "<nfs-server-ip>"
share: "/path/to/share"
其中,<nfs-server-ip>
是 NFS 服务器的 IP 地址,/path/to/share
是共享目录路径。
- 创建 PVC
使用下面的 YAML 文件创建一个名为 test-pvc 的 PVC,并将其绑定到 nfs-storage 存储类上:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-storage
resources:
requests:
storage: 1Gi
其中,accessModes
指定访问模式(这里是 ReadWriteMany),storageClassName
指定要使用的存储类名称,resources.requests.storage
指定 PVC 所需的存储大小。
- 验证 PVC 是否正常挂载
创建一个 Pod,并将其挂载到 test-pvc 上:
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
volumes:
- name: data
persistentVolumeClaim:
claimName: test-pvc
在创建完成后,使用 kubectl get pod
命令查看 Pod 的状态,如果处于 Running 状态,则表示 PVC 成功挂载。可以通过访问该 Pod 的 IP 地址来验证是否能够读写 PVC 中的数据。