K8S 中控制 Pod 内容器启动顺序

https://aber.sh/articles/Control-the-startup-sequence-of-containers-in-Pod/
K8S 中控制 Pod 内容器启动顺序
起笔自 2021年03月28日
所属文集: 杂记
共计 1365 个字符
落笔于 2021年03月28日
如何控制 K8S 单个 Pod 中容器的启动顺序?

其实只要把这个问题放到谷歌里一搜,就可以得到一个有效的、让人满意的答案。但是,为什么呢?没有人讲过。无论我使用中文、英文进行搜索,都没有人提到为什么在 postStart 执行当前容器的健康检查代码就可以控制容器的启动顺序,包括官方文档(甚至一度误导了我)。

在官方文档里有这么一段话:

Kubernetes 在容器创建后立即发送 postStart 事件。 然而,postStart 处理函数的调用不保证早于容器的入口点(entrypoint)的执行。postStart 处理函数与容器的代码是异步执行的,但 Kubernetes 的容器管理逻辑会一直阻塞等待 postStart 处理函数执行完毕。

一开始我看到“postStart 处理函数与容器的代码是异步执行的”这句话,以为网上铺天盖地、明显是复制粘贴的文章是错的,至少是旧的。我把这个文档给公司大佬看,他也迟疑了,但是他搜到的那篇文章里的实验结果的确是阻塞了。我秉持着要知其本质的想法,继续寻找答案。

通过不断的在不同的网站上搜索,终于在 GitHub 上搜到了一个看起来毫不相干但却是唯一一个有效且相关的 Issue——Containers startup is blocked by postStart lifecycle hook。在这个 Issue 里,提出者说某一个容器的 postStart 阻塞了其他容器的启动,K8S 的人却说这是 feature 而不是 bug。

上一篇:Kubernetes源码安装(安装Node节点)


下一篇:QDialog总结