待处理的外部IP Kubernetes负载均衡器

时间:2019-10-01 10:21:19

标签: kubernetes-networkpolicy kubernetes-networking

Hi在centos中使用kubeadm安装了Kubernetes 当我在yaml文件中使用类型Load Balancer创建部署时,Kubernetes LB的外部IP为Pending,它停留在Pending状态

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP        13m
service    LoadBalancer   10.101.168.76   <pending>     80:32225/TCP   4m52s

2 个答案:

答案 0 :(得分:2)

请尝试运行:

kubectl describe svc <service-name>

并检查错误/警告。

下面的示例输出中的事件字段下描述了一个可能的错误示例-( SyncLoadBalancerFailed-找不到用于创建ELB的任何合适的子网):

Name:                     some-service
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"some-service","namespace":"default"},"spec":{"ports":[{"port":80,...
Selector:                 app=some
Type:                     LoadBalancer
IP:                       10.100.91.19
Port:                     <unset>  80/TCP
TargetPort:               5000/TCP
NodePort:                 <unset>  31022/TCP
Endpoints:                <none>
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type     Reason                  Age                From                Message
  ----     ------                  ----               ----                -------
  Normal   EnsuringLoadBalancer    68s (x8 over 11m)  service-controller  Ensuring load balancer
  Warning  SyncLoadBalancerFailed  67s (x8 over 11m)  service-controller  Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB

答案 1 :(得分:0)

已经讨论了十多次。

1)https://stackoverflow.com/a/53520738/9929015

2)https://stackoverflow.com/a/53343935/9929015

3)https://stackoverflow.com/a/53520738/9929015

4)https://stackoverflow.com/a/50080291/9929015

简而言之

  

Kubernetes不提供网络实现   裸机的负载均衡器(LoadBalancer类型的服务)   集群。 Kubernetes确实提供的Network LB的实现   都有调用各种IaaS平台(GCP,   AWS,Azure ...)。如果您未在受支持的IaaS平台(GCP,   AWS,Azure…),LoadBalancers将保持“待处理”状态   创建后无限期。

     

裸机操作员只剩下两个较小的工具   用户流量进入其群集“ NodePort”和“ externalIP”   服务。这两个选项都存在严重的缺点   生产用途,使裸金属集群成为二等公民   在Kubernetes生态系统中。

     

MetalLB旨在通过提供Network LB来纠正这种不平衡   与标准网络设备集成的实施,因此   裸机集群上的外部服务也“正常工作”   尽可能。

官方文档:https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer

  

在支持外部负载均衡器的云提供商上,设置   LoadBalancer的type字段为您的负载均衡器   服务。实际创建负载均衡器   异步,关于预配置的平衡器的信息是   在服务的.status.loadBalancer字段中发布。例如

     

来自外部负载均衡器的流量定向到后端   豆荚。云提供商决定如何进行负载均衡。

     

某些云提供商允许您指定loadBalancerIP。在那些   在这种情况下,负载均衡器是根据用户指定的   loadBalancerIP。如果未指定loadBalancerIP字段,则   用临时IP地址设置loadBalancer。如果您指定一个   loadBalancerIP,但您的云提供商不支持该功能,   您设置的loadbalancerIP字段将被忽略。

MetalLB项目:

https://metallb.universe.tf/

https://github.com/helm/charts/tree/master/stable/metallb

https://github.com/danderson/metallb