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=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-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.com

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-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=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到其他节点;


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java-内置注解

注解&#xff1a; Java.Annotation (注释 comment) // 什么是注解 public class Test01 extends Object{// Override 重写的注解Overridepublic String toString() {return super.toString();} }// SuppressWarnings 镇压警告&#xff0c;写了就没有 变量没有使用的警告了Sup…

使用Quick BI连接AnalyticDB for PostgreSQL数据源

本文介绍如何通过阿里云Quick BI连接AnalyticDB for PostgreSQL数据库。 在Quick BI中新建AnalyticDB for PostgreSQL数据源 登录Quick BI控制台。单击工作空间>数据源&#xff0c;进入数据源管理页面。单击新建数据源>AnalyticDB for PostgreSQL。在添加AnalyticDB fo…

Flowable 数据库表结构 ACT_RE_MODEL

流程设计模型部署表( act_re_model ) 流程设计器设计流程后&#xff0c;保存数据到该表。 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√ID_ID_ID_nvarchar(64)√ID_REV_乐观锁int√乐观锁NAME_名称nvarchar(255)√名称KEY_KEY_nvarchar(255)√分类CATEGORY_…

开源背后 | 面对端侧推理引擎的挑战,阿里工程师如何应对?

阿里妹导读&#xff1a;MNN&#xff08;Mobile Neural Network&#xff09;已于今年5月7日在 Github 上正式开源。淘宝无线开发专家——陈以鎏&#xff08;离青&#xff09;在 GMTC 全球大前端技术大会为大家分享了 MNN 开发、开源中的思考与总结&#xff0c;通过淘宝在移动 AI…

财报上新不久的Mobvista,还内藏何种“惊艳”?

本文为CSDN博主「L-JingJing」的原创文章 原文链接&#xff1a;https://blog.csdn.net/sch881226/article/details/105362679 就在不久前&#xff0c;Mobvista刚刚发布了2019年的财报数据。我们观察到其程序化广告收入已高达22.3亿元&#xff0c;同比增长40.8%&#xff1b;经…

Java-元注解

// 测试 元注解 public class Test02 {MyAnnotationpublic void test(){} } // 定义一个注解 // Target 表示注解可以用在哪些地方 ElementType.METHOD 是方法 ElementType.TYPE是类 Target(value {ElementType.METHOD, ElementType.TYPE})// Retention 表示注解在什么地方有…

Flowable 数据库表结构 ACT_RE_DEPLOYMENT

部署信息表( act_re_deployment ) 部署流程定义时需要被持久化保存下来的信息。 字段名称字段描述数据类型主键为空取值说明ID_ID_nvarchar(64)√主键IDNAME_部署名称nvarchar(255)√部署文件名CATEGORY_分类nvarchar(255)√类别DEPLOY_TIME_部署时间datetime√部署时间

容器十年 ——一部软件交付编年史

作者| 张磊&#xff0c;阿里云容器平台高级技术专家&#xff0c;CNCF Ambassador &#xff08;CNCF 官方大使&#xff09;&#xff0c;Kubernetes 项目资深成员与维护者&#xff0c;曾就职于 Hyper、微软研究院&#xff08;MSR&#xff09;&#xff0c;现在负责 Kubernetes 技术…

MaxCompute 项目子账号做权限管理

场景&#xff1a; 一个企业使用多款阿里云产品&#xff0c;MaxCompute是其中一个产品&#xff0c;用的是同个主账号&#xff0c;主账号不是由使用MaxCompute的大数据同学管理&#xff0c; 大数据同学使用的是子账号。大数据同学日常需要给MaxCompute项目 操作新增子账号&#…

Java-自定义注解

// 自定义注解 public class Test03 {// 注解可以显示赋值&#xff0c; 如果没有默认值&#xff0c;我们就必须给注解赋值MyAnnotation2(name"wang")public void test1(){}// 当只有 一个值 为value 时&#xff0c; 可以不用写 value""MyAnnotation3("…

oracle 存储过程获取当前日期

表名LOAD_PL_FULL_LOG 表字段S_TIME 字段类型date 格式&#xff1a;YYYY-MM-DD HH24:MI:SS 需要这样写 select *from LOAD_PL_FULL_LOGwhere to_date(to_char(S_TIME, YYYY/MM/DD), YYYY-MM-DD) to_date(to_char(sysdate, YYYY/MM/DD), YYYY-MM-DD)

AWS专家论道之迁移上云的四个大趋势和七个小趋势

AWS 首席云计算企业战略顾问 张侠 博士 AWS 首席执行官 Andy Jassy在re:Invent技术大会主题演讲中&#xff0c;围绕着转型从六个方面进行了阐述&#xff1a;1、领导层协调一致&#xff1b;2、技术的深度和广度&#xff1b;3、架构和应用的现代化&#xff1b;4、规模化使用数据…

如何带领团队“攻城略地”?优秀的架构师这样做

阿里妹导读&#xff1a;架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后&#xff0c;是艰辛的探索。今天&#xff0c;阿里巴巴技术专家九摩将多年经验&#xff0c;进行系统性地总结&#xff0c;帮助更…

资深程序员总结:分析Linux进程的6个方法,我全都告诉你

来源 | 后端技术学堂封图| CSDN下载于视觉中国操作系统「进程」是学计算机都要接触的基本概念&#xff0c;抛开那些纯理论的操作系统底层实现&#xff0c;在Linux下做软件开发这么多年&#xff0c;每次程序运行出现问题&#xff0c;都要一步一步分析进程各种状态&#xff0c;去…

蚂蚁金服胡喜:金融服务将成为开源的下个前沿领域

近日&#xff0c;全球知名开源组织云原生计算基金会 CNCF 宣布&#xff0c;蚂蚁金服正式成为 CNCF 黄金会员。为什么蚂蚁金服会拥抱开源&#xff0c;科技公司和开源社区如何实现双赢且可持续发展&#xff1f;蚂蚁金服副CTO胡喜在TechCrunch上发表专栏阐述了自己的见解。 自诞生…

Java-反射概述

// 什么叫反射 public class Test02 {public static void main(String[] args) throws ClassNotFoundException {// 通过反射获取类的 Class 对象Class c1 Class.forName("reflection.User");Class c2 Class.forName("reflection.User");Class c3 Class…

PLSQL 设置日期格式为年月日不显示时分秒

在这里插入代码片nls_date_format YYYY-MM-DDnls_timestamp_format YYYY-MM-DD

云原生应用 Kubernetes 监控与弹性实践

前言 云原生应用的设计理念已经被越来越多的开发者接受与认可&#xff0c;而Kubernetes做为云原生的标准接口实现&#xff0c;已经成为了整个stack的中心&#xff0c;云服务的能力可以通过Cloud Provider、CRD Controller、Operator等等的方式从Kubernetes的标准接口向业务层…

零基础小白10分钟用Python搭建小说网站!网友:我可以!

都说Python什么都能做&#xff0c;本来我是不信的&#xff01;直到我在CSDN站内看到了一件真事儿&#xff1a;一位博主贴出了自己10分钟用Python搭建小说网站的全过程&#xff01;全程只用了2步操作&#xff0c;简直太秀了&#xff01;&#xff01;……第一步&#xff1a;爬取小…

Java-得到 Class 类的几种方式

public class Test03 {public static void main(String[] args) throws ClassNotFoundException {Person person new Student();System.out.println("这个人是&#xff1a;"person.name);// 方式一&#xff1a; 通过对象获取Class c1 person.getClass();System.out…