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 中引入了三路策略,可以通过补丁的方式实现升级。

场景如下(该场景引自 这里):

  1. 部署 Release
  2. scale pod 数为 0。(这里 manifest 前后未改动)
  3. 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的更多相关文章

  1. Helm介绍

    1.为什么要用Helm? 首先在原来项目中都是基于yaml文件来进行部署发布的,而目前项目大部分微服务化或者模块化,会分成很多个组件来部署,每个组件可能对应一个deployment.yaml,一个se ...

  2. 使用 Helm 包管理工具简化 Kubernetes 应用部署

    当在 Kubernetes 中已经部署很多应用时,后续需要对每个应用的 yaml 文件进行维护操作,这个过程会变的很繁琐,我们可以使用 Helm 来简化这些工作.Helm 是 Kubernetes 的 ...

  3. Helm简介及安装

    前提条件 一个kubernetes集群 安装和配置集群端服务Helm和Tiller 确定要应用于安装的安全配置(如果有) 1.安装HELM 每一个版本HELM提供多种操作系统的二进制版本.可以手动下载 ...

  4. 在kubernetes集群上用helm安装Datadog(Monitoring)

    Datadog is a monitoring service that gathers monitoring data from your containers within your Azure ...

  5. 基于Helm和Operator的K8S应用管理的分享

    一.为啥要用helm 对于一些微服务架构来说,会有不同的服务在上面运行,你可能要管理诸如deployment.service.有状态的Statefulset.权限的控制等等.你会发现,部署应用后还会有 ...

  6. helm 更改为国内源

     helm init --upgrade -i slpcat/tiller:v2.8.2 --stable-repo-url https://kubernetes.oss-cn-hangzhou.al ...

  7. helm的安装于与简单使用

    根据 csdn 博客整理学习 原始博客地址: https://blog.csdn.net/weiguang1017/article/details/78045013 1. 下载所需要的文件: 客户端文 ...

  8. Helm二:安装

    目录 Helm安装 Helm client安装 Helm tiller安装 Chart仓库配置 私有chart仓库 chart仓库的组成 创建本地仓库 chart仓库基本管理 Helm安装 Helm ...

  9. Helm 入门安装指南

    Helm 是 Kubernetes 生态系统中的一个软件包管理工具.本文将介绍 Helm 中的相关概念和基本工作原理,并通过一个具体的示例学习如何使用 Helm 打包.分发.安装.升级及回退 Kube ...

  10. helm 安装prometheus operator 并监控ingress

    1.helm安装 curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > get_helm.shchmod 7 ...

随机推荐

  1. Codeforces #475 div2

    题目链接:http://codeforces.com/contest/964 A题 答案n/2+1: B题 讨论三种情况 c>b c==b c<b C题 数论,逆元+快速幂,但是我一直卡在 ...

  2. 组合式api-子父组件之间通信props和emit

    整体来说和vue2也是比较相似的. 使用props传递数据到子组件 父组件给定数据. 子组件中使用defineProps来接收父组件传递的数据. 子组件emit触发事件通知父组件 思想和vue2完全一 ...

  3. 安装华企盾DSC防泄密软件造成CAD2012卡住怎么办?

    将下图目录的.exe程序删除或者重命名

  4. 数字孪生为何开始逐渐与GIS进行融合?

    近年来,数字孪生技术和地理信息系统(GIS)在各自领域的快速发展引起了广泛关注.这两个技术的结合被认为是一种强大的联合,可以为各行各业带来革命性的变革和创新.那么,为何数字孪生开始逐渐与GIS进行融合 ...

  5. 数字孪生与GIS的结合:创新灾害预防管理的未来

    近年来,全球频发的自然灾害给人们的生命和财产安全带来了巨大威胁,灾害预防管理成为当务之急.然而,随着数字孪生技术和GIS的迅猛发展,一种全新的解决方案正在崭露头角.数字孪生与GIS的结合,为灾害预防管 ...

  6. 面试官:说说MVCC的执行原理?

    MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题.它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离 ...

  7. Socket.D 替代 Http 协议像 Ajax 一样开发前端接口

    我们在"前端接口"开发时,使用 socket.d 协议有什么好处: 功能上可以替代 http 和原生 ws 更安全!现有的工具想抓包数据,难!难!难!(socket.d 是个新的二 ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题

    文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题 二.试分析在使用下列循环不变量时,HEAPSORT 的正确性:在算法的第 2~5行 for 循环每次迭代开始时,子数 ...

  9. c#中用System.Diagnostics.Process.Start(Path.GetFullPath(“vlc.exe.lnk“), url);用vlc的快捷方式打开http的url不起作用?

    vlc.exe.lnk双击这个文件,能正常打开vlc,但是用System.Diagnostics.Process.Start(Path.GetFullPath("vlc.exe.lnk&qu ...

  10. 前端js常用的60余种工具方法【强烈建议收藏】

    "工欲善其事,必先利其器!"本文为大家带来前端js开发常用的60种工具方法,有了这些开发工具你就可以高效的处理任务和信息了. 1.邮箱 export const isEmail = ...