Можно использовать зонд готовности и сервис kubernetes . Из документов здесь
readinessProbe : указывает, готов ли контейнер к обслуживанию запросов. Если проверка готовности завершается неудачей, контроллер конечных точек удаляет IP-адрес модуля из конечных точек всех служб, соответствующих этому модулю. Состояние готовности по умолчанию перед начальной задержкой - Отказ. Если контейнер не обеспечивает проверку готовности, состояние по умолчанию - Успех
Из руководства здесь
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /readiness
port: 8888
initialDelaySeconds: 300
periodSeconds: 30
Ваше приложение должно иметь конечную точку HTTP. /readiness
, который должен вернуть ответ 200 OK
. Kubelet будет проверять конечную точку, которую вы определяете в тесте готовности. Как только kubelet получит ответ 200 OK
от конечной точки, тогда pod будет помечен как готовый принять трафик c, и служба Kubernetes начнет отправлять трафик c на backend pod.
Наконец, выставьте pod через Сервис Kubernetes.