Alicloud-Nas-Controller插件升级

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

您在ACK集群中使用alicloud-nas-controller时,如果安装的版本较低,可以通过如下方式升级组件:

当前集群状态:

如果您使用的nas controller是早期版本,如下:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: alicloud-nas-controller
  name: alicloud-nas-controller
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: alicloud-nas-controller
  template:
    metadata:
      labels:
        app: alicloud-nas-controller
    spec:
      containers:
      - env:
        - name: PROVISIONER_NAME
          value: alicloud/nas
        - name: NFS_SERVER
          value: 2564f49129-**.cn-shenzhen.nas.aliyuncs.com
        - name: NFS_PATH
          value: /
        image: registry.cn-hangzhou.aliyuncs.com/acs/alicloud-nas-controller:v3.1.0-k8s1.11
        imagePullPolicy: IfNotPresent
        name: alicloud-nas-controller
        volumeMounts:
        - mountPath: /persistentvolumes
          name: nfs-client-root
      serviceAccount: admin
      serviceAccountName: admin
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists
      - effect: NoSchedule
        key: node.cloudprovider.kubernetes.io/uninitialized
        operator: Exists
      volumes:
      - flexVolume:
          driver: alicloud/nas
          options:
            path: /
            server: 2564f49129-**.cn-shenzhen.nas.aliyuncs.com
            vers: "4.0"
        name: nfs-client-root

StorageClass配置如下:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
mountOptions:
- vers=4.0
provisioner: alicloud/nas
reclaimPolicy: Retain

集群中有应用使用上述controller配置创建了pvc/pv,并挂载到pod中使用:

# kubectl describe pod web-nas-1 | grep ClaimName
    ClaimName:  html-web-nas-1

# kubectl get pvc html-web-nas-1
NAME             STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
html-web-nas-1   Bound    pvc-2612b272-14e7-11ea-a9b7-00163e084110   2Gi        RWO            alicloud-nas   85m

这时pv的配置为v4版本;
# kubectl get pv pvc-2612b272-14e7-11ea-a9b7-00163e084110 -oyaml | grep mountOptions -A 6
  mountOptions:
  - vers=4.0
  nfs:
    path: /default-html-web-nas-1-pvc-2612b272-14e7-11ea-a9b7-00163e084110
    server: 2564f49129-**.cn-shenzhen.nas.aliyuncs.com
  persistentVolumeReclaimPolicy: Retain
  storageClassName: alicloud-nas

PV新诉求

登陆Pod所在节点,查看挂载nas的参数为:

# mount | grep nfs
2564f49129-**.cn-shenzhen.nas.aliyuncs.com:/default-html-web-nas-1-pvc-2612b272-14e7-11ea-a9b7-00163e084110 on /var/lib/kubelet/pods/32222e36-14f2-11ea-a9b7-00163e084110/volumes/kubernetes.io~nfs/pvc-2612b272-14e7-11ea-a9b7-00163e084110 type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.25,local_lock=none,addr=192.168.1.152)

如果你希望更新nas挂载参数,期望修改pv的mountOptions参数,例如配置为下面参数:

- nolock,tcp,noresvport
- vers=3

执行编辑命令:

# kubectl edit pv pvc-2612b272-14e7-11ea-a9b7-00163e084110

将mountOptions参数更新为:

  mountOptions:
  - nolock,tcp,noresvport
  - vers=3

重启Pod:

# kubectl delete pod web-nas-1

登陆Pod所在节点插件nas挂载参数:可见已经配置了noresvport等参数;
# mount | grep nfs
2564f49129-**.cn-shenzhen.nas.aliyuncs.com:/default-html-web-nas-1-pvc-2612b272-14e7-11ea-a9b7-00163e084110 on /var/lib/kubelet/pods/ba374a37-14f3-11ea-a9b7-00163e084110/volumes/kubernetes.io~nfs/pvc-2612b272-14e7-11ea-a9b7-00163e084110 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.1.152,mountvers=3,mountport=4002,mountproto=tcp,local_lock=all,addr=192.168.1.152)

通过上面方法,可以对当前已经生成的NAS PV进行更新,并通过重启Pod使其生效。(注意:noresvport参数生效有其特殊性,咨询nas技术支持。)

升级Nas Controller:

上面的文档只是把老版本生成的pv更新挂载参数,只有更新了nas controller版本后才能使后续生成的pv自动使用新挂载参数。

新Controller模板:

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: alicloud-nas-controller
  namespace: kube-system
spec:
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: alicloud-nas-controller
    spec:
      tolerations:
      - operator: Exists
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            preference:
              matchExpressions:
              - key: node-role.kubernetes.io/master
                operator: Exists
      priorityClassName: system-node-critical
      serviceAccount: admin
      hostNetwork: true
      containers:
        - name: nfs-provisioner
          image: registry.cn-hangzhou.aliyuncs.com/acs/alicloud-nas-controller:v1.14.3.8-58bf821-aliyun
          env:
          - name: PROVISIONER_NAME
            value: alicloud/nas
          securityContext:
            privileged: true
          volumeMounts:
          - mountPath: /var/log
            name: log
      volumes:
      - hostPath:
          path: /var/log
        name: log

通过下面命令重建Nas Controller:

# kubectl delete deploy alicloud-nas-controller
# kubectl create -f controller.yaml

StorageClass更新:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-nas
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
  server: "2564f49129-**.cn-shenzhen.nas.aliyuncs.com:/"
  driver: nfs
provisioner: alicloud/nas
reclaimPolicy: Retain

通过下面命令更新StorageClass:

# kubectl delete sc alicloud-nas
# kubectl create -f stroageclass.yaml

验证:

扩容应用Pod数量,生成新PVC、PV:

# kubectl get pv default-html-web-nas-5-pvc-91f37aa0-14f6-11ea-a9b7-00163e084110 -oyaml| grep mountOptions -A 6
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3
  nfs:
    path: /default-html-web-nas-5-pvc-91f37aa0-14f6-11ea-a9b7-00163e084110
    server: 2564f49129-**.cn-shenzhen.nas.aliyuncs.com
  persistentVolumeReclaimPolicy: Retain

查看Pod挂载信息,noresvport等参数均已配置成功:

2564f49129-**.cn-shenzhen.nas.aliyuncs.com:/default-html-web-nas-5-pvc-91f37aa0-14f6-11ea-a9b7-00163e084110 on /var/lib/kubelet/pods/4bc4bb3e-14f7-11ea-a9b7-00163e084110/volumes/kubernetes.io~nfs/default-html-web-nas-5-pvc-91f37aa0-14f6-11ea-a9b7-00163e084110 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.1.152,mountvers=3,mountport=4002,mountproto=tcp,local_lock=all,addr=192.168.1.152)
相关实践学习
基于ECS和NAS搭建个人网盘
本场景主要介绍如何基于ECS和NAS快速搭建个人网盘。
阿里云文件存储 NAS 使用教程
阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas
目录
相关文章
|
4月前
|
存储 Kubernetes Go
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
|
人工智能 机器人 文件存储
Stable Difficion WebUI + Nas 部署
Stable Difficion WebUI + Nas 部署使用心得
504 14
|
存储 Kubernetes NoSQL
Kubernetes在AliCloud上部署并优化MongoDB
Kubernetes, 阿里云, MongoDB, 优化
287 0
|
Serverless 文件存储
正确配置nas
正确配置nas
278 1
|
人工智能 文件存储 数据安全/隐私保护
PAI已经创建好的实例,怎么挂载NAS?
PAI已经创建好的实例,怎么挂载NAS?
327 0
|
API 文件存储
文件存储NAS-Tag功能使用指南
简介:阿里云文件存储NAS提供管理标签功能,帮助您从各种维度(例如业务,用途,负责人等)对文件系统进行分类管理。本文档介绍标签的使用限制及如何添加标签,查看标签,编辑标签,删除标签、标签过滤等。支持通用型NAS,极速型NAS和CPFS。
6372 0
|
存储 Kubernetes 应用服务中间件
阿里云Kubernetes CSI实践—CPFS存储卷使用
1. 前言 CPFS(Cloud Paralleled File System)是一种并行文件系统。CPFS 的数据存储在集群中的多个数据节点,并可由多个客户端同时访问,从而能够为大型高性能计算机集群提供高 IOPS、高吞吐、低时延的数据存储服务。
4677 0
阿里云Kubernetes CSI实践—CPFS存储卷使用
|
文件存储 应用服务中间件 nginx
Kubernetes环境中使用NAS动态存储卷
介绍 K8S在应用中经常会用到nas共享存储卷,通常的使用方法是通过一个pv、pvc进行挂载,但当需要pv、pvc数量很大的时候,手动创建显得非常繁琐,这时动态数据卷的功能可以满足您的需求。 以下场景: 当为不同的用户提供不同的nas子目录进行挂载的时候,可以考虑使用nas动态存储卷; 当使用S.
7176 0
|
存储 Kubernetes Cloud Native
Kubernetes 环境中使用 NAS 动态存储卷
K8S在应用中经常会用到nas共享存储卷,通常的使用方法是通过一个pv、pvc进行挂载,但当需要pv、pvc数量很大的时候,手动创建显得非常繁琐,这时动态数据卷的功能可以满足您的需求。本文将为您讲解如何在 Kubernetes 环境中使用 NAS 动态存储卷。
1019 0
Kubernetes 环境中使用 NAS 动态存储卷
|
文件存储 存储 Perl
阿里云Kubernetes CSI实践—NAS动态存储卷使用
1. 前言 NAS存储盘能将nfs(网络文件系统)挂载到你的Pod中,阿里云Kubernetes CSI支持静态存储卷挂载和动态存储卷挂载2种方式, 在静态存储卷挂载的方式中,通常需要手动编辑和创建一个pv/pvc进行挂载,当需要的pv/pvc数量很大的时候,手动创建就显得非常繁琐了,这时动态存储卷挂载的功能可以满足您的需求。
6448 0