Сервис Kubernetes LoadBalancer перестал отвечать после добавления новых узлов в кластер - PullRequest
0 голосов
/ 31 октября 2019

Мы запускаем кластер Kubernetes в GKE (Google Kubernetes Engine версия 1.13.10). Это региональный кластер, который начинался с двух узлов на зону (всего шесть узлов). В этом кластере работает несколько служб, включая некоторые веб-службы и службу Kerberos.

Недавно мы изменили количество узлов на зону с двух на три (поэтому у нас теперь девять узлов). Когда мы сделали это, служба Kerberos стала недоступной.

Некоторые подробности: служба Kerberos работает на трех пакетах в StatefulSet за двумя службами (UDP и TCP) со статическим IP-адресом. Сервис является LoadBalancer и использует локальную политику внешнего трафика, чтобы мы могли легче регистрировать IP-адрес клиента.

Когда мы добавили дополнительные узлы, служба Kerberos зарегистрировала следующие события:

  Type    Reason               Age                From                Message
  ----    ------               ----               ----                -------
  Normal  UpdatedLoadBalancer  53m (x2 over 56m)  service-controller  Updated load balancer with new hosts

Модули продолжали работать, но внешняя конечная точка службы больше не была доступна: телнет к конечной точке ничего не показывал вдругой конец. Перезапуск стручков решил проблему.

Вот определение для службы TCP:

kind: Service
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: kdc.example.org
  name: kdc-tcp
  namespace: kdc
spec:
  clusterIP: 10.8.18.71
  externalTrafficPolicy: Local
  healthCheckNodePort: 32447
  loadBalancerIP: 35.101.23.134
  ports:
  - name: kerberos-tcp
    nodePort: 32056
    port: 88
    protocol: TCP
    targetPort: 88
  selector:
    app: kdc
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - ip: 35.101.23.134

Почему при добавлении некоторых дополнительных узлов это может произойти? Как мы можем избежать этой проблемы в будущем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...