LoadBalancer external-ip 卡在待定状态

LoadBalancer external-ip stuck in pending

我已经使用 kubeadm 创建了一个带有 AWS ec2 实例的 Kubernetes 集群,但是当我尝试创建类型为 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 地址。

请问有没有人遇到过并成功解决的?

谢谢。

您需要在 k8s 和 AWS 之间设置接口,这是一个ws-cloud-provider-controller

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

更多详情可查看:

完成此设置后,您不仅可以控制为类型为 LoadBalancer 的每个 k8s 服务创建 AWS LB。而且,您还可以使用 [=26= 控制许多事情]注释.

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

Different settings can be applied to a load balancer service in AWS using annotations.