购买须知
说明:
因为不遵循本购买须知导致的服务不可用,相应服务不可用时间不属于服务不可用的计算范畴,更多请参见 容器服务服务等级协议。 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)的集群规格。
说明:
节点指 Kubernetes 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。
本页内容是否解决了您的问题?