【问题标题】:Kubernetes - traefik external ip stuck in pendingKubernetes - traefik 外部 ip 卡在挂起
【发布时间】:2018-11-15 21:30:08
【问题描述】:

我在 AWS 中创建了一个两节点集群,并使用 helm 安装了 traefik。我看到服务外部 IP 卡在挂起状态。检查了几个来源,但找不到任何解决问题的方法。任何帮助表示赞赏

helm install stable/traefik



ubuntu@ip-172-31-34-78:~$ kubectl get pods -n default
NAME                                      READY   STATUS    RESTARTS   AGE
unhinged-prawn-traefik-67b67f55f4-tnz5w   1/1     Running   0          18m
ubuntu@ip-172-31-34-78:~$ kubectl get services -n default
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
kubernetes               ClusterIP      10.96.0.1       <none>        443/TCP                      55m
unhinged-prawn-traefik   LoadBalancer   10.102.38.210   <pending>     80:30680/TCP,443:32404/TCP   18m
ubuntu@ip-172-31-34-78:~$ kubectl describe service unhinged-prawn-traefik
Name:                     unhinged-prawn-traefik
Namespace:                default
Labels:                   app=traefik
                          chart=traefik-1.52.6
                          heritage=Tiller
                          release=unhinged-prawn
Annotations:              <none>
Selector:                 app=traefik,release=unhinged-prawn
Type:                     LoadBalancer
IP:                       10.102.38.210
Port:                     http  80/TCP
TargetPort:               http/TCP
NodePort:                 http  30680/TCP
Endpoints:                10.32.0.6:80
Port:                     https  443/TCP
TargetPort:               httpn/TCP
NodePort:                 https  32404/TCP
Endpoints:                10.32.0.6:8880
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

ubuntu@ip-172-31-34-78:~$ kubectl get svc unhinged-prawn-traefik --namespace default -w
NAME                     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
unhinged-prawn-traefik   LoadBalancer   10.102.38.210   <pending>     80:30680/TCP,443:32404/TCP   24m

【问题讨论】:

    标签: kubernetes traefik


    【解决方案1】:

    我不确定您是如何安装集群的,但基本上,kube-controller-manager/kubelet/kube-apiserver 无法与 AWS API 通信以创建负载均衡器来为您的Service 提供流量。

    • 这可能就像您的实例缺少所需的 instance profile 以及创建负载均衡器和路由的权限一样简单。

    • 您也可能需要将此标志添加到所有 kubelet、kube-apiserver 和 kube-controller-manager:

      --cloud-provider=aws
      
    • 也可能是您的实例上缺少这些EC2 tags

      KubernetesCluster=<yourclustername>
      kubernetes.io/cluster/kubernetes=owned
      k8s.io/role/node=1
      

    请注意,您的节点所在的子网上可能还需要KubernetesCluster=&lt;yourclustername&gt; 标签。

    • 也可能是您的 K8s 节点没有如下所示的 ProviderID: 规范:

      ProviderID: aws:///<aws-region>/<instance-id>
      # You can add it with kubectl edit <node-name>
      

    请注意,--cloud-provider 标志已被弃用,取而代之的是 Cloud Providers 控制器。

    【讨论】:

    • 感谢 Rico。 S对不起,延迟回复。该问题与创建负载均衡器的 IAM 权限有关。
    • @IT_novice 您需要添加什么权限才能解决问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多