簡體   English   中英

LoadBalancer 外部 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。而且,您還可以使用annotations控制許多事情。

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

可以使用annotations將不同的設置應用於 AWS 中的負載均衡器服務。

要使用 EC2 在 AWS 上創建 K8s 集群,您需要考慮一些配置以使其按預期工作。 這就是為什么您的服務沒有與外部 IP 一起公開的原因。

you need to get the public IP of the EC2 instance that your cluster used it to deploy Nginx pod on it and then edit Nginx service to add external IP

kubectl edit service nginx 

這將提示終端添加外部 IP:

type: LoadBalancer
externalIPs:
   - 1.2.3.4

其中 1.2.3.4 是 EC2 實例的公共 IP。 然后確保您的端口允許您的安全組入站流量(31579)

現在您可以從任何打開的瀏覽器中使用 k8s 服務:1.2.3.4:31579

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM