所以我正在使用Kubernetes进行侧面项目,这很棒 . 运行一个像我正在进行的小项目更便宜(一个3-5个实例的小集群基本上给了我所需的一切,每月约30美元的GCP) .
我正在努力的唯一领域是尝试使用kubernetes Ingress资源映射到集群并扇出我的微服务(它们是小型Go或Node后端) . 我有入口的配置设置映射到不同的服务,那里没有问题 .
我知道在创建入口资源时,您可以轻松地让GCP启动LoadBalancer . 这很好,但它也代表另外20美元/月,这增加了项目的成本 . 一旦/如果这个东西得到一些牵引力,那可以忽略,但是现在也为了更好地理解Kubernetes,我想做以下事情:
-
从GCP获取静态IP,
-
使用它与入口资源
-
在同一个集群中托管负载均衡器(使用nginx负载均衡器)
-
避免支付外部负载均衡器
有没有办法甚至可以使用Kubernetes和入口资源来完成?
谢谢!
2 回答
是的,这是可能的 . 部署入口控制器,并使用NodePort服务进行部署 . 例:
现在,创建一个带有DNS条目的入口:
现在,假设您的静态IP连接到运行kube-proxy的任何kubernetes节点,将DNS更新为指向静态IP,您应该能够访问
myapp.example.com:32080
并且ingress会将您映射回您的应用程序 .还有一些额外的东西:
如果您想使用低于32080的端口,请记住,如果您使用的是CNI网络,you'll have trouble with hostport . 建议让负载均衡器监听端口80,我想你可能只需要设置nginx进行代理传递,但这很难 . 这就是推荐使用 Cloud 提供商的负载均衡器的原因:)
您还可以创建一个nginx入口图表,让它拉出一个短暂的IP,然后将其升级为静态 . 这将为您留下L7单区负载均衡器 .
本指南通过它 . 如果你使用kube-lego,你可以忽略TLS的东西,它与nginx-ingress一样好用
https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/static-ip