Amazon web services 通过使用kops创建的AWS群集上的入口使k8s服务可用

Amazon web services 通过使用kops创建的AWS群集上的入口使k8s服务可用,amazon-web-services,kubernetes,traefik,kops,Amazon Web Services,Kubernetes,Traefik,Kops,在使用kubeadm在一些KVM上尝试kubernetes之后,我想使用它在AWS上设置一个适当的自动可伸缩集群,并为一些网站提供服务 kops create cluster…的惊人魔力给了我一堆ec2实例,使k8s API在test cluster.example.com上可用,甚至配置了我的本地~/.kube/config,这样我就可以kubectl立即应用-f任何东西.yaml。这太棒了 我现在可以将部署发送到集群并配置入口规则了——所有这些都可以在仪表板上看到。然而,目前还不清楚如何将集

在使用kubeadm在一些KVM上尝试kubernetes之后,我想使用它在AWS上设置一个适当的自动可伸缩集群,并为一些网站提供服务

kops create cluster…
的惊人魔力给了我一堆ec2实例,使k8s API在
test cluster.example.com
上可用,甚至配置了我的本地
~/.kube/config
,这样我就可以
kubectl立即应用-f任何东西.yaml
。这太棒了

我现在可以将部署发送到集群并配置入口规则了——所有这些都可以在仪表板上看到。然而,目前还不清楚如何将集群中的节点与我拥有的域名相关联

在我的小型KVM k8s中,我只需在端口
:80
:443
上安装并公开它。然后,我转到DNS设置并添加一些记录,这些记录指向群集节点的公共IP。在AWS中,有一组动态虚拟机,当集群不处于重载状态时,其中一些虚拟机可能会停机。因此,我觉得我需要使用外部负载平衡器,因为我的服务公开了两个随机端口,而不是固定端口:80和:443,但我不确定


有哪些选择?他们的成本是多少?如果域名不受AWS控制,DNS记录应该怎么做?

在我的案例中,我使用了nginx入口控制器。我认为traefik的设置将是相同的

1) 将traefik服务类型设置为loadBalancer

Kubernetes将添加ELB规则

2) 将路由53中的CNAME或别名设置为ELB主机名


您可以使用将公开的服务和入口与Route53同步。

将您的服务配置为负载平衡器服务不足以让您的群集设置实际的负载平衡器,您需要一个运行方式与上述类似的入口控制器

您应该添加kops nginx ingress插件:

在这种情况下,AWS上的nginx入口控制器将找到入口并为其创建AWS ELB。我不确定花费多少,但值得

还可以考虑节点端口,可以访问节点的公共IPS和节点端口(当然要向安全组添加规则)

您还可以考虑支持HTTP/2和WebSoCube的新AWS ELB V2或ALB。您可以为此使用alb入口控制器


最后,如果你想要SSL(你应该考虑)Kube乐高项目,它将自动为你获得SSL证书。p> 我不熟悉kops,但您是否部署了入口控制器?域应该由入口控制器处理。我有,是的。在我的非AWS kubernetes集群(节点是具有固定IP地址的“宠物”)上,我使用traefik作为入口控制器,它只使用80和443。DNS记录只是指向公共IP地址,所有这些都可以正常工作(直到节点死亡)。对于kops/AWS,我期待一些不同的东西,因为节点群不再是静态的。我的服务类型是LoadBalancer,我看到elb是在没有在我身边创建任何入口控制器的情况下创建的。我看到了相同的事情@Toddams,但我不知道这是好事还是坏事。请注意,
kube lego
是非润滑的。使用
证书管理器