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: RollingUpdate

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
阿里云存储容量单位包正式上线公测,全球首款通用存储售卖形态
2019年12月2日,阿里云存储容量单位包(Storage Capacity Unit,以下简称SCU)正式上线公测,可以用来抵扣多种不同类型云盘的按量付费账单。相比于随云服务器预付费购买的模式,SCU与按量付费云盘的组合使用,兼具性价比与资源使用的灵活性。 据介绍,SCU是一种全新的存储产品售卖形态,兼顾客户长周期成本优化诉求的同时,能够为客户提供最佳的资源使用灵活性。相比于按量付费的售卖形态,SCU最多可为客户节省67%的成本支出,同时单个SCU支持同时抵扣多种类型云盘的按量付费账单,极大简化了客户购买决策与日常运维复杂度。 阿里云产品负责人彭亚雄表示,随着客户数字化转型的不断深入,越来越多的客户在拥抱容器化、微服务架构,对IaaS层资源的使用也日趋灵活。SCU作为一种创新型的售卖形态,为客户提供最佳成本优化方案的同时,保持了资源使用上的灵活能力,客户可以在不同类型产品之间进行转换,而无需涉及繁琐、冗长的财务流程。 据某物联网公司架构总监所述,“使用SCU后,成本上有了很大优化,管理也更简单了。使用模式上还跟以前按量付费一样,很灵活,期待SCU支持更多存储产品类型。” 第三方统计数...
-
下一篇
ASP.NET Core on K8S深入学习(10)K8S包管理器Helm
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。 一、关于Helm 1.1 为何需要Helm? 虽然K8S能够很好地组织和编排容器,但是缺少一个更高层次的应用打包工具,而Helm就是专门干这个事的。 通过Helm能够帮助开发者定义、安装和升级Kubernetes中的容器云应用。同时,也可以通过Helm进行容器云应用的分享。 1.2 Helm的架构 Helm的整体架构如下图(图片来源-Kubernetes中文社区)所示: Helm架构由Helm客户端、Tiller服务器端和Chart仓库所组成; 两个重要概念:(1)Chart是创建一个应用的信息集合,包括各种K8S对象的配置模板、参数定义等,可以理解为是apt、yum中的软件安装包;(2)Release是Chart的运行实例,代表了一个正在运行的应用。 Tiller部署在Kubernetes中,Helm客户端从Chart仓库中获取Chart安装包,并通过与Tiller服务器的交互将其安装部署到Kubernetes集群中。 简单说来,Helm客户端负责管理Chart,而 Til...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音