通过K8S使用NAS卷时,请区分以下方案:
静态存储卷:
阿里云ACK、PV、PVC方法、NFS驱动
阿里云ACK、PV、PVC方法、灵活卷驱动
阿里云ACK、卷方式、NFS驱动、
阿里云ACK、卷方式、灵活卷驱动、
自建K8S、PV、PVC方法、NFS驱动程序;
自建K8S、卷方法、NFS驱动程序;
动态存储卷:
使用阿里云ACK
使用自行构建的K8S
静态卷-使用ariyun kubernetes(ack)时
1.PV,使用PVC方法(NFS驱动程序)
首先,请确保在当前装载上配置了noresvport参数,并参阅nas团队提供的方法。
例如,当前PV为:
Api版本3360 v1
Kind: PersistentVolume
元数据:
Name: pv-nas
Spec:
AccessModes:
-ReadWriteOnce
容量:
存储: 2gi
MountOptions:
-vers=3
Nfs:
Path: /default
服务器: 2564
persistentvolumereclaimpolicy : retain
要编辑PV:
Kubectl edit PV pv-nas
更新MountOptions:
MountOptions:
-vers=4.0
-noresvport
或者:
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- Ready <none> 55d v1.12.6-aliyun.1
cn- 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-上;
> 在deploy中添加 nodeName: cn-
> 如果您的集群节点较多,可以给一批节点添加label,然后通过nodeSelector把pod调度到这写节点;
> 参考:
注意:如果您用的时候statefulset的应用,需要把u配置为RollingUpdate;
然后再把pod调度到其他节点:cn-
到节点cn- 上验证noresport,已经生效。
2564:/default on /var/lib/kubelet/pods/aa79e380-9bdb-11e9-a545-00163e0eff42/volume 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: 5Gi
storageClassName: nas
accessModes:
– ReadWriteMany
flexVolume:
driver: "alicloud/nas"
options:
server: "0cd8b4a576-ui;
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-gr
4. 使用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-gr"
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:
kind: StorageClass
metadata:
name: alicloud-nas
mountOptions:
– vers=3
provisioner: alicloud/nas
reclaimPolicy: Retain
处理动态卷分为两个部分:
1. 更新storageclass:
这样后续生成的pv会默认添加noresvport参数;编辑stroageclass:
# kubectl edit sc alicloud-nas
mountOptions:
– nolock,tcp,noresvport
– vers=3
2. 更新存量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到其他节点;
作者:阚俊宝
1.《【nfs9】K8S环境中NAS卷添加noresvport方法》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【nfs9】K8S环境中NAS卷添加noresvport方法》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.cxvn.com/gl/djyxgl/146508.html