裸金属上的外部轮廓外部ip

时间:2018-05-22 21:57:11

标签: kubernetes envoyproxy heptio-contour

我已使用kubespray设置了kubernetes群集,现在我正在尝试关注this guide

root@node1 ~ # kubectl get -n heptio-contour service contour -o wide
NAME      TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE       SELECTOR
contour   LoadBalancer   10.233.55.94   <pending>     80:32414/TCP,443:30149/TCP   42m       app=contour

好像EXTERNAL-IP待定,因为我在裸机上(不是AWS / GKE等)。

为了让外部IP显示,我需要做什么?

1 个答案:

答案 0 :(得分:5)

Kubernetes提供了三种公开服务的方式:

1)L4 LoadBalancer:仅适用于GCE和AWS等云提供商

2)通过NodePort公开服务:The NodePort指令在每个工作节点上分配一个端口,该节点将流量代理到相应的Pod。

3)L7 Ingress:The Ingress是一个专用负载均衡器(例如nginx,HAProxy,traefik,vulcand),它将传入的HTTP / HTTPS流量重定向到各自的端​​点

Kubernetes不提供裸机群集的网络负载平衡器(LoadBalancer类型的服务)的实现。

如果您未在受支持的IaaS平台(GCP,AWS,Azure ...)上运行Kubernetes群集,则无论何时创建,LoadBalancers都将保持“挂起”状态。

原因是外部世界和Kubernetes之间缺乏对IP路由的支持;传输DNS区域没有默认实现 Ingress用于将通信分配给集群内部。

即使在联合集群模式下也有外部项目提供裸机,以便成为独立或混合解决方案的一部分。

这取决于您拥有的项目的规模和成熟度,因此应首先选择合适的负载均衡器或VIP提供商:

https://github.com/google/metallb

https://docs.traefik.io/

https://github.com/kubernetes/contrib/tree/master/keepalived-vip

http://vulcand.github.io/

并弃用:

http://www.linuxvirtualserver.org/software/ipvs.html

请注意,在联邦集群中(多个裸机Kubernetes 需要将每台物理机的IP地址导出到中央API 提供商,可能不在我提供给您的链接中。