获取初始化容器作业完成后的日志

Gan*_*esh 4 jenkins kubernetes jenkins-pipeline cicd

我们有一个多 Pod 容器,由 2 个 Pod 组成。首先运行 init 容器,然后运行实际容器。最近,我们的初始化容器作业失败,导致我们的部署失败。我们需要在初始化容器完成后获取初始化容器日志

有办法做到这一点吗?

我知道我们可以在 init 容器运行时获取日志,但即使在 init 容器作业完成后我们也需要日志

任何解决方案,我们都使用 jenkins 进行构建和部署

roc*_*lla 7

您可以运行cmd:

kubectl logs <pod_name> -c <init_container_name>
Run Code Online (Sandbox Code Playgroud)

即使运行完成后,这也会获取 init 容器的日志。

仅举一个例子,对于下面的 pod 规范,init-container首先运行(直至完成)并仅打印“Hello world”。

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: main-container
    image: busybox
    command: ["/bin/sh", "-ec", "while :; do echo '.'; sleep 5 ; done"]
  initContainers:
  - name: init-container
    image: busybox
    command: ['sh', '-c', 'echo "Hello world"'] 
Run Code Online (Sandbox Code Playgroud)

如果我运行这个命令:

kubectl logs test-pod -c init-container
Run Code Online (Sandbox Code Playgroud)

我得到输出:

Hello world
Run Code Online (Sandbox Code Playgroud)

要获取 Pod 中所有容器的日志,您可以使用:

kubectl logs <pod_name> --all-containers
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!