我已使用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显示,我需要做什么?
答案 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://github.com/kubernetes/contrib/tree/master/keepalived-vip
并弃用:
http://www.linuxvirtualserver.org/software/ipvs.html
请注意,在联邦集群中(多个裸机Kubernetes 需要将每台物理机的IP地址导出到中央API 提供商,可能不在我提供给您的链接中。