kubernetes liveness probe 重启以 CrashLoopback 结束的 pod

kubernetes liveness probe restarts the pod which ends in CrashLoopback

我的部署有 2 个 nginx 副本和 openconnect vpn 代理容器(一个 pod 只有一个容器)。

它们启动时没有任何问题并且一切正常,但是一旦连接崩溃并且我的活性探测失败,nginx 容器将重新启动并最终进入 CrashLoopbackoff,因为 openconnect 和 nginx 重新启动失败

nginx:

host not found in upstream "example.server.org" in /etc/nginx/nginx.conf:11

打开连接:

getaddrinfo failed for host 'vpn.server.com': Temporary failure in name resolution

似乎 /etc/resolv.conf 是由 openconnect 编辑的,并且在 pod 重新启动时它保持不变(尽管它不是持久卷的一部分)并且我相信整个容器应该是 运行 来自干净的 docker 图像,其中 /etc/resolv.conf 没有被修改,对吧?

修复 CrashLoopback 的唯一方法是删除 pod 和部署 rc 运行s 一个可以工作的新 pod。

创建新 pod 与 pod 中的容器由 liveness 探针 restartPolicy 重启有何不同:总是?容器是否以干净的映像重新启动?

restartPolicy 适用于 Pod 中的所有容器,而不是 Pod 本身。 Pods 通常只有当有人 explicitly deletes 他们时才会重新创建。

我认为这解释了为什么带有错误 resolv.conf 的重新启动的容器失败,但新的 pod 工作。

A​​ "restarted container" 就是这样,它不是从下载的 docker 图像生成的新图像。这就像终止一个进程并启动它——新进程的文件系统与旧进程正在更新的文件系统相同。但是一个新的 pod 将创建一个新容器,其本地文件系统视图与下载的 docker 映像中打包的容器相同 - 全新开始。