lev*_*lex 5 amazon-ec2 kubernetes
我在Amazon EC2上的CoreOS实例上运行了kubernetes(0.15)集群
当我创建一个我想要公开访问的服务时,我目前将EC2实例的一些私有IP地址添加到服务描述中,如下所示:
{
"kind": "Service",
"apiVersion": "v1beta3",
"metadata": {
"name": "api"
},
"spec": {
"ports": [
{
"name": "default",
"port": 80,
"targetPort": 80
}
],
"publicIPs": ["172.1.1.15", "172.1.1.16"],
"selector": {
"app": "api"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以将这些IP添加到ELB负载均衡器并将流量路由到这些机器.
但为了实现这一点,我需要在我运行的所有服务中维护集群中所有机器的列表,这感觉不对.
目前推荐的解决方法是什么?
(我知道createExternalLoadBalancer,但这似乎还不支持AWS)
您似乎对该领域有很好的了解 - 不幸的是我没有任何好的解决方法适合您。
CreateExternalLoadBalancer 确实还没有准备好 - 它需要对服务基础设施进行一些彻底修改才能使其适用于 AWS,因为 AWS 的负载均衡器与 GCE 和 Openstack 的负载均衡器有很大不同。
不幸的是,没有简单的方法可以让 PortalIP 或外部静态 IP 直接路由到支持服务的 Pod,因为这样做需要在任何 Pod 移动或重新创建时更新路由基础设施。您必须拥有到集群内节点的 PortalIP 或外部 IP 路由,这就是您已经使用 PublicIPs 字段和 ELB 进行的有效操作。
您现在使用负载均衡器所做的可能是最好的选择 - 这基本上就是 CreateExternalLoadBalancer 在可用后将执行的操作。您可以将实例的外部 IP 放入 PublicIPs 字段,然后通过其中之一访问服务,但这将外部连接与您使用的节点 IP 的生命周期紧密耦合。
| 归档时间: |
|
| 查看次数: |
1698 次 |
| 最近记录: |