Я пытаюсь создать развертывание вместе со службой, а затем получить доступ к ней немедленно после завершения развертывания:
> kubectl create -f my-deployment.yaml
> kubectl create -f my-service.yaml
> kubectl rollout status deployment/my-deployment --watch --timeout 10m # This usually takes ~30 seconds
deployment "my-deployment" successfully rolled out
> curl "my-service" # This happens inside a pod, so the service DNS name should be available
Иногда это срабатывает, но, похоже, возникает состояние гонки - если команда curl
выполняется слишком быстро, кажется, что сокет не может подключиться, и я получаю тайм-аут подключения.
Это похоже на поведение, которое я получил бы, если бы не было готовых модулей, согласно этому вопросу: Что происходит, когда служба получает запрос, но не имеет готовых модулей?
Я ожидал, что завершение развертывания означает гарантированную готовность сервиса к работе. Разве это не так? Есть ли какая-нибудь команда Kubernetes, чтобы «ждать» доступности сервиса? (Я заметил, что у сервисов нет условий, поэтому вы не можете делать _3 _...)