Можем ли мы использовать сервис «kubernetes» для связи с серверами API? - PullRequest
0 голосов
/ 19 марта 2020

Я искал технику балансировки нагрузки с проверкой работоспособности, когда мои рабочие узлы связывались с сервером API.

Сам Kubernetes имеет службу под названием "kubernetes", конечными точками которой являются серверы API.

Я ввел домен этой службы в kubeconfig рабочих узлов, и он ведет себя хорошо.

Единственная проблема заключается в том, что нет никаких проверок работоспособности сервера API, если какая-либо из них откатится назад, служба все равно будет перенаправлять трафик c на узел.

Можно ли здесь настроить некоторые проверки работоспособности? ?

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2017-09-06T07:54:44Z
  labels:
    component: apiserver
    provider: kubernetes
  name: kubernetes
  namespace: default
  resourceVersion: "96"
  selfLink: /api/v1/namespaces/default/services/kubernetes
  uid: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
spec:
  clusterIP: 10.32.0.1
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 6443
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800
  type: ClusterIP
status:
  loadBalancer: {}

Я знаю, что могу использовать LB, как Haproxy, и облачные провайдеры LB, но я хочу добиться этого только внутри кластера

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Это волшебные c ✨. Конечные точки службы управляются непосредственно самими серверами. Вот почему у него нет селектора. Сервис действительно только для совместимости с кластерным DNS. Это действительно то, что вы используете для общения с API внутри кластера, это обычно определяется автоматически большинством клиентских библиотек.

0 голосов
/ 19 марта 2020

Если вы хотите подключиться к Kubernetes API Server из самого кластера Kubernetes, то есть из модуля, то вы можете использовать службу kubernetes (через порт 443), созданную по умолчанию и доступную во всех пространствах имен, и не следует настраивать внешний балансировщик нагрузки для этого и попробуйте подключиться к нему через этот балансировщик нагрузки, потому что тогда вы маршрутизируете трафик c из кластера на балансировщик нагрузки вне кластера, чтобы просто снова войти в кластер и достичь сервера Kubernetes API.

Вы должны настроить внешний балансировщик нагрузки для Kubernetes API Server (порт 6443) и использовать его для подключения к Kubernetes API Server, когда вы хотите подключиться к нему вне кластера, т.е. через kubectl с использованием файла kubeconfig.

...