大規模集群
Kubernetes v1.6+ 單集群最大支持 5000 個節點,也就是說 Kubernetes 最新穩定版的單個集群支持
不超過 5000 個節點
不超過 150000 個 Pod
不超過 300000 個容器
每臺 Node 上不超過 100 個 Pod
公有云配額
對於公有云上的 Kubernetes 集群,規模大了之後很容易碰到配額問題,需要提前在雲平臺上增大配額。這些需要增大的配額包括
虛擬機個數
vCPU 個數
內網 IP 地址個數
公網 IP 地址個數
安全組條數
路由表條數
持久化存儲大小
Etcd 存儲
除了常規的 Etcd 高可用集群配置、使用 SSD 存儲等,還需要爲 Events 配置單獨的 Etcd 集群。即部署兩套獨立的 Etcd 集群,並配置 kube-apiserver
另外,Etcd 默認存儲限制爲 2GB,可以通過 --quota-backend-bytes
選項增大。
Master 節點大小
可以參考 AWS 配置 Master 節點的大小:
1-5 nodes: m3.medium
6-10 nodes: m3.large
11-100 nodes: m3.xlarge
101-250 nodes: m3.2xlarge
251-500 nodes: c4.4xlarge
more than 500 nodes: c4.8xlarge
爲擴展分配更多資源
Kubernetes 集群內的擴展也需要分配更多的資源,包括爲這些 Pod 分配更大的 CPU 和內存以及增大容器副本數量等。當 Node 本身的容量太小時,還需要增大 Node 本身的 CPU 和內存(特別是在公有云平臺上)。
以下擴展服務需要增大 CPU 和內存:
以下擴展服務需要增大副本數:
另外,爲了保證多個副本分散調度到不同的 Node 上,需要爲容器配置 AntiAffinity。比如,對 kube-dns,可以增加如下的配置:
Kube-apiserver 配置
設置
--max-requests-inflight=3000
設置
--max-mutating-requests-inflight=1000
Kube-scheduler 配置
設置
--kube-api-qps=100
Kube-controller-manager 配置
設置
--kube-api-qps=100
設置
--kube-api-burst=100
Kubelet 配置
設置
--image-pull-progress-deadline=30m
設置
--serialize-image-pulls=false
(需要 Docker 使用 overlay2 )Kubelet 單節點允許運行的最大 Pod 數:
--max-pods=110
(默認是 110,可以根據實際需要設置)
Docker 配置
設置
max-concurrent-downloads=10
使用 SSD 存儲
graph=/ssd-storage-path
預加載 pause 鏡像,比如
docker image save -o /opt/preloaded_docker_images.tar
和docker image load -i /opt/preloaded_docker_images.tar
節點配置
增大內核選項配置 /etc/sysctl.conf
:
應用配置
在運行 Pod 的時候也需要注意遵循一些最佳實踐,比如
爲容器設置資源請求和限制
spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
spec.containers[].resources.limits.ephemeral-storage
spec.containers[].resources.requests.ephemeral-storage
對關鍵應用使用 PodDisruptionBudget、nodeAffinity、podAffinity 和 podAntiAffinity 等保護。
儘量使用控制器來管理容器(如 Deployment、StatefulSet、DaemonSet、Job 等)。
開啓 Watch Bookmarks 優化 Watch 性能(1.17 GA),客戶端凱伊在 Watch 請求中增加
allowWatchBookmarks=true
來開啓這個特性。減少鏡像體積,P2P 鏡像分發,預緩存熱點鏡像。
更多內容參考這裏。
必要的擴展
監控、告警以及可視化(如 Prometheus 和 Grafana)至關重要,推薦部署並開啓。
參考文檔
Last updated