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

 

posted @ 2021-12-01 15:36  yxy_linux  阅读(256)  评论(0)    收藏  举报