3

在使用 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 中,有一组动态的虚拟机,当集群负载不重时,其中一些可能会停机。所以感觉我需要使用外部负载均衡器,因为我的traefik helm 图表服务公开了两个随机端口而不是固定的:80 和:443,但我不确定。

有什么选择?他们的成本是多少?如果域不受 AWS 控制,应该如何处理 DNS 记录?

4

2 回答 2

2

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

您应该添加 kops nginx 入口插件: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

于 2017-08-08T07:43:36.793 回答
1

就我而言,我使用了 nginx-ingress-controller。我认为使用 traefik 的设置将是相同的。

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

Kubernetes 将添加 ELB 规则。

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

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

于 2017-08-04T17:02:41.950 回答