玩转 Helm 之 upgrade
0. 前言
在 玩转 Helm 一文中,简略提到了 Helm upgrade 的策略。
在实际项目开发上,upgrade 多是调研的重点。基于此,这里对 upgrade 继续展开。
1. basic helm upgrade
升级 Release 查看升级情况:
1.1 helm install 部署 Release
$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
lubanseven ci1 1 2022-04-26 14:32:08.74504337 +0000 UTC deployed lubanseven-0.1.0 0.1.0
查看 manifest:
spec:
replicas: 1
1.2 helm upgrade lubanseven
// 更新 values.yaml replicas: 2
$ helm upgrade -f values.yaml lubanseven .
查看 manifest:
spec:
replicas: 2
1.3 helm rollback lubanseven
$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
lubanseven ci1 2 2022-04-26 14:39:17.027072285 +0000 UTC deployed lubanseven-0.1.0 0.1.0
$ helm rollback lubanseven 1
注意:
- 这里 revision id 是对 lubanseven 的记录,每执行一次 lubanseven,id 会自增 1。
- 除了对 values.yaml 改动的升级,也可以对 chart 的改动做升级。helm upgrade 背后是解析,比对 manifest 查看资源更新情况,并将更新情况发给 kubernetes 处理。
2. 三路升级策略
基本的升级场景看完,继续看 helm upgrade 的三路升级策略。
如果 manifest 前后不变,helm 在做升降级的时候会对 Release 做改动吗?这在 helm2 答案是不会,在 helm3 中引入了三路策略,可以通过补丁的方式实现升级。
场景如下(该场景引自 这里):
- 部署 Release
- scale pod 数为 0。(这里 manifest 前后未改动)
- helm rollback Release
在 helm2 中,当第二步 scale pod 时,manifest 并未改动,此时 pod 为 0,当 rollback 时,由于 manifest 并未改动,pod 数还是保持为 0,而不是回到原来的 pod 数。
helm3 使用三路升级策略对此进行了改进,我们根据这里做了测试,验证了这一策略的有效性。具体不展开了,更多可参考 这里
3. configmap 改动升级
试想一种场景,升级时 configmap 改动的情况。如果升级的时候 configmap 改动了,那升级后 pod 内使用的是原有的 configmap 还是旧的 configmap 呢。
我们做了简单的测试,发现当改动 configmap 时,pod 内的内容会相应改动,意味着升级回滚都会用改动的 configmap,为什么会这样呢?
configmap 以 volume 的形式挂载到 pod 内,挂载是以 联合文件系统 的方式挂载的。对 volume 的改动会同步反映到 pod 内,
这一过程解析了为什么 configmap 对升级无影响,无影响指的是升级前后都用最新的改动 configmap。
4. 总结
对于升级场景的调研是复杂的,它不仅涉及到应用内部的处理,也涉及到外部资源,升级流程。
对升级流程简单给了一个场景,重点是想说明升级前后 manifest 的变化。
对外部资源,讨论了 configmap 改动对升级的影响,当然影响不止于这一点还有 labels 等资源,这里不一一讨论,有需要再谈。
玩转 Helm 之 upgrade的更多相关文章
- Helm介绍
1.为什么要用Helm? 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个se ...
- 使用 Helm 包管理工具简化 Kubernetes 应用部署
当在 Kubernetes 中已经部署很多应用时,后续需要对每个应用的 yaml 文件进行维护操作,这个过程会变的很繁琐,我们可以使用 Helm 来简化这些工作.Helm 是 Kubernetes 的 ...
- Helm简介及安装
前提条件 一个kubernetes集群 安装和配置集群端服务Helm和Tiller 确定要应用于安装的安全配置(如果有) 1.安装HELM 每一个版本HELM提供多种操作系统的二进制版本.可以手动下载 ...
- 在kubernetes集群上用helm安装Datadog(Monitoring)
Datadog is a monitoring service that gathers monitoring data from your containers within your Azure ...
- 基于Helm和Operator的K8S应用管理的分享
一.为啥要用helm 对于一些微服务架构来说,会有不同的服务在上面运行,你可能要管理诸如deployment.service.有状态的Statefulset.权限的控制等等.你会发现,部署应用后还会有 ...
- helm 更改为国内源
helm init --upgrade -i slpcat/tiller:v2.8.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.al ...
- helm的安装于与简单使用
根据 csdn 博客整理学习 原始博客地址: https://blog.csdn.net/weiguang1017/article/details/78045013 1. 下载所需要的文件: 客户端文 ...
- Helm二:安装
目录 Helm安装 Helm client安装 Helm tiller安装 Chart仓库配置 私有chart仓库 chart仓库的组成 创建本地仓库 chart仓库基本管理 Helm安装 Helm ...
- Helm 入门安装指南
Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升级及回退 Kube ...
- helm 安装prometheus operator 并监控ingress
1.helm安装 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.shchmod 7 ...
随机推荐
- 如何给图数据库 NebulaGraph 新增一种数据类型,以 Binary 为例
NebulaGraph 内核所自带的数据结构其实已经很丰富了,比如 List.Set.Map.Duration.DataSet 等等,但是我们平时在建表和数据写入的时候,可以用到的数据结构其实比较有限 ...
- 数据库系列:业内主流MySQL数据中间件梳理
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版) 数据库系列:高并发下的数据字段变更 数据库系列:覆盖索引和规避回表 数据库系列:数据库高可用及无损扩容 数据库 ...
- 在蓝图中使用flask-restful
flask-restful中的Api如果传递整个app对象,那么就是整个flask应用都被包装成restful. 但是,你可以只针对某个蓝图(django中的子应用)来进行包装,这样就只有某个蓝图才会 ...
- DRF限流
https://www.django-rest-framework.org/api-guide/throttling/ 限制.控制客户端可以向 API 发出的请求的速率. 设置限流策略 默认限制策略可 ...
- [VMware]ESXI下硬盘的两种直通方式
文章来自:https://rmbz.net/archives/vmware-esxi-passthrough 最近再搞ESXI,把原来的"黑群晖"改成ESXI:因为群晖里有数据,为 ...
- 用C实现HashTable
简述HashTable的原理 HashTable是一种数据结构,通过key可以直接的到value,查找值时间总为常数级别O(1). 原理 HashTable底层是使用了数组实现的.数组只要知道了索引, ...
- Istio 为服务指定协议
1.背景 Istio 默认支持代理所有 TCP 流量.包括 HTTP.HTTPS.gRPC 以及原始 TCP 协议.但为了提供额外的能力,比如路由和丰富的指标,必须确定协议.协议可以被自动检测或者手动 ...
- Git使用经验总结2-配置用户名邮箱
可以使用git config指令来配置一些设置,比如配置用户名邮箱.在开发团队要求成员配置用户名和邮箱是很有用的,可以配合工具区分成员的代码,以及将代码中的问题发送给成员的邮箱中. 查看当前Git的用 ...
- 神经网络入门篇:深度学习和大脑的关联性(What does this have to do with the brain?)
深度学习和大脑的关联性 开始讲故事(手动狗头) 深度学习和大脑有什么关联性吗? 关联不大. 那么为什么会说深度学习和大脑相关呢? 当你在实现一个神经网络的时候,那些公式是你在做的东西,你会做前向传播. ...
- 详解MRS HBase全局二级索引
本文分享自华为云社区<MRS HBase全局二级索引原理与使用场景>,作者:学习一下大数据 . 一.HBase二级索引背景介绍 HBase是基于Key-Value的分布式存储数据库,对表中 ...