我们有一个由2个豆荚组成的多豆荚容器。init container先运行,实际的container运行。最近,我们的init容器作业失败了,这是因为我们的部署失败了。我们需要在init容器完成后获取init容器日志有办法做到吗??我知道我们可以在init容器运行时获取日志,但即使在init容器作业完成后,我们也需要日志任何解决方案,我们都使用jenkins进行构建和部署
toiithl61#
你可以运行cmd:
kubectl logs <pod_name> -c <init_container_name>
即使在运行结束后,这也会获取init容器的日志。举个例子,对于下面的pod规范,init-container首先运行(直到完成),并只打印“Hello world”。
init-container
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"']
如果我运行这个命令:
kubectl logs test-pod -c init-container
我得到输出:
Hello world
要获取pod中所有容器的日志,您可以用途:
kubectl logs <pod_name> --all-containers
希望有帮助!
yvt65v4c2#
即使您的init容器完成,您也可以获取日志这就是我试过的
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 1 template: metadata: labels: app: nginx spec: initContainers: - name: init-myservice image: busybox command: ['sh', '-c', "echo 'Hello'"] containers: - name: nginx image: nginx ports: - containerPort: 80
您可以运行
kubectl logs <pod-name> -c <init-container-name>
或者,您可以将日志文件写入主机路径,以便在需要时检索它。
apiVersion: v1 kind: Pod metadata: name: test-logs-mount spec: initContainers: - name: init-myservice image: busybox:1.28 command: ['sh', '-c', "Your command/Write logs to >> /work-dir/logs.txt"] volumeMounts: - name: host mountPath: "/" containers: - image: image name: test-container volumeMounts: - mountPath: / name: host volumes: - name: host hostPath: path: /data
2条答案
按热度按时间toiithl61#
你可以运行cmd:
即使在运行结束后,这也会获取init容器的日志。
举个例子,对于下面的pod规范,
init-container
首先运行(直到完成),并只打印“Hello world”。如果我运行这个命令:
我得到输出:
要获取pod中所有容器的日志,您可以用途:
希望有帮助!
yvt65v4c2#
即使您的init容器完成,您也可以获取日志
这就是我试过的
您可以运行
或者,您可以将日志文件写入主机路径,以便在需要时检索它。