繁体   English   中英

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

[英]Make k8s services available via ingress on an AWS cluster created with kops

在使用kubeadm在几个KVM上尝试kubernetes之后,我想在AWS上使用kops设置一个适当的自动可扩展集群,并为其提供一些网站。

的令人兴奋的魔法kops create cluster ...给了我一堆EC2实例,使得可用的K8S API在test-cluster.example.com甚至配置我的本地~/.kube/config ,这样我可以kubectl apply -f any-stuff.yaml马上。 这太棒了!

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

在我的小KVM k8s中,我只需安装traefik并在端口上公开它:80:443 然后我转到我的DNS设置并添加一些A记录,这些记录指向我的群集节点的公共IP。 在AWS中,存在一组动态VM,其中一些可能在群集未处于高负载时发生故障。 所以感觉我需要使用外部负载均衡器,因为我的traefik头盔图服务暴露了两个随机端口而不是固定:80和:443,但我不确定。

有什么选择? 他们的费用是多少? 如果域不受AWS控制,应该如何转到DNS记录?

将服务配置为LoadBalancer服务不足以让您的集群设置实际的负载均衡器,您需要一个像上面那样运行的入口控制器。

你应该添加kops nginx ingress插件: https//github.com/kubernetes/kops/tree/master/addons/ingress-nginx

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

您还可以考虑可以针对节点的公共ips和节点端口访问的节点端口(确保将规则添加到安全组)

您还可以考虑支持Http / 2和websockets的新AWS ELB v2或ALB。 您可以使用alb-ingress-controller https://github.com/coreos/alb-ingress-controller

最后,如果您想要SSL(您应该)考虑kube-lego项目,该项目将自动为您获取SSL证书。 https://github.com/jetstack/kube-lego

在我的例子中,我使用了nginx-ingress-controller。 我认为与traefik的设置将是相同的。

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

Kubernetes将添加ELB规则。

2)将Route53中的CNAME或ALIAS设置为ELB主机名。

您可以使用https://github.com/kubernetes-incubator/external-dns与Route53同步公开的服务和入口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM