В Kubernetes модули с «проверками готовности» в состоянии «неработоспособны» не разрешаются из других модулей, пока они не станут готовы?

Я определил фиктивную службу как средство регистрации своих модулей в DNS, поскольку IP-адрес кластера не будет работать для моего приложения прямо сейчас.

apiVersion: v1
kind: Service
metadata:
  name: company
spec:
  selector:
    app: company_application
  clusterIP: None

apiVersion: apps/v1
kind: Deployment
metadata:
  name: company-master-deployment
  labels:
    app: company_application
    role: master
spec:
  selector:
    matchLabels:
      app: company_application
      role: master
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: company_application
        role: master
    spec:
      hostname: master
      subdomain: company

Я использую запись DNS для master.company.default.svc.cluster.local, чтобы подключиться к этому модулю из другого модуля.

Я заметил очень раздражающее поведение в Kubernetes в этих условиях:

  • У меня есть модуль, который находится в состоянии «неработоспособности», как определено ReadinessCheck.
  • У меня есть еще один модуль, приложение которого хочет выполнить поиск DNS в этом модуле.
  • Поиск DNS завершается ошибкой до тех пор, пока «неработоспособный» модуль не станет работоспособным.

Так должен работать Kubernetes? Есть ли способ, кроме удаления проверки готовности, убедиться, что DNS продолжает разрешаться?

Какую запись DNS вы используете для подключения к своим модулям?

Rico 08.04.2019 06:50

Я отредактировал вопрос, чтобы сделать его более понятным, master.company.default.svc.cluster.local

tacos_tacos_tacos 08.04.2019 09:36
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
0
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, поды не добавляются к конечным точкам службы, пока они не пройдут проверку готовности. Вы можете подтвердить это, выполнив следующую команду:

kubectl get endpoints company -n <your_namespace>

Вы не увидите никаких конечных точек, пока

readinessProbe

терпит неудачу.

Очень хороший, простой ответ!

tacos_tacos_tacos 09.04.2019 20:02

Другие вопросы по теме