用户指南

最佳实践

API 文档

购买说明

最近更新时间:2022-04-01 18:03:02

购买须知

说明:

因为不遵循本购买须知导致的服务不可用,相应服务不可用时间不属于服务不可用的计算范畴,更多请参考 《容器服务服务等级协议》

TKE 集群的可用性与集群 Pod、ConfigMap、CRD、Event 等资源的数量、以及各类资源的 Get/List 读操作 QPS、Patch/Delete/Create/Update 等写操作 QPS 密切相关,应尽量避免对资源数量较多的集群发起类 List 操作,避免把 TKE 集群当数据库使用,写入过多的 ConfigMap/CRD/EndPoints 等,影响集群可用性。

常见的类 List 操作如下(以 Pod 资源为例):

  • 带标签查询
    kubectl get pod -l app=nginx
  • 指定 namespace 查询
    kubectl get pod -n default
  • 查询整个集群的 pod 等
    kubectl get pod --all-namespaces
  • 通过 client-go 发起的 List 请求
    k8sClient.CoreV1().Pods("").List(metav1.ListOptions{})

如您有类似查询集群全量资源的需求,建议使用 K8s 的 informer 机制通过本地 cache 查询。对于一些简单的场景,可以通过在 List 请求中增加 ResourceVersion 参数,在 kube-apiserver cache 中查询,如 k8sClient.CoreV1().Pods("").List(metav1.ListOptions{ResourceVersion: "0"})。需注意,即使从 kube-apiserver cache 查询,如果对大量资源频繁发起 List 请求,仍会对 kube-apiserver 内存造成较大压力,仅建议在请求频率较低时使用该方式。

推荐配置

请在选购集群时参考如下推荐配置,根据业务实际情况选择合适的集群规格,以免集群控制面组件负载过大导致集群不可用。
例如,如果您计划在一个集群中部署 50 个节点,但是计划部署 2000 个 Pod, 则应该选用最大管理节点规模为 100(而非 50)的集群规格。

说明:

  • 节点指 Kubnernetss Node, 包含 CVM 节点,黑石节点,第三方节点等。节点计数时不包含虚拟节点。
  • Pod 包括所有 Namespace 下,所有状态的 Pod,但不包括系统组件相关 Pod(cni-agent 等)。
  • ConfigMap 不包括系统组件相关 Pod(cni-agent 等)。
  • 最大其他 K8s 资源数量指集群中除了 Pod, Node, ConfigMap 的其他 K8s 资源均不建议超过该值,例如您购买了最大管理节点规模为 L100 的集群,为了保障集群的可用性,集群中的 ClusterRole, Service, Endpoint 等 K8s 资源的数量均不应该超过 2500。
  • 建议每种资源类型的所有对象总和不应超过800MiB,每个资源对象大小不超过100KB。
集群规格 最大管理节点数量 最大 Pod 数量(推荐) 最大 ConfigMap 数量(推荐) 最大 CRD 数量 / 最大其他 K8s 资源数量(推荐)
L5 5 150 128 150
L20 20 600 256 600
L50 50 1500 512 1250
L100 100 3000 1024 2500
L200 200 6000 2048 5000
L500 500 15000 4096 10000
L1000 1000 30000 6144 20000
L3000 3000 90000 8192 50000
L5000 5000 150000 10240 100000
目录