如何防止 Pod 崩溃以便我可以对其进行调试?

Nat*_*ong 7 kubernetes

在 Kubernetes 中,当 Pod 反复崩溃并处于CrashLoopBackOff状态时,不可能进入容器并四处寻找问题,因为容器(与虚拟机不同)仅与主进程一样长。如果我进入容器并且 Pod 重新启动,我就会被踢出 shell。

如何防止 Pod 崩溃,以便我可以调查我的主进程是否无法正常启动?

Nat*_*ong 9

重新定义command

在开发过程中,防止 Kubernetes Pod 崩溃的临时方法是重新定义它并指定容器command(对应于 Docker ENTRYPOINT)并args使其成为不会崩溃的命令。例如:

  containers:
  - name: something
    image: some-image
    # `shell -c` evaluates a string as shell input
    command: [ "sh", "-c"]
    # loop forever, outputting "yo" every 5 seconds
    args: ["while true; do echo 'yo' && sleep 5; done;"]
Run Code Online (Sandbox Code Playgroud)

这允许容器运行,并让您有机会进入其中,kubectl exec -it pod/some-pod -- sh并调查可能出现的问题。

这需要在调试后撤消,以便容器能够运行它实际要运行的命令。

改编自这篇博文