Helm install, Kubernetes - как дождаться готовности подов?

Я создаю конвейер CI / CD.

Я бегу helm install --wait --timeout 300 .... Но на самом деле это не ждет, просто возвращается, когда статус «релиз» равен DEPLOYED.

Итак, я вижу в kubectl get pods --namespace default -l 'release=${TAG}' -o yaml несколько вещей, которые можно использовать:

- kind: Pod
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: 2018-05-11T00:30:46Z
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: 2018-05-11T00:30:48Z
      status: "True"
      type: Ready

Так что, думаю, я посмотрю, когда Ready условие станет "Истинным".

  1. Это кажется немного неправильным ... Все решают это, поэтому я предполагаю, что для этого есть какая-то особенность kubectl, не так ли?

  2. Это правильный вопрос? (См. справочник Kubernetes JSONPath)

    kubectl get pods --namespace default -l 'release = sc8757070' -o jsonpath = '{. items [*]. status.conditions [? (@. type == "Ready")]. status}'


person Ondra Žižka    schedule 11.05.2018    source источник


Ответы (2)


Вы можете использовать kubectl rollout status

$ kubectl rollout status -h
Show the status of the rollout.

By default 'rollout status' will watch the status of the latest rollout until
it's done...
person Amit Kumar Gupta    schedule 11.05.2018
comment
Это почти то, что я ищу, за исключением того, что у него нет тайм-аута (по крайней мере, у штурвала нет такой опции), поэтому в моем случае он ждет бесконечно. Может стоит где-то ограничить количество попыток перезапуска? - person Ondra Žižka; 11.05.2018
comment
Я должен установить restartPolicy=Never? Так перестанет ли он ждать после первой неудачи? Жизненный цикл Pod в документации Kubernetes - person Ondra Žižka; 11.05.2018
comment
Спасибо @Amit_Kumar_Gupta! Это сработало. Мне пришлось использовать _2 _...., он дождался завершения развертывания. - person edesz; 18.05.2019

Есть хороший вариант -n | --namespace NAMESPACE, который позволяет ждать развертываний в разных пространствах имен, например в kube-system:

kubectl rollout status deployment tiller-deploy -n kube-system
person Eugene Lopatkin    schedule 13.05.2019