什么是Kubernetes容器创build?

更新Kubernetes RollingUpdate部署时, kubectl get pods显示一些在转移到“ Running之前在ContainerCreating状态中花费几分钟的窗格。 不幸的是, 关于pod状态的官方文档并没有将其作为logging的状态。 即使是kubernetes codebase 也只有两个提到的术语 ,并没有任何解释性的评论。

我已经对滚动更新部署configuration值 ( maxUnavailablemaxSurge )和探针configuration ( initialDelaySeconds )进行了一些调整,我不确定这些值影响的容器启动时间是否是ContainerCreating或其他状态的一部分。

ContainerCreating状态适用于容器数等于或小于0的情况。

全面

根据问题中定义的代码片段, ContainerCreating状态似乎是default waiting state 。 只有hasInitContainerstruedefaultWaitingState才会成为PodInitializing 。 这个问题也提到了这个问题 。 在without-old-recordwith-old-recordsomething elseContainerState将是Reason: startWaitingReason,"ContainerCreating"

hasInitContainers

https://github.com/kubernetes/kubernetes/blob/427dfd5ce1483ead29568bf7c05a98c4c0ad081c/pkg/kubelet/kubelet_pods.go#L1256

  apiPodStatus.ContainerStatuses = kl.convertToAPIContainerStatuses( pod, podStatus, pod.Status.ContainerStatuses, pod.Spec.Containers, len(pod.Spec.InitContainers) > 0, false, ) apiPodStatus.InitContainerStatuses = kl.convertToAPIContainerStatuses( pod, podStatus, pod.Status.InitContainerStatuses, pod.Spec.InitContainers, len(pod.Spec.InitContainers) > 0, true, )