Kubernetes pod - когда он готов обслуживать трафик c? - PullRequest
0 голосов
/ 12 июля 2020

В настоящее время я создаю распределенную систему консенсуса, поэтому важно точно знать, когда модуль Kubernetes может обслуживать трафик c (принимать HTTP-запросы). Есть идеи, как я могу это сделать, кроме установки таймера, чтобы продолжать делать запросы самому себе?

1 Ответ

3 голосов
/ 12 июля 2020

Можно использовать зонд готовности и сервис 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.

...