參考:集群是執行 kubernetes **的、 由控制平面管理的一組 節點(物理機或虛擬機器)。 kubernetes v1.21 支援的最大節點數為 5000。 更具體地說,kubernetes旨在適應滿足以下所有標準的配置:
你可以通過新增或刪除節點來擴充套件集群。集群擴縮的方式取決於集群的部署方式。
為避免遇到雲**商配額問題,在建立具有大規模節點的集群時,請考慮以下事項:
由於某些雲**商限制了建立新例項的速度,因此通過分批啟動新節點來控制集群擴充套件操作,並在各批之間有乙個暫停。
對於大型集群,你需要乙個具有足夠計算能力和其他資源的控制平面。
通常,你將在每個故障區域執行乙個或兩個控制平面例項, 先垂直縮放這些例項,然後在到達下降點(垂直)後再水平縮放。
你應該在每個故障區域至少應執行乙個例項,以提供容錯能力。 kubernetes 節點不會自動將流量引向相同故障區域中的控制平面端點。 但是,你的雲**商可能有自己的機制來執行此操作。
例如,使用託管的負載均衡器時,你可以配置負載均衡器傳送源自故障區域 a 中的 kubelet 和 pod 的流量, 並將該流量僅定向到也位於區域 a 中的控制平面主機。 如果單個控制平面主機或端點故障區域 a 離線,則意味著區域 a 中的節點的所有控制平面流量現在都在區域之間傳送。 在每個區域中執行多個控制平面主機能降低出現這種結果的可能性。
為了提高大規模集群的效能,你可以將事件物件儲存在單獨的專用 etcd 例項中。
在建立集群時,你可以(使用自定義工具):
kubernetes 資源限制 有助於最大程度地減少記憶體洩漏的影響以及 pod 和容器可能對其他元件的其他方式的影響。 這些資源限制適用於外掛程式資源, 就像它們適用於應用程式工作負載一樣。
例如,你可以對日誌元件設定 cpu 和記憶體限制
...
containers:
- name: fluentd-cloud-logging
image: fluent/fluentd-kubernetes-daemonset:v1
resources:
limits:
cpu: 100m
memory: 200mi
外掛程式的預設限制通常基於從中小規模 kubernetes 集群上執行每個外掛程式的經驗收集的資料。 外掛程式在大規模集群上執行時,某些資源消耗常常比其預設限制更多。 如果在不調整這些值的情況下部署了大規模集群,則外掛程式可能會不斷被殺死,因為它們不斷達到記憶體限制。 或者,外掛程式可能會執行,但由於 cpu 時間片的限制而導致效能不佳。
為避免遇到集群外掛程式資源問題,在建立大規模集群時,請考慮以下事項:
verticalpodautoscaler 是一種自定義資源,你可以將其部署到集群中,幫助你管理資源請求和 pod 的限制。 訪問 vertical pod autoscaler 以了解有關 verticalpodautoscaler 的更多資訊, 以及如何使用它來擴充套件集群元件(包括對集群至關重要的外掛程式)的資訊。
集群自動擴縮器 與許多雲**商整合在一起,幫助你在你的集群中,按照資源需求級別執行正確數量的節點。
k8s最佳實踐
通過下面兩種方式可以減小構建映象大小 small base images 有些base映象有非常齊全的工具鏈,考慮考慮是否需要這些工具鏈,還是只需要精簡映象版映象並補充所需的工具 builder pattern 對於一些go c語言專案,使用docker提供的builder pattern,先構建乙...
k8s編排最佳實踐
不受任何控制器 deployment,replicasets,jobs 控制的pod稱之為裸pod foo service host foo service port 如果 中要訪問service,不要使用上述環境變數,最好使用service的dns名稱,上述環境變數只是為了解決有些老的系統無法使用...
K8S 最佳實踐 對映外部服務
大多數 kubernetes 使用者都有可能用到集群外部的服務。例如,您可能使用 twillio api 傳送簡訊,或使用 google cloud vision api 進行影象分析。如果位於不同環境中的應用連線相同的外部端點,並且您不打算將外部服務引入 kubernetes 集群,那麼在 中直接...