通过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