2017-07-24 32 views
1

在使用kubeadm在幾個KVM上嘗試kubernetes之後,我想在AWS上設置適當的自動擴展羣集,並使用kops併爲其提供一些網站。通過使用kops創建的AWS羣集上的入口提供k8s服務

kops create cluster ...的令人興奮的魔術給了我一堆EC2實例,使得在test-cluster.example.com提供的K8S API,甚至配置我的地方~/.kube/config讓我可以kubectl apply -f any-stuff.yaml的時候了。這太棒了!

我現在可以將部署發送到集羣並配置入口規則 - 所有這些東西都可以在儀表板中看到。然而,目前還不清楚我如何將我的集羣中的節點與我所擁有的域名相關聯。

在我的小型KVM K8s中,我只需安裝traefik並將其展示在端口:80:443上。然後我進入我的DNS設置並添加幾條A記錄,這些記錄指向我的羣集節點的公共IP。在AWS中,有一組動態的虛擬機,其中一些虛擬機在羣集不負載較重時可能會關閉。所以這感覺就像我需要使用外部負載平衡器,因爲我的traefik helm chart服務暴露兩個隨機端口,而不是固定的:80和:443,但我不確定。

有什麼選擇?他們的成本是多少?如果域不受AWS控制,應該如何處理DNS記錄?

+0

我對kops不熟悉,但是您是否部署了入口控制器?域應該由入口控制器來處理。 – danielepolencic

+0

我有,是的。在我的非AWS kubernetes羣集上(節點是帶有固定IP地址的「寵物」),我有traefik作爲入口控制器,它只使用80和443。DNS記錄只是指向公共IP地址,並且所有工作都正常(直到節點死亡)。對於kops/AWS,我期望有些不同,因爲節點隊伍不再是靜態的。 –

回答

1

就我而言,我使用了nginx-ingress-controller。我認爲與traefik的設置將是相同的。

1)將traefik服務類型設置爲loadBalancer。

Kubernetes將添加ELB規則。

2)將Route53中的CNAME或ALIAS設置爲ELB主機名。

您可以使用https://github.com/kubernetes-incubator/external-dns來同步公開的服務和入口與Route53同步。

0

將您的服務配置爲LoadBalancer服務不足以讓您的羣集設置實際的負載平衡器,您需要一個像上面那樣運行的入口控制器。

您應該添加KOPS nginx的入口插件:https://github.com/kubernetes/kops/tree/master/addons/ingress-nginx

在這種情況下,在AWS上nginx的入口控制器會發現進入併爲它創建一個AWS ELB。我不確定成本,但它的價值。

你也可以考慮,你可以訪問對節點的公網IP和節點端口(一定要規則添加到您的安全組)

你也可以考慮新的AWS ELB v2或ALB節點端口,支持Http/2和websockets。你可以使用ALB入口控制器https://github.com/coreos/alb-ingress-controller

最後如果你想要SSL(你應該)考慮kube-lego項目,它會自動爲你獲得SSL證書。 https://github.com/jetstack/kube-lego

+0

我的服務類型是LoadBalancer,並且我看到elb是在沒有任何創建在我身邊的入口控制器的情況下創建的 – Toddams

相關問題