[英]How to resize K8s cluster with kops, cluster-autoscaler to dynamically increase Masters
我們已使用kops工具( https://github.com/kubernetes/kops )並根據AWS帖子( https://aws.amazon.com/blogs/compute/kubernetes- )在AWS賬戶的EC2計算機上配置了Kubernetes集群clusters-aws-kops / )以及其他資源。
我們想要設置一個K8s主集群和從集群,以便:
我們嘗試通過以下方式配置集群以實現上述目標。
使用以下配置,在AWS EC2機器上創建了K8s集群:節點數= 3,主數= 3,區域= us-east-1c,us-east-1b,us-east-1a。 我們觀察到,創建了一個具有8個主節點和3個從節點的K8s集群。 每個主服務器和從屬服務器都位於3個可用區中。
然后我們嘗試使用( https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-run-on-master來調整集群中節點/從節點的大小。 yaml )。 我們將node_asg_min設置為3,將node_asg_max設置為5。當我們增加從屬服務器的工作負載以觸發自動擴展策略時,我們看到產生了其他(在設置過程中創建了默認值3之后)從屬節點,並且它們確實加入了聚集在各個可用區中。 這按預期工作。 毫無疑問。
我們還希望設置集群,以便基於系統負載增加主服務器的數量。 有什么辦法可以做到這一點? 我們嘗試了幾種方法,結果共享如下:
A)我們不確定集群自動縮放器是否在這里有所幫助,但是仍然嘗試使用( https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/aws來調整集群中Master的大小。 /examples/cluster-autoscaler-run-on-master.yaml )。 這在創建新集群時很有用,但在調整現有集群中的主服務器數量時卻沒有用。 我們沒有找到一個參數來指定Master的node_asg_min,node_asg_max的方式,就像為從屬節點一樣。 有什么辦法可以做到這一點?
B)我們將ASG(自動縮放組)中的MIN計數從1增加到3,與每個主設備的三個IG(實例組)之一相關聯。 我們發現創建了新實例。 但是,他們沒有加入主集群。 有什么辦法可以做到這一點?
您能否為我們指出正確執行此操作的步驟和資源,以便我們可以配置主機數量以根據系統負載自動調整大小並處於多可用區模式?
親切的問候,沙市
無需擴展Master
節點。
主組件提供集群的控制平面。 主組件對群集進行全局決策(例如,調度),並檢測和響應群集事件(在不滿足復制控制器的“ replicas”字段時啟動新的pod)。
主組件可以在群集中的任何計算機上運行。 但是,為簡單起見,設置腳本通常在同一台計算機上啟動所有主組件,並且不在該計算機上運行用戶容器。 有關多主虛擬機設置示例,請參閱構建高可用性群集 。
kube-apiserver
主組件上的組件,用於公開Kubernetes API。 它是Kubernetes控制平面的前端。
等
一致且高度可用的鍵值存儲用作所有集群數據的Kubernetes的后備存儲。
庫伯調度器
主組件上的組件,該組件監視未分配節點的新創建的Pod,並選擇要在其上運行的節點。
kube-controller-manager
雲控制器經理
運行與基礎雲提供商交互的控制器。 cloud-controller-manager二進制文件是Kubernetes 1.6版中引入的alpha功能。
有關更多詳細說明,請閱讀Kubernetes組件文檔。 另外,如果您正在考慮HA,則可以閱讀有關使用kubeadm創建高可用性集群的信息。
我認為您的假設是,與kubernetes節點類似,高手負責彼此之間的工作。 事實並非如此,因為主人的主要任務是彼此達成共識。 這是通過etcd(分布式鍵值存儲)完成的。 維護這樣的存儲的問題對於一台機器來說很容易,但是隨着添加的機器越多,這個問題就越難解決。
添加主服務器的好處是能夠以使所有主服務器更胖(更多的CPU / RAM ...)為代價,使更多的主服務器故障幸免於難,以使其表現良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.