При обновлении развертывания Kubernetes RollingUpdate kubectl get pods
показывает, что некоторые модули проводят несколько минут в ContainerCreating
состояние перед переездом в Running
. К сожалению, официальная документация по состояниям подов не включает это как задокументированное состояние. Даже кодовая база Kubernetes есть только два упоминания термина, и ни у одного из них нет никаких пояснительных комментариев.
Я вносил некоторые изменения в значение конфигурации развертывания скользящего обновления (maxUnavailable
и maxSurge
) и конфигурация зонда (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, )