上云无忧 > 文档中心 > 腾讯云容器服务实战教程 - IDC 集群添加超级节点用于弹性扩容
容器服务 TKE
腾讯云容器服务实战教程 - IDC 集群添加超级节点用于弹性扩容

文档简介:
使用场景: IDC 的资源有限,当需要应对业务突发流量,IDC 内的算力资源不足以应对时,可以选择使用公有云资源应对临时流量。TKE Resilience Chart 利用 TKE Serverless 容器服务,基于自定义的调度策略,通过添加超级节点的方式,将用户集群中的工作负载弹性上云,使用户 IDC 集群获得极大的弹性拓展能力,优势如下: 1. 用户 IDC / 私有云的硬件和维护成本保持不变。 2. 实现了用户 IDC / 私有云和公有云级别的应用高可用。 3. 用户按需使用公有云的资源,按需付费。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

使用场景

IDC 的资源有限,当需要应对业务突发流量,IDC 内的算力资源不足以应对时,可以选择使用公有云资源应对临时流量。TKE Resilience Chart 利用 TKE Serverless 容器服务,基于自定义的调度策略,通过添加超级节点的方式,将用户集群中的工作负载弹性上云,使用户 IDC 集群获得极大的弹性拓展能力,优势如下:
1. 用户 IDC / 私有云的硬件和维护成本保持不变。
2. 实现了用户 IDC / 私有云和公有云级别的应用高可用。
3. 用户按需使用公有云的资源,按需付费。

使用须知

1. 已开通 TKE Serverless 集群
2. 用户 IDC 与腾讯云 VPC 通过专线内网互联。
3. IDC 集群的 API Server 地址,腾讯云 VPC 网络可达。
4. 用户自有 IDC 集群可以访问公网,需要通过公网调用云 API。

TKE Resilience Chart 特性说明

组件说明

TKE Resilience Chart 主要是由超级节点管理器,调度器,容忍控制器3部分组成,如表格所示:
简称
组件名称
描述
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 添加容忍,使其可以调度到超级节点上。

主要特性

1. 如需要 TKE Serverless Pod 和本地集群的 Pod 互通,则要求本地集群是 Underlay 的网络模型(使用 Calico 之类的基于 BGP 路由,而不是 SDN 封装的 CNI 插件),并且需要在腾讯云 VPC 中添加本地 Pod CIDR 的路由信息,详情见 路由配置
2. Workload resilience 特性控制开关 AUTO_SCALE_EKS=true|false 分为全局开关和局部开关,用来控制 workload 在 pending 的情况下是否弹性调度到腾讯云 EKS,如表格所示:
全局开关:kubectl get cm -n kube-system eks-configAUTO_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
调度成功
3. 当使用社区版 K8S 的时候,需要在 workload 中指定调度器为 tke-scheduler,TKE 发行版 K8S 则不需要指定调度器。
4. Workload 设定本地集群保留副本数量 LOCAL_REPLICAS: N
5. Workload 扩容:
当本地集群资源不足,并满足全局和局部开关中调度成功的行为设定,pending 的 workload 将扩容到腾讯云 EKS。
当实际创建 workload 副本数量达到 N 后,并满足全局和局部开关中调度成功的行为设定,pending 的 workload 将扩容到 TKE Serverless 集群。
6. Workload 缩容:
TKE 发行版 K8S 会优先缩容 TKE Serverless 集群上的实例。
社区版 K8S 会随机缩容。
7. 调度规则的限制条件:

无法调度 DaemonSet Pod 到超级节点,此特性只在 TKE 发行版 K8S 有效,社区版 K8S DaemonSet Pod 会调度到超级节点,

但会显示 DaemonsetForbidden

无法调度 kube-system,tke-eni-ip-webhook 命名空间下的 Pod 到超级节点。
无法调度 securityContext.sysctls ["net.ipv4.ip_local_port_range"] 的值包含61000 - 65534的端口。
无法调度 Pod.Annotations [tke.cloud.tencent.com/vpc-ip-claim-delete-policy] 的 Pod。
无法调度 container (initContainer).ports [].containerPort (hostPort) 包含61000 - 65534的端口。
无法调度 container (initContainer) 中探针指定61000 - 65534的端口。
无法调度除了 nfs,Cephfs,hostPath,qcloudcbs 以外的 PV。
无法调度启用固定 IP 特性的 Pod 到超级节点。

8. 超级节点支持自定义默认 DNS 配置:用户在超级节点上新增 eks.tke.cloud.tencent.com/resolv-conf 的 annotation 后,

生成的 cxm 子机里的 /etc/resolv.conf 就会被更新成用户定义的内容。

注意
会覆盖原来超级节点的 DNS 配置,最终以用户的配置为准。
		
eks.tke.cloud.tencent.com/resolv-conf: |
nameserver 4.4.4.4
nameserver 8.8.8.8

操作步骤

获取 tke-resilience helm chart

		
git clone https://github.com/tkestack/charts.git

配置相关信息

编辑 charts/incubator/tke-resilience/values.yaml,配置以下信息:
		
cloud:
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 地址}"
说明
TKE Serverless 容器服务支持售卖的地域和可用区请参见 地域和可用区

安装 TKE Resilience Chart

您可通过 本地 Helm 客户端连接集群
执行以下命令,在第三方集群中通过 Helm Chart 安装 TKE Resilience Chart。
		
helm install tke-resilience --namespace kube-system ./tke-resilience --debug
执行以下命令,确认 Helm 应用中组件是否安装完成。本文以 TKE 发行版的集群为例,未安装 tke-scheduler。
		
# kubectl get Pod -n kube-system | grep resilience
eklet-tke-resilience-5f9dcd99df-rgsmc 1/1 Running 0 43h
eks-admission-tke-resilience-5bb588dc44-9hvhs 1/1 Running 0 44h
查看集群中已经部署了1个超级节点。
		
# kubectl get node
NAME STATUS ROLES AGE VERSION
10.0.1.xx Ready <none> 2d4h v1.20.4-tke.1
10.0.1.xx Ready master 2d4h v1.20.4-tke.1
eklet-subnet-xxxxxxxx Ready <none> 43h v2.4.6

创建测试用例

创建 demo 应用 nginx-deployment,该应用有4个副本,其中3个在 TKE Serverless 集群,1个在本地集群,Yaml 示例如下:
		
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 4
strategy:
type: RollingUpdate
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
AUTO_SCALE_EKS: "true"
LOCAL_REPLICAS: "1" #设置本地集群运行的副本数为 1
labels:
app: nginx
spec:
#schedulerName: tke-scheduler 如果是第三方集群则需要执行调度器为 tke-scheduler
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
验证副本的状态以及分布,符合预期。

		
# kubectl get Pod -owide

NAME READY STATUS RESTARTS AGE IP

NODE NOMINATED NODE READINESS GATES

nginx-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>

并验证缩容的特性,由于使用的是 TKE 发行版的集群,会优先缩容 TKE Serverless 集群的实例。这里应用的副本数从4调整为3。
		
# kubectl scale deployment nginx-deployment --replicas=3
由以下结果可以看出,优先缩容了云上的副本,符合预期。  
相似文档
  • 技术背景: Stable Diffusion 是一种深度学习的文本到图像模型,由 Runway 和慕尼黑大学合作构建,第一个版本于2021年发布。目前主流版本包含 v1.5、v2和v2.1。它主要用于生成基于文本描述的详细图像,也应用于其他任务,如修复图像、生成受文本提示引导的图像到图像的转换等。
  • 背景介绍: ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有62亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需6GB显存)。
  • 技术背景: Stable Diffusion 是2022年发布的深度学习文本到图像生成模型,随着开源社区的活跃增长和 Stable Diffusion WebUI 开源项目的推出,已经成为了 AIGC 场景下首选开源方案,深受广大个人用户欢迎。而随着 GPT-4 的推出和 Stable DIffusion 最新版发布,越来越多企业开始认识到基于大模型的 AGI 和 AIGC 技术已经从“玩具”走向生产力工具,并快速拥抱 AI 技术。
  • 背景说明: ChatGLM-6B 是一款拥有 62 亿参数的中英双语语言模型,专注于提供强大的对话和问答能力。通过对1:1中英语料进行 1T token 的预训练,使得模型具备双语应用的能力。借助模型量化技术,ChatGLM-6B 可以高效地在消费级显卡上部署。其最大序列长度达到2048,以应对更复杂的对话和应用需求。总体而言,ChatGLM-6B 是一款功能强大、适用广泛的语言模型。
  • 节点异常关键字排障: 当使用 TKE 集群服务的节点检查能力时,可能会检查出节点异常,包含建议您进一步排查的关键字,本文档总结了节点检查中出现的关键字、异常现象及对应的检查方式(通过正则表达式匹配内核 / dev / dmesg 日志进行检查),您可以根据本文档登录节点进一步排查异常原因。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部