k8基于nfs做存储类(storageclass)的动态供给
创建storageclass
cat storageclass.yaml
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: nfs provisioner: example.com/nfs
kubectl apply -f storageclass.yaml
创建pvc
cat nfs-claim.yaml
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-claim1 spec: accessModes: ["ReadWriteMany"] resources: requests: storage: 1Mi storageClassName: nfs
kubectl apply -f nfs-claim.yaml
查看生成的pvc(pending状态)
kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-claim1 Pending nfs 25m
详细查看生成的pvc
kubectl describe pvc test-claim1
Name: test-claim1 Namespace: default StorageClass: nfs Status: Pending Volume: Labels: <none> Annotations: control-plane.alpha.kubernetes.io/leader: {"holderIdentity":"6ca2ec61-526d-11ec-b99f-fee7f8494691","leaseDurationSeconds":15,"acquireTime":"2021-12-01T06:44:46Z","renewTime":"2021-... volume.beta.kubernetes.io/storage-provisioner: example.com/nfs Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Used By: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ExternalProvisioning 46s (x501 over 25m) persistentvolume-controller waiting for a volume to be created, either by external provisioner "example.com/nfs" or manually created by system administrator
解决方案
在kube-apiserver.yaml文件中增加以下参数 --feature-gates=RemoveSelfLink=false
并重启kube-apiserver服务
systemctl restart kube-apiserver
systemctl status kube-apiserver
查看处理后的pvc状态
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-claim1 Bound pvc-6ad3d076-5101-486f-a6d7-7d0b4da25873 1Gi RWX nfs 37m
KUBERNETES 启用 SELFLINK 字段
Kubernetes v1.20 (opens new window)开始,默认删除了 metadata.selfLink 字段,然而,部分应用仍然依赖于这个字段,例如 nfs-client-provisioner 通过配置 apiserver 启动参数中的 –feature-gates 中的 RemoveSelfLink=false,可以重新启用 metadata.selfLink 字段。
修改 /etc/kubernetes/manifests/kube-apiserver.yaml 文件,并在其启动参数中增加一行 – –feature-gates=RemoveSelfLink=false

浙公网安备 33010602011771号