kubernetes - 将清单文件应用于应用了水平自动缩放器的部署时,保持“幂等性”的最有效方法是什么?
问题描述
假设您有一个 CI/CD 管道,作为该管道的一部分,您有一个部署清单文件,您可以在其中更改一些值并重新部署。
另一方面,您的部署也是水平自动缩放的,它通过修改部署清单文件以扩展到您设置的副本来工作。
然后有一天,您的水平自动缩放器已经旋转了 40 个 pod 以满足需求,然后您开始运行您的管道,该管道将部署清单设置为一个副本。应用此文件的那一刻,它将杀死所有 pod 副本,这意味着您的缩放器需要将它们恢复,这可能会影响数据和服务,这是不好的。
如何应用清单文件以使其不影响缩放的副本?我能想到的只是自动检查副本数量并更改部署清单以反映这一点,但这似乎是一个非常丑陋的解决方案。
我猜必须有更好的解决方案,我只是找不到它,或者我在寻找错误的地方......
解决方案
不管它看起来多么丑陋,我认为您没有很多选择,因为您的 autoscaler works by modifying your deployment manifest file
。
因此,您必须以某种方式将自动缩放器在已部署清单文件中完成的自动更改合并到您将在 CI/CD 管道中部署的清单版本中,以便能够拥有足够的集群“容量”来处理部署时的流量负载。
如果您能够以某种方式同时保持两个部署版本处于活动状态并逐渐将流量从旧版本迁移到新版本,那么您可能有另一种选择,这将使新部署的自动缩放器有时间启动所需数量的副本。Donno 如果 GKE 提供类似的东西,那是GAE解决此类情况的推荐部署策略。
推荐阅读
- android - 将资源文件迁移到 Androidx
- google-chrome - Google 应用无法在 chrome 浏览器上运行(V.76.0.3809.132(官方构建)(64 位))
- javascript - 为什么我的反向地理编码无法正常工作和显示?
- c# - 尝试反转粗麻布矩阵时系统抛出异常
- batch-file - 在循环中删除名称中带有空格的文件
- c++ - 满时分配新数组?
- google-sheets - 如何仅将 Google Sheet 脚本分配给一张工作表?
- java - 更新到 Androidx,我无法在发布中生成 APK:AAPT2 进程意外退出
- mysql - SQL:具有相同格式的两个日期时间值之一不正确,而另一个正确
- python-3.x - python 多处理是否适用于 Hadoop 流?