K8S环境中NAS卷添加noresvport方法
通過K8S使用NAS卷,請區分以下場景:
靜態存儲卷:
 ? ?使用阿里云ACK,PV、PVC方式,nfs驅動;
 ? ?使用阿里云ACK,PV、PVC方式,Flexvolume驅動;
 ? ?使用阿里云ACK,Volume方式,nfs驅動;
 ? ?使用阿里云ACK,Volume方式,Flexvolume驅動;
 ? ?自建K8S,PV、PVC方式,nfs驅動;
 ? ?自建K8S,Volume方式,nfs驅動;
動態存儲卷:
 ? ?使用阿里云ACK
 ? ?使用自建K8S
靜態卷-使用阿里云Kubernetes(ACK)時
1. 使用PV、PVC方式(nfs驅動)
首先確認當前的掛載是否配置了noresvport參數,參考NAS團隊提供的方式;
例如當前的pv如下面yaml:
apiVersion: v1 kind: PersistentVolume metadata:name: pv-nas spec:accessModes:- ReadWriteOncecapacity:storage: 2GimountOptions:- vers=3nfs:path: /defaultserver: 2564f49129-ggu23.cn-shenzhen.nas.aliyuncs.compersistentVolumeReclaimPolicy: Retain編輯PV:
kubectl edit pv pv-nas
 更新mountOptions:
或者:
mountOptions:- vers=3- nolock,tcp,noresvport重啟使用這個pv的pod;
需要注意:
由于一個節點上,如果已經有某個掛載點掛載在一個目錄下了,其他的掛載(相同掛載點)即使配置了noresvport參數,還是會follow以前的掛載參數。即noresvport不生效;
解決方法:
 方法1:修改pv參數后,把所有使用這個掛載點的pod掉離這個節點,然后再調回來。
 方法2:使用新的掛載點創建新的pv使用(一個nas文件系統可以有2個掛載點);
示例方法1:
集群中有2個worker節點,部署一個deploy包含3個Pod; # kubectl get node | grep -v master NAME STATUS ROLES AGE VERSION cn-shenzhen.i-wz9c9m0m4oldr6mt89rd Ready <none> 55d v1.12.6-aliyun.1 cn-shenzhen.i-wz9gvy73m4qyk03xzg1y Ready <none> 60d v1.12.6-aliyun.1# kubectl get pod NAME READY STATUS RESTARTS AGE nas-static-784496fbb9-cqr97 1/1 Running 0 63m nas-static-784496fbb9-gljbq 1/1 Running 0 63m nas-static-784496fbb9-ngzkq 1/1 Running 0 63m編輯pv,添加- nolock,tcp,noresvport Options;編輯deploy,把這個deploy的pod都調度到節點:cn-shenzhen.i-wz9c9m0m4oldr6mt89rd上; > 在deploy中添加 nodeName: cn-shenzhen.i-wz9c9m0m4oldr6mt89rd > 如果您的集群節點較多,可以給一批節點添加label,然后通過nodeSelector把pod調度到這寫節點; > 參考:https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-pods-nodes/注意:如果您用的時候statefulset的應用,需要把updateStrategy.type配置為RollingUpdate;然后再把pod調度到其他節點:cn-shenzhen.i-wz9gvy73m4qyk03xzg1y到節點cn-shenzhen.i-wz9gvy73m4qyk03xzg1y 上驗證noresport,已經生效。 2564f49129-ggu23.cn-shenzhen.nas.aliyuncs.com:/default on /var/lib/kubelet/pods/aa79e380-9bdb-11e9-a545-00163e0eff42/volumes/kubernetes.io~nfs/pv-nas type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.11,mountvers=3,mountport=4002,mountproto=tcp,local_lock=all,addr=192.168.0.11)最后,由于當前使用nas的pod是有nodeName標簽的,可以編輯deploy,把nodeName(nodeSelector)去掉。2. 使用PV、PVC方式(Flexvolume驅動)
首先確認當前的掛載是否配置了noresvport參數,參考NAS團隊提供的方式;
例如當前的pv如下面yaml:
apiVersion: v1 kind: PersistentVolume metadata:name: pv-nas spec:capacity:storage: 5GistorageClassName: nasaccessModes:- ReadWriteManyflexVolume:driver: "alicloud/nas"options:server: "0cd8b4a576-uih75.cn-hangzhou.nas.aliyuncs.com"path: "/k8s"vers: "3"重啟使用這個pv的pod(升級flexvolume版本到最新);
需要注意:
由于一個節點上,如果已經有某個掛載點掛載在一個目錄下了,其他的掛載(相同掛載點)即使配置了noresvport參數,還是會follow以前的掛載參數。即noresvport不生效;
解決方法:
 方法1:修改pv參數后,把所有使用這個掛載點的pod掉離這個節點,然后再調回來。
 方法2:使用新的掛載點創建新的pv使用(一個nas文件系統可以有2個掛載點);
參考示例方法1
3. 使用Volume方式掛載(nfs驅動)
不支持添加noresvport 參數,請使用pv、pvc方式;
apiVersion: v1 kind: Pod metadata:name: "flexvolume-nas-example" spec:containers:- name: "nginx"image: "nginx"volumeMounts:- name: "nas1"mountPath: "/data"volumes:- name: "nas1"nfs:path: /server: 0cd8b4a576-grs79.cn-hangzhou.nas.aliyuncs.com4. 使用Volume方式掛載(flexvolume驅動)
apiVersion: v1 kind: Pod metadata:name: "flexvolume-nas-example" spec:containers:- name: "nginx"image: "nginx"volumeMounts:- name: "nas1"mountPath: "/data"volumes:- name: "nas1"flexVolume:driver: "alicloud/nas"options:server: "0cd8b4a576-grs79.cn-hangzhou.nas.aliyuncs.com"path: "/k8s"vers: "3"重啟使用這個pv的pod(升級flexvolume版本到最新);
需要注意:
由于一個節點上,如果已經有某個掛載點掛載在一個目錄下了,其他的掛載(相同掛載點)即使配置了noresvport參數,還是會follow以前的掛載參數。即noresvport不生效;
解決方法:
 方法1:修改pv參數后,把所有使用這個掛載點的pod掉離這個節點,然后再調回來。
方法2:使用新的掛載點創建新的pv使用(一個nas文件系統可以有2個掛載點);
參考示例方法1
靜態卷-不使用ACK,自建K8S
參考上面ACK集群中使用nfs驅動的解決方案;
動態存儲卷:
自建集群和ACK同下面方式;
對于使用下面storageclass創建的pv,如果沒有添加noresvport參數,其生成的pv也沒有添加noresvport:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: alicloud-nas mountOptions: - vers=3 provisioner: alicloud/nas reclaimPolicy: Retain處理動態卷分為兩個部分:
1. 更新storageclass:
這樣后續生成的pv會默認添加noresvport參數;編輯stroageclass:
# kubectl edit sc alicloud-nasmountOptions: - nolock,tcp,noresvport - vers=32. 更新存量pv的掛載
# kubectl get pv pvc-b56f185a-9be4-11e9-a545-00163e0eff42 2Gi RWO Retain Bound default/html-web-0 alicloud-nas 5h14m pvc-bc6b1f8d-9be4-11e9-a545-00163e0eff42 2Gi RWO Retain Bound default/html-web-1 alicloud-nas 5h14m pvc-bf949736-9be4-11e9-a545-00163e0eff42 2Gi RWO Retain Bound default/html-web-2 alicloud-nas 5h14m同方法:使用PV、PVC方式(nfs驅動)
 在pv中添加noresvport,
 調度pod到其他節點;
原文鏈接
 本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的K8S环境中NAS卷添加noresvport方法的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 《Flutter in action》开
- 下一篇: 如何优化大规模推荐?下一代算法技术JTM
