Azure Внешний балансировщик нагрузки и кластер Kubernetes - PullRequest
0 голосов
/ 16 октября 2018

Я должен создать кластер Kubernetes в MS Azure вручную, не используя AKS.Итак:

  1. Я создал 2 ВМ в одном наборе доступности: одну для мастера k8s и вторую для узла k8s.
  2. Я создал балансировщик внешней нагрузки и добавил 2 виртуальные машины ввнутренний пул.
  3. Я создал кластер k8s с помощью kubespray.
  4. Я создал службу развертывания и загрузки:

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: wrapper
    spec:
      replicas: 2
      template:
        metadata:
          labels:
            app: wrapper
        spec:
          containers:
          - name: wrapper
            image: wrapper:latest
            ports:
            - containerPort: 8080
              name: wrapper
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: wrapper
    spec:
      loadBalancerIP: <azure_loadbalancer_public_ip>
      type: LoadBalancer
      ports:
      - port: 8080
      selector:
        app: wrapper
    

Но служба LoadBalancer External-IP всегда ожидает:

kubectl get services
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP
wrapper      LoadBalancer   10.233.38.7   <pending>

Кроме того, telnet azure_loadbalancer_public_ip не работает.Я попытался использовать NodePort вместо LoadBalancer, но в этом случае у меня есть две конечные точки для моей службы на главном сервере k8s и на узле k8s.

Мне нужна одна точка входа: azure_loadbalancer_public_ip, то естьбалансирует трафик между всеми узлами в кластере.

Не могли бы вы помочь мне понять, что я делаю неправильно, и можно ли "привязать" Azure External Load Balancer к сервису LoadBalancer в Kubernetes?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

По сути, с API Azure невозможно создать балансировщик нагрузки.В основном вам необходимо:

  1. Добавить эту опцию: --cloud-provider=azure к вашим kube-apiserver, kube-controller-manager и всем kubelets, работающим на ваших узлах.
  2. Убедитесь, чтоваша виртуальная машина Azure имеет доступ к API Azure
  3. Перезапустите все компоненты с 1.

Это не требуется, если у вас установлен Cloud Controller Manager , которыйбета в K8s 1.12 на момент написания статьи.Обратите внимание, что опция --cloud-provider в какой-то момент будет устаревшей.

0 голосов
/ 16 октября 2018

Вам не нужно этого делать, k8s (если он настроен правильно) справится с этим за вас.Все, что вам нужно сделать, это дать ему соответствующие права, чтобы иметь возможность создавать балансировщик нагрузки в Azure.

...