发生了什么?
今天,函数 maxContainerRestarts
有几个用途 - 主要是为了比较 pods 以决定哪个更好删除或获取哪些日志。这不是一个巨大的问题,主要是生活质量的改进。
代码只查看容器状态,但可能还需要查看 init 容器状态。特别是在 sidecar 容器的情况下,它们的行为可能与常规容器完全相同。
有两种实现和五个比较接口。
实现:
- pkg/controller/controller_utils.go
- staging/src/k8s.io/kubectl/pkg/util/podutils/podutils.go
func maxContainerRestarts(pod *v1.Pod) int {
maxRestarts := 0
for _, c := range pod.Status.ContainerStatuses {
maxRestarts = max(maxRestarts, int(c.RestartCount))
}
return maxRestarts
}
我们可能需要小心地包括所有 init 容器状态。如果 Pod 由于 Init 容器失败而长时间无法启动,现在它运行正常,那么很可能不重要。然而,包括可重启的容器(sidecars)的重启次数是很重要的。
我认为期望的行为是首先检查常规容器的最大重启次数。然后进行比较。接着比较可重启的 init 容器的最大重启次数。
/kind bug
你期望发生什么?
比较最大容器重启次数时,应将 init 容器也考虑在内。
我们如何尽可能最小精确地重现它?
两个 pods - 一个有不断重启循环的 sidecar 容器,另一个运行正常。随机选择一个 pod 从其获取日志。
我们需要了解其他信息吗?
/sig apps
/priority backlog
KEP: kubernetes/enhancements#753
2条答案
按热度按时间ntjbwcob1#
/assign
vsmadaxz2#
/triage accepted