簡體   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