您现在的位置是:首页 > 文章详情

Flexvolume插件分批升级方案

日期:2019-12-08点击:705

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: RollingUpdate
原文链接:https://yq.aliyun.com/articles/738452
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章