天天看點

flexvolume如何更新cpfs-client

容器服務中CPFS 更新包含兩部分:

Flexvolume-cpfs 插件更新;

CPFS-Client 驅動更新;

PS:flexvolume-cpfs插件隻支援cpfs-client驅動安裝,不支援驅動更新。是以需要先更新flexvolume-cpfs插件,再手動更新cpfs-client底層驅動;

下面提供兩種方法完成CPFS更新:

  1. 采用ECS的自動運維服務(OOS方式),在多個worker節點同時執行cpfs-client更新腳本;(此方法需要先将目标節點排水,然後在節點上執行更新腳本等操作;)
  2. 先将flexvolume-cpfs更新到目标版本,通過彈性運維(彈出新節點,業務遷移到新節點,舊節點縮掉);

推薦您使用方法2來實作更新過程;步驟如下:

步驟1:更新Flexvolume-cpfs;

将flexvolume的鏡像更新到目标版本(v1.14.8.96-0d85fd1-aliyun)版本。

配置flexvolume的container增加env變量,定義cpfs-client驅動版本:

- name: CPFS_VERSION
          value: 2.10.8-202
        - name: DKMS_VERSION
          value: 1.0.0-208
        - name: CPFS_URL_PREFIX
          value: https://cpfs-client.oss-cn-beijing.aliyuncs.com/centos           

CPFS_VERSION是cpfs-client的version;

DKMS_VERSION是cpfs-dkms-client的version;

CPFS_URL_PREFIX是下載下傳指定cpfs版本的url字首路徑;

flexvolume-cpfs的yaml模闆,執行更新指令:

$ kubectl apply -f flexvolume-cpfs.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: flexvolume-cpfs
  namespace: kube-system
  labels:
    k8s-volume: flexvolume-cpfs
spec:
  selector:
    matchLabels:
      name: flexvolume-cpfs
  template:
    metadata:
      labels:
        name: flexvolume-cpfs
    spec:
      hostPID: true
      hostNetwork: true
      tolerations:
      - operator: "Exists"
      priorityClassName: system-node-critical
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: NotIn
                values:
                - virtual-kubelet
      containers:
      - name: flexvolume-cpfs
        image: registry.cn-hangzhou.aliyuncs.com/acs/flexvolume:v1.14.8.96-0d85fd1-aliyun
        imagePullPolicy: Always
        securityContext:
          privileged: true
        env:
        - name: ACS_CPFS
          value: "true"
        - name: FIX_ISSUES
          value: "false"
        - name: CPFS_VERSION
          value: 2.10.8-202
        - name: DKMS_VERSION
          value: 1.0.0-208
        - name: CPFS_URL_PREFIX
          value: https://cpfs-client.oss-cn-beijing.aliyuncs.com/centos
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - ls /acs/flexvolume
          failureThreshold: 8
          initialDelaySeconds: 15
          periodSeconds: 60
          successThreshold: 1
          timeoutSeconds: 15
        volumeMounts:
        - name: usrdir
          mountPath: /host/usr/
        - name: etcdir
          mountPath: /host/etc/
        - name: logdir
          mountPath: /var/log/alicloud/
        - mountPath: /var/lib/kubelet
          mountPropagation: Bidirectional
          name: kubeletdir
      volumes:
      - name: usrdir
        hostPath:
          path: /usr/
      - name: etcdir
        hostPath:
          path: /etc/
      - name: logdir
        hostPath:
          path: /var/log/alicloud/
      - hostPath:
          path: /var/lib/kubelet
          type: Directory
        name: kubeletdir
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 10%
    type: RollingUpdate           

步驟2:業務遷移

彈出新節點:flexvolume-cpfs更新完成後,新彈出的節點會自動安裝新版本的cpfs-client;

業務遷移:将老節點的pod排水到新彈出的節點上;

縮掉舊節點,完成業務遷移後,将老節點删除;