Google Container Engine with external IP, without load balancer
我正在研究如何在google cloud kubernetes引擎上创建一堆服务器 . 最后使用负载均衡器制作了一些...虽然价格还不错,但现在我尝试使用NodePort的服务类型,它绑定到它所绑定的VM的本地IP地址,而不是外部IP或任何东西其他 . 我如何将流量路由到服务类型的node-port?另外,如果kubernetes自动执行此操作,是否可以安全地为节点中的容器创建SRV记录以使用可抢占的实例/可能的重新分配来访问我的服务?
1 回答
可以使用Kubernetes NodePort充当外部服务 .
NodePorts将在您可用于访问服务的每台主机上公开一个端口 .
这种方法的缺点是处理端口管理 .
应用程序不能假设HTTPS是端口443,或者MySQL在端口3306上运行 . 相反,它可能存在于PROD中的端口32042和DEV中的32012 .
考虑使用NodePort这种方式是群集安全性的一个漏洞,而且 NodePort cannot expose standard low-numbered ports like 80 and 443.
使用ingress,您可以运行软件负载 balancer 器(如nginx),在所有主机上将其公开为端口80/443,然后控制将任何HTTP流量路由到Kuberbetes服务 .
这最适用于HTTP / HTTPS等第7层流量 .
您可以尝试使用Ingress资源和Ingress控制器以及外部负载均衡器或公共IP来启用对内部服务的外部请求的基于路径的路由 .
由think-nodeport-kubernetes和cloud kubernetes nodeport vs ingress文章启发 .