LoadBalancer external-ip завис в ожидании - PullRequest
0 голосов
/ 12 июля 2020

Я создал кластер Kubernetes с AWS экземплярами ec2 с помощью kubeadm, но когда я пытаюсь создать службу с типом LoadBalancer, я получаю статус ожидания EXTERNAL-IP

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP         123m
nginx        LoadBalancer   10.107.199.170  <pending>     8080:31579/TCP  45m52s

Моя команда создания

kubectl expose deployment nginx --port 8080 --target-port 80 --type=LoadBalancer

Я не уверен, что делаю не так.

Я ожидаю увидеть ВНЕШНИЙ IP-адрес, указанный для балансировщика нагрузки.

У кого-нибудь было это и успешно решено, пожалуйста?

Спасибо.

1 Ответ

2 голосов
/ 12 июля 2020

Вам необходимо настроить интерфейс между k8s и AWS, который является ws-cloud-provider-controller .

apiVersion: kubeadm.k8s.io/v1beta1
kind: InitConfiguration
nodeRegistration:
  kubeletExtraArgs:
    cloud-provider: aws

Подробнее см. найти:

Завершив sh эту настройку, вы сможете управлять не только созданием AWS LB. для каждой службы k8s с типом LoadBalancer .. Но также вы сможете управлять многими вещами, используя аннотации .

apiVersion: v1
kind: Service
metadata:
  name: example
  namespace: kube-system
  labels:
    run: example
  annotations:
     service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:xx-xxxx-x:xxxxxxxxx:xxxxxxx/xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx #replace this value
     service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  type: LoadBalancer
  ports:
  - port: 443
    targetPort: 5556
    protocol: TCP
  selector:
    app: example

К балансировщику нагрузки можно применять различные настройки услуга в AWS с использованием аннотаций .

...