简称 | 组件名称 | 描述 |
eklet | 超级节点管理器 | 负责 Podsandbox 生命周期的管理,并对外提供原生 kubelet 与节点相关的接口。 |
tke-scheduler | 调度器 | 负责根据调度策略将 workload 弹性上云,仅会安装在非 TKE 发行版的 K8S 集群上,TKE 发行版集群不会安装此组件。其中 TKE 发行版(TKE Kubernetes Distro)是由腾讯云 TKE 发布的 K8S 发行版本,用于帮助用户创建与云上 TKE 完全一致的 K8S 集群,目前 TKE 发行版集群已经在 GitHub 开源,详情见 TKE Kubernetes Distro。 |
admission-controller | 容忍控制器 | 负责为处于 pending 状态的 Pod 添加容忍,使其可以调度到超级节点上。 |
AUTO_SCALE_EKS=true|false
分为全局开关和局部开关,用来控制 workload 在 pending
的情况下是否弹性调度到腾讯云 TKE Serverless,如表格所示:kubectl get cm -n kube-system eks-config
中 AUTO_SCALE_EKS
,默认开启。 spec.template.metadata.annotations ['AUTO_SCALE_EKS']
全局开关 | 局部开关 | 行为 |
AUTO_SCALE_EKS=true | AUTO_SCALE_EKS=false | 调度成功 |
AUTO_SCALE_EKS=true | 未定义 | 调度成功 |
AUTO_SCALE_EKS=true | AUTO_SCALE_EKS=true | 调度成功 |
AUTO_SCALE_EKS=false | AUTO_SCALE_EKS=false | 调度失败 |
AUTO_SCALE_EKS=false | 未定义 | 调度失败 |
AUTO_SCALE_EKS=false | AUTO_SCALE_EKS=true | 调度成功 |
未定义 | AUTO_SCALE_EKS=false | 调度成功 |
未定义 | 未定义 | 调度成功 |
未定义 | AUTO_SCALE_EKS=true | 调度成功 |
tke-scheduler
,TKE 发行版 K8S 则不需要指定调度器。 LOCAL_REPLICAS: N
。 pending
的 workload 将扩容到腾讯云 EKS。 pending
的 workload 将扩容到 TKE Serverless 集群。DaemonsetForbidden
。 eks.tke.cloud.tencent.com/resolv-conf
的 annotation 后,生成的 cxm 子机里的 /etc/resolv.conf 就会被更新成用户定义的内容。eks.tke.cloud.tencent.com/resolv-conf: |nameserver 4.4.4.4nameserver 8.8.8.8
git clone https://github.com/tkestack/charts.git
cloud:uniqueID:"{IDC集群的唯一标识符,用于区分账号下不同集群,不超过16个字节,提交后不可修改,当账号下有多个集群时必填}"appID: "{腾讯云账号 APPID}"ownerUIN: "{腾讯云用户账号 ID}"secretID: "{腾讯云账号 secretID}"secretKey: "{腾讯云账号 secretKey}"vpcID: "{EKS Pod 放置的 VPC ID}"regionShort: "{EKS Pod 放置的 region 简称}"regionLong: "{EKS Pod 放置的 region 全称}"subnets:- id: "{EKS Pod 放置的子网 ID}"zone: "{EKS Pod 放置的可用区}"eklet:PodUsedApiserver: "{当前集群的 API Server 地址}"
helm install tke-resilience --namespace kube-system ./tke-resilience --debug
# kubectl get Pod -n kube-system | grep resilienceeklet-tke-resilience-5f9dcd99df-rgsmc 1/1 Running 0 43heks-admission-tke-resilience-5bb588dc44-9hvhs 1/1 Running 0 44h
# kubectl get nodeNAME STATUS ROLES AGE VERSION10.0.1.xx Ready <none> 2d4h v1.20.4-tke.110.0.1.xx Ready master 2d4h v1.20.4-tke.1eklet-subnet-xxxxxxxx Ready <none> 43h v2.4.6
nginx-deployment
,该应用有4个副本,其中3个在 TKE Serverless 集群,1个在本地集群,Yaml 示例如下:apiVersion: apps/v1kind: Deploymentmetadata:name: nginx-deploymentlabels:app: nginxspec:replicas: 4strategy:type: RollingUpdateselector:matchLabels:app: nginxtemplate:metadata:annotations:AUTO_SCALE_EKS: "true"LOCAL_REPLICAS: "1" #设置本地集群运行的副本数为 1labels:app: nginxspec:#schedulerName: tke-scheduler 如果是第三方集群则需要执行调度器为 tke-schedulercontainers:- name: nginximage: nginximagePullPolicy: IfNotPresent
# kubectl get Pod -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-deployment-77b9b9bc97-cq9ds 1/1 Running 0 27s 10.232.1.88 10.0.1.xxx <none> <none>nginx-deployment-77b9b9bc97-s9vzc 1/1 Running 0 27s 10.0.1.118 eklet-subnet-xxxxxxxx <none> <none>nginx-deployment-77b9b9bc97-sd4z5 1/1 Running 0 27s 10.0.1.7 eklet-subnet-xxxxxxxx <none> <none>nginx-deployment-77b9b9bc97-z86tx 1/1 Running 0 27s 10.0.1.133 eklet-subnet-xxxxxxxx <none> <none>
# kubectl scale deployment nginx-deployment --replicas=3
# kubectl get Pod -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-deployment-77b9b9bc97-cq9ds 1/1 Running 0 7m38s 10.232.1.88 10.0.1.xxx <none> <none>nginx-deployment-77b9b9bc97-s9vzc 1/1 Running 0 7m38s 10.0.1.118 eklet-subnet-xxxxxxxx <none> <none>nginx-deployment-77b9b9bc97-sd4z5 1/1 Running 0 7m38s 10.0.1.7 eklet-subnet-xxxxxxxx <none> <none>
本页内容是否解决了您的问题?