添加Helm存储库
helm repo add azure http://mirror.azure.cn/kubernetes/charts
helm search repo nfs-client-provisioner
helm install nfs-storage azure/nfs-client-provisioner --set nfs.server=172.22.0.12 --set nfs.path=/data/nfs --set storageClass.name=nfs-storage --set storageClass.defaultClass=true --kubeconfig=/root/.kube/admin.conf
ING: This chart is deprecated
NAME: nfs-storage
LAST DEPLOYED: Wed Jan 11 16:06:36 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
[root@node01 ~]# cat pvc-hbtest.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: hb-test
name: pvc-hbtest
spec:
storageClassName: "nfs-storage"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Mi
kubectl apply -f pvc-hbtest.yaml --kubeconfig=/root/.kube/admin.conf
[root@node01 ~]# kubectl get pv --kubeconfig=/root/.kube/admin.conf
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-18cfde21-f4b5-4bc7-b9ff-e92a273b88c9 100Mi RWX Delete Bound hb-test/pvc-hbtest nfs-storage 13m
pvc-574e4524-a8a9-46c2-8ad0-a2e838c47e4e 20Gi RWO Delete Bound kubesphere-monitoring-system/prometheus-k8s-db-prometheus-k8s-0 local 110d
pvc-7b35cdd3-aa92-47ac-a126-76d0dbe621c8 2Gi RWO Delete Bound rich-cq/minio local 104d
pvc-814bf3b8-5512-4bc5-b758-d2fb52a2d803 10Mi RWX Delete Bound default/pvc-test nfs-storage 59m
报错处理:
问题:在k8s 1.21.0版本使用NFS作为StorageClass,实现PV动态供给。但PVC一直是pending状态,Pod也无法运行
错误: Normal ExternalProvisioning 13s (x24 over 5m43s) persistentvolume-controller waiting for a volume to be created,
either by external provisioner "cluster.local/nfs-clife-pr-nfs-client-provisioner" or manually created by system administrator
原因:selfLink was empty 在k8s集群 v1.20之前都存在,在v1.20之后被删除
解决:需要在/etc/kubernetes/manifests/kube-apiserver.yaml 添加参数
[root@k8s-matser01 nfs.rbac]# cat /etc/kubernetes/manifests/kube-apiserver.yaml
apiVersion: v1
···
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
- --feature-gates=RemoveSelfLink=false # 添加这个配置
然后再次查看deploy,pod,pvc,都会部署成功
kubectl get deploy,pod,pvc,sc,pv