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

#kubernetes

#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 в этих условиях:

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

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

Комментарии:

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

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

Ответ №1:

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

 kubectl get endpoints company -n <your_namespace>
  

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

Проверка готовности

не завершатся сбоем.

Комментарии:

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