更新Kubernetes RollingUpdate部署时, kubectl get pods显示一些在转移到“ Running之前在ContainerCreating状态中花费几分钟的窗格。 不幸的是, 关于pod状态的官方文档并没有将其作为logging的状态。 即使是kubernetes codebase 也只有两个提到的术语 ,并没有任何解释性的评论。
我已经对滚动更新部署configuration值 ( maxUnavailable和maxSurge )和探针configuration ( initialDelaySeconds )进行了一些调整,我不确定这些值影响的容器启动时间是否是ContainerCreating或其他状态的一部分。
ContainerCreating状态适用于容器数等于或小于0的情况。
全面
根据问题中定义的代码片段, ContainerCreating状态似乎是default waiting state 。 只有hasInitContainers为true , defaultWaitingState才会成为PodInitializing 。 这个问题也提到了这个问题 。 在without-old-record , with-old-record或something else , ContainerState将是Reason: startWaitingReason,即"ContainerCreating"
hasInitContainers
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, )