Flexvolume插件分批升级方案

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Flexvolume支持在线自动升级,您可以登陆控制台实现一键升级,参考:https://help.aliyun.com/document_detail/100605.html Flexvolume升级不会影响您的应用,但是建议您可以选择在业务低峰的时候进行升级。

Flexvolume支持在线自动升级,您可以登陆控制台实现一键升级,参考:https://help.aliyun.com/document_detail/100605.html

Flexvolume升级不会影响您的应用,但是建议您可以选择在业务低峰的时候进行升级。您也可以参考本文给出的给flexvolume执行分配升级方案:

Flexvolume分批升级原理:

Daemonset更新策略支持:OnDelete、RollingUpdate两中模式,其中:

OnDelete:表示对DaemonSet更新模板后,pod不会马上升级,而是等待Pod删除重建的时候升级;

RollingUpdate:表示更新了模板Pod就会马上执行升级操作;

默认情况下升级策略是RollingUpdate,为了实现分批升级功能,我们修改升级策略为OnDelete,然后手动升级一批节点,查看数据卷挂载状态,然后再一批一批的升级;

Flexvolume分批升级步骤:

记录升级前的Flexvolume版本:
# kubectl describe ds flexvolume -nkube-system | grep Image

给Flexvolume配置升级策略为OnDelete;
# kubectl patch ds flexvolume -p '{"spec":{"updateStrategy":{"type":"OnDelete"}}}' -nkube-system

检查Flexvolume升级策略更新是否成功;下面命令有输出即认为成功;
# kubectl get ds flexvolume -nkube-system -oyaml | grep "type: OnDelete"

部署新版本Flexvolume
# kubectl apply -f flexvolume.yaml

检查Flexvolume DaemonSet镜像已经更新,到这一步pod还没有更新;
# kubectl describe ds flexvolume -nkube-system | grep Image
Image:      registry.cn-beijing.aliyuncs.com/acs/flexvolume:v1.14.6.15-8d3b7e7-aliyun

列出所有Flexvolume Pod;
# kubectl get pod -nkube-system -nkube-system -owide | grep flexvolume

分批升级:删除那个pod,pod重启后就会使用新镜像和配置;
# kubectl delete pod ** -nkube-system

检查所有pod是否已经是最新版本;
# for podname in `kubectl get pod -nkube-system | grep flexvolume | awk '{print $1}'`; do kubectl describe pod $podname -nkube-system | grep Image: ;done

将Flexvolume的更新策略修改为RollingUpdate;完成升级;
# kubectl patch ds flexvolume -p '{"spec":{"updateStrategy":{"type":"RollingUpdate"}}}' -nkube-system

Flexvolume部署模板:

把下面模板的{ {.Region}}字段换成您的集群region名。

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: flexvolume
  namespace: kube-system
  labels:
    k8s-volume: flexvolume
spec:
  selector:
    matchLabels:
      name: acs-flexvolume
  template:
    metadata:
      labels:
        name: acs-flexvolume
    spec:
      hostPID: true
      hostNetwork: true
      tolerations:
      - operator: "Exists"
      priorityClassName: system-node-critical
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: NotIn
                values:
                - virtual-kubelet
      nodeSelector:
        beta.kubernetes.io/os: linux
      containers:
      - name: acs-flexvolume
        image: registry-vpc.{
  {.Region}}.aliyuncs.com/acs/flexvolume:v1.14.6.15-8d3b7e7-aliyun
        imagePullPolicy: Always
        securityContext:
          privileged: true
        env:
        - name: ACS_DISK
          value: "true"
        - name: ACS_NAS
          value: "true"
        - name: ACS_OSS
          value: "true"
        - name: ACS_CPFS
          value: "false"
        resources:
          limits:
            cpu: 1000m
            memory: 1000Mi
          requests:
            cpu: 100m
            memory: 100Mi
        livenessProbe:
          exec:
            command:
            - sh
            - -c
            - ps -ef |grep /acs/flexvolume | grep monitoring | grep -v grep
          failureThreshold: 8
          initialDelaySeconds: 15
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 15
        volumeMounts:
        - name: usrdir
          mountPath: /host/usr/
        - name: etcdir
          mountPath: /host/etc/
        - name: logdir
          mountPath: /var/log/alicloud/
      volumes:
      - name: usrdir
        hostPath:
          path: /usr/
      - name: etcdir
        hostPath:
          path: /etc/
      - name: logdir
        hostPath:
          path: /var/log/alicloud/
  updateStrategy:
    type: OnDelete
目录
相关文章
|
监控 安全 Perl
Istio 升级新方式:金丝雀升级
Istio 1.6 推出了渐进式的升级方式:金丝雀升级,为相对头疼的 Istio 升级问题提供了一种解决方案。
941 0
|
2月前
|
Kubernetes 监控 测试技术
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案
|
应用服务中间件 数据安全/隐私保护
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
80 2
|
运维 Kubernetes Cloud Native
OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力
OpenKruise V1.4 版本解读:新增 Job Sidecar Terminator 能力
|
边缘计算 运维 Kubernetes
OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略
在 OpenYurt v1.1.0 版本中,我们提供了 Auto 和 OTA 的升级策略。Auto 的升级策略重点解决由于节点 NotReady 而导致 DaemonSet升级阻塞的问题,OTA 的升级策略主要应对边缘侧用户需要自主控制升级时机的场景。以下对这两种策略做简要的介绍。
OpenYurt v1.1.0: 新增 DaemonSet 的 OTA 和 Auto 升级策略
|
Kubernetes API 调度
关于k8s 集群版本升级的一些笔记(不能跨次要版本升级)
分享一些 K8s 集群版本升级的笔记 博文为根据官方文档的版本升级记录 理解不足小伙伴帮忙指正
887 0
|
存储 缓存 Kubernetes
与 Kubernetes 共存:集群升级的4种方式
与 Kubernetes 共存:集群升级的4种方式
618 0
与 Kubernetes 共存:集群升级的4种方式
|
测试技术 Serverless 开发者
SAE 应用分批发布与无损下线的最佳实践|学习笔记
快速学习 SAE 应用分批发布与无损下线的最佳实践
134 0
SAE 应用分批发布与无损下线的最佳实践|学习笔记
|
运维 Kubernetes Cloud Native
OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能
OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目。它来自阿里巴巴多年来容器化、云原生的技术沉淀,是阿里内部生产环境大规模应用的基于 Kubernetes 之上的标准扩展组件,也是紧贴上游社区标准、适应互联网规模化场景的技术理念与最佳实践。
OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能
下一篇
DataWorks