如何解决如何查看已删除 Pod 的日志?
作为滚动更新的一部分,第 1 版 pod 与第 2 版 pod 一起汇总。
需要查看pod中服务关闭过程的日志(版本一)。
解决方法
- 滚动更新是否会删除版本 1 的 pod?
简短的回答是:是的。
部署以滚动更新方式更新 Pod,当
.spec.strategy.type==RollingUpdate
。您可以指定 maxUnavailable
和 maxSurge
来控制滚动更新过程。
请参阅以下示例:
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
在此示例中,将有一个额外的 Pod (maxSurge: 1
),高于所需数量 2,并且可用 Pod 的数量不能低于该数量 (maxUnavailable: 0
)。
选择这个配置,Kubernetes 将启动一个额外的 Pod,然后停止一个“旧”的。如果有另一个节点可用于部署此 Pod,则系统将能够在部署期间处理相同的工作负载。如果没有,Pod 将部署在已使用的节点上,代价是来自同一节点上托管的其他 Pod 的资源。
你也可以试试这样的:
spec:
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
在上面的示例中,不会有额外的 Pod (maxSurge: 0
),并且一次只有一个 Pod 不可用 (maxUnavailable: 1
)。
在这种情况下,Kubernetes 会先停止一个 Pod,然后再启动一个新的 Pod。这样做的好处是基础设施不需要向上扩展,但最大工作负载会更低。
- 如果是,我们可以查看已删除 pod(版本一)的日志吗?验证版本1 pod中service的关闭过程...
请参阅 Debug Running Pods 文档。您可以找到几种检查日志/事件的有用方法,例如:
-
Debugging Pods 通过执行
kubectl describe pods ${POD_NAME}
并检查其失败背后的原因。 -
Examining pod logs:使用
kubectl logs ${POD_NAME} ${CONTAINER_NAME}
或kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}
-
Debugging with container exec:通过使用
在特定容器内运行命令kubectl exec
-
Debugging with an ephemeral debug container:当
kubectl exec
因容器崩溃或容器映像不包含调试实用程序而不足时,临时容器可用于交互式故障排除,例如 {{3} }. -
distroless images:如果这些方法都不起作用,您可以找到运行 Pod 的主机并通过 SSH 连接到该主机。
但是,--previous
标志仅在前一个容器实例仍然存在于 Pod 中时才起作用。查看 Debugging via a shell on the node 了解更多选项。
另请参阅此主题:this answer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。