Как использовать существующий LoadBalancer в службе Azure AKS? - PullRequest
0 голосов
/ 25 июня 2019

Я создал кластер AKS с Terraform.Я хочу, чтобы кластер имел LoadBalancer и статический общедоступный IP-адрес, и я хочу, чтобы они уже существовали в моих определениях Ingress Controller / LoadBalancer Service, поскольку я не хочу, чтобы они динамически создавались / удалялись манифестами Kubernetes.

Поэтому я также создал с помощью Terraform LoadBalancer и статического общедоступного IP-адреса в группе ресурсов узла и с базовым SKU в соответствии с рекомендациями документации и подключил общедоступный IP-адрес к LB.

Затем я создал службу типа LoadBalancer:

---                                                                                                                                                                                                                                            
kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  type: LoadBalancer
  loadBalancerIP: 8.8.8.8 (the public static IP allocated by Terraform)
  selector:
    name: my-pods-selector
  ports:
    - name: my-port
      protocol: TCP 
      port: 1234
      targetPort: 1234

Затем служба застревает в состоянии ОЖИДАНИЯ, и describe дает мне следующее:

$ kubectl describe svc my-service
[...]
Events:
  Type     Reason                      Age               From                Message
  ----     ------                      ----              ----                -------
  Normal   EnsuringLoadBalancer        5s (x9 over 15m)  service-controller  Ensuring load balancer
  Warning  CreatingLoadBalancerFailed  4s (x9 over 15m)  service-controller  Error creating load balancer (will retry): failed to ensure load balancer for service my-service: timed out waiting for the condition

Мне не удается найти дополнительную информацию об ошибке в выводе команды describe:

Error creating load balancer (will retry): failed to ensure load balancer for service my-service: timed out waiting for the condition

Кроме того, если не создается предварительно LoadBalancer, а только общедоступный IP-адрес, создается LoadBalancer.динамически, и все идет хорошо.

Вопрос: Как успешно сделать Azure (какой параметр конфигурации мне не хватает?) использовать tон уже существовал LB?

  • Kubernetes версия: 1.13.5

1 Ответ

1 голос
/ 26 июня 2019

Я хочу, чтобы кластер имел LoadBalancer и статический общедоступный IP-адрес, и я хочу, чтобы они уже существовали в моих определениях Ingress Controller / LoadBalancer Service, так как я не хочу, чтобы они создавались / удалялисьдинамически по манифестам Kubernetes.

К сожалению, вы не можете использовать уже существующий балансировщик нагрузки со статическим общедоступным IP-адресом для службы в кластере AKS.Вы можете взглянуть на ту же проблему в Github.Как показано в предложении:

Вам нужно разрешить AKS создавать ресурсы балансировки нагрузки в Azure для ваших служб, а не пытаться создавать их вручную перед ними, а затем использовать их в AKS.Просто создайте службу через API Kubernetes и позвольте сетевому плагину создавать и настраивать соответствующие ресурсы Azure.

Я предложу, что вы можете просто создать публичный IP с помощью метода статического выделения.Затем создайте службу с типом балансировки нагрузки и статическим общедоступным IP-адресом.

...