Мне удалось создать кластер с помощью GKE, успешно используя gce ingress. Однако Ingress долго определяет, что служба готова (я уже установил livenessProbe и readinessProbe). Мои поды настроены
Containers:
...
gateway:
Liveness: http-get http://:5100/api/v1/gateway/healthz delay=0s timeout=1s period=10s #success=1 #failure=3
Readiness: http-get http://:5100/api/v1/gateway/healthz delay=0s timeout=1s period=10s #success=1 #failure=3
...
и вход
...
Name: main-ingress
Host Path Backends
---- ---- --------
<host>
/api/v1/gateway/ gateway:5100 (<ip:5100>)
/api/v1/gateway/* gateway:5100 (<ip:5100>)
web:80 (<ip>)
Annotations:
ingress.kubernetes.io/backends: {"k8s-be-***":"HEALTHY","k8s-be-***":"HEALTHY","k8s-be-***":"HEALTHY"}
kubernetes.io/ingress.allow-http: false
Что я замечаю, так это то, что если я убью всю службу и повторно разверну ее, серверная часть останется на UNHEALTHY
в течение некоторого времени, прежде чем поднять ее, даже если самому Kubernetes удалось подобрать, что все поды / службы работают.
Я также заметил, что когда установлены livenessProbe
и readinessProbe
, проверка работоспособности Backend, генерируемая ingress-gce, выглядит следующим образом
Backend
Timeout: 30 seconds
Backend Health check
Interval: 70 seconds
Timeout: 1 second
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success
Если я просто разверну простой модуль nginx без указания livenessProbe
и readinessProbe
, сгенерированный бэкэнд будет следующим:
Backend
Timeout: 30 seconds
Backend Health Check
Interval: 60 seconds
Timeout: 60 seconds
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success
Является ли проверка работоспособности Backend основной причиной медленного получения данных? Если да, есть идеи, как это ускорить?
ОБНОВЛЕНИЕ Хотел уточнить, прочитав ответ @ yyyyahir ниже
Я понимаю, что при создании нового входа потребуется гораздо больше времени, потому что контроллер входящего трафика должен подготовить новый балансировщик нагрузки, бэкэнд и все другие связанные вещи.
Однако я также заметил, что когда я выпускаю новую версию службы (через Helm - для развертывания установлено значение Recreate, а не RollingUpgrade) ИЛИ, если модуль умер (нехватка памяти) и перезапущен, требуется некоторое время, прежде чем бэкэнд снова работает, несмотря на то, что Pod уже находится в рабочем / работоспособном состоянии (это с существующими Ingress и Load Balancer в GCP). Есть ли способ ускорить это?