天天看點

Kubernetes 叢集怎樣優化?看看這5個次元

Kubernetes 叢集怎樣優化?看看這5個次元

對于公有雲上的 kubernetes 叢集,規模大了之後很容器碰到配額問題,需要提前在雲平台上增大配額。這些需要增大的配額包括:

虛拟機個數

vcpu 個數

内網 ip 位址個數

公網 ip 位址個數

安全組條數

路由表條數

持久化存儲大小

參考gce随着node節點的增加master節點的配置:

1-5 nodes: n1-standard-1

6-10 nodes: n1-standard-2

11-100 nodes: n1-standard-4

101-250 nodes: n1-standard-8

251-500 nodes: n1-standard-16

more than 500 nodes: n1-standard-32

參考阿裡雲配置:

1、搭建高可用的etcd叢集,叢集規模增大時可以自動增加etcd節點;

目前的解決方案是使用etcd operator來搭建etcd 叢集,operator是coreos推出的旨在簡化複雜有狀态應用管理的架構,它是一個感覺應用狀态的控制器,通過擴充kubernetes api來自動建立、管理和配置應用執行個體。

etcd operator 有如下特性:

ceate/destroy: 自動部署和删除 etcd 叢集,不需要人額外幹預配置。

resize:可以動态實作 etcd 叢集的擴縮容。

backup:支援etcd叢集的資料備份和叢集恢複重建

upgrade:可以實作在更新etcd叢集時不中斷服務。

2、配置etcd使用ssd固态盤存儲;

3、設定 —quota-backend-bytes 增大etcd的存儲限制。預設值是 2g;

4、需要配置單獨的 etcd 叢集存儲 kube-apiserver 的 event。

node節點數量 >= 3000, 推薦設定如下配置:

node節點數量在 1000 — 3000, 推薦設定如下配置:

記憶體配置選項和node數量的關系,機關是mb:

在運作 pod 的時候也需要注意遵循一些最佳實踐,比如:

1、為容器設定資源請求和限制,尤其是一些基礎插件服務

在k8s中,會根據pod不同的limit 和 requests的配置将pod劃分為不同的qos類别:

guaranteed

burstable

besteffort

當機器可用資源不夠時,kubelet會根據qos級别劃分遷移驅逐pod。被驅逐的優先級:besteffort > burstable > guaranteed

2、對關鍵應用使用 nodeaffinity、podaffinity 和 podantiaffinity 等保護,使其排程分散到不同的node上。比如kube-dns 配置:

3、盡量使用控制器來管理容器(如 deployment、statefulset、daemonset、job 等)

kube-scheduler 配置

設定 —kube-api-qps=100 預設值是 50

kube-controller-manager 配置

設定 —kube-api-qps=100 預設值是20

設定 —kube-api-burst=100 預設值是30

作者:薛海山

https://www.jianshu.com/p/e9fcc1a9eea4