作者
何鹏飞,腾讯云专家产品经理,曾作为容器公有云、TKEStack 的产品经理兼架构师,参加腾讯云外部业务、内部客户容器化革新方案设计,目前负责云原生混合云产品方案设计工作。
胡晓亮,腾讯云专家工程师,专一云原生畛域。目前负责开源社区 TKEStack 和混合云我的项目的设计和开发工作。
前言
混合云是一种部署状态,一方面企业可从资产利旧、老本管制、管制危险缩小锁定等角度抉择混合云。另一方面企业也能够通过混合业务部署取得不同云服务商的绝对劣势能力,以及让不同云服务商的能力差异造成互补。而容器和混合云是天作之合,基于容器标准化封装,大大降低了利用运行环境与混合云异构基础设施的耦合性,企业更易于实现多云 / 混合云麻利开发和继续交付,使利用多地区规范治理化成为可能。
TKE 容器团队提供了一系列的产品能力来满足混合云场景,本文介绍其中针对突发流量场景的产品个性——第三方集群弹 EKS。
低成本扩容
IDC 的资源是无限的,当有业务突发流量须要应答时,IDC 内的算力资源可能不足以应答。抉择应用私有云资源应答长期流量是不错的抉择,常见的部署架构为:在私有云新建一个集群,将局部工作负载部署到云上,通过 DNS 规定或负载平衡策略将流量路由到不同的集群:
此种模式下,业务的部署架构产生了变动,因而在应用前须要充沛评估:
- 哪些业务工作负载须要在云上部署,是全副还是局部;
- 云上部署的业务是否有环境依赖,例如 IDC 内网 DNS、DB、公共服务等;
- 云上、云下业务日志、监控数据如何对立展现;
- 云上、云下业务流量调度规定;
- CD 工具如何适配多集群业务部署;
这样的革新投入对于须要长期维持多地区接入的业务场景来说是值得的,但对于突发流量业务场景来说老本较高。因而咱们针对这种场景推出了便捷在单集群内利用私有云资源应答突发业务流量的能力:第三方集群弹 EKS,EKS 是腾讯云弹性容器服务,能够秒级创立和销毁大量 POD 资源,用户仅需提出 POD 资源需要即可,无需保护集群节点可用性,对于弹性的场景来说是十分适合的。仅须要在集群中装置相干插件包即可疾速取得扩容到 EKS 的能力。
与间接应用云上虚拟机节点相比,此种形式扩缩容更快,并且咱们还提供了 2 种调度机制来满足客户的调度优先级需要:
全局开关: 在集群层面,当集群资源有余时,任何须要新创建 Pod 的工作负载都能够将正本创立到腾讯云 EKS 上;
部分开关: 在工作负载层面,用户可指定单个工作负载在本集群保留 N 个正本后,其余正本在腾讯云 EKS 中创立;
为了确保所有工作负载在本地 IDC 均有足够的正本数,当突发流量过来,触发缩容时,反对优先缩容腾讯云上 EKS 正本(须要应用 TKE 发行版集群,对于 TKE 发行版的具体介绍,请期待后续公布的该系列文章)。
这种模式下,业务部署架构没有发生变化,在单集群中即可弹性应用云上资源,防止了引入业务架构革新、CD 流水线革新、多集群治理、监控日志统等一系列衍生问题,并且云上资源的应用是按需应用,按需计费,大大降低了用户应用老本。但为了保障工作负载的安全性和稳定性,咱们要求用户的 IDC 与腾讯云私有云 VPC 专线互通,并且用户也须要从存储依赖、延时容忍度等多方面评估适用性。
EKS pod 可与 underlay 网络模式的本地集群 pod、node 互通(须要在腾讯云 VPC 中增加本地 pod cidr 的路由,参考路由配置),第三方集群弹 EKS 已在 TKEStack 中开源,具体应用形式和示例见 应用文档
实战演示
步骤
获取 tke-resilience helm chart
git clone https://github.com/tkestack/charts.git
配置 VPC 信息:
编辑 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-resilience helm chart
helm install tke-resilience --namespace kube-system ./charts/incubator/tke-resilience/
确认 chart pod 工作失常
创立 demo 利用 nginx:ngx1
成果演示:
全局调度
因为此个性默认已开启,咱们先将 kube-system 中 的 AUTO_SCALE_EKS 设置为 false
默认状况下,ngx1 正本数为 1
将 ngx1 正本数调整为 50
能够看到有大量 POD 因为资源有余,处于 pending 状态
将 kube-system 中 的 AUTO_SCALE_EKS 设置为 true 后,短暂期待后,察看 pod 状态,本来处于 pend 的 pod,被调度到了 EKS 虚构节点:eklet-subnet-167kzflm 上。
指定调度
咱们再次将 ngx1 的正本数调整为 1
编辑 ngx1 yaml,设置开启部分开关
spec:
template:
metadata:
annotations:
# 关上部分开关
AUTO_SCALE_EKS: "true"
# 设置须要在本地集群创立的正本个数
LOCAL_REPLICAS: "2""
spec:
# 应用 tke 调度器
schedulerName: tke-scheduler
将 ngx1 正本数改为 3,只管本地集群没有呈现资源有余,但能够看到,超过 2 个本地正本后,第三个正本被调度到了 EKS 上
卸载 tke-resilience 插件
helm uninstall tke-resilience -n=kube-system
此外 TKEStack 已集成 tke-resilience,用户能够在 TKEStack 的利用市场中界面化装置 tke-resilience
利用场景
云暴发
电商促销、直播等须要在短时间扩容大量长期工作负载的场景,这种场景下,资源需要工夫十分短,为了应答这种短周期需要而在日常储备大量资源,势必会有比拟大的资源节约,且资源需求量随每次流动变动难以精确评估。应用此性能,您无需关注于资源筹备,仅需依附 K8S 的主动伸缩性能,即可疾速为业务创立出大量工作负载为业务保驾护航,流量峰值过来后,云上 POD 会可优先销毁,确保无资源节约的状况。
离线计算
大数据、AI 业务场景下,计算工作对算力亦有高弹性要求。为保障工作疾速计算实现,须要在短时间能有大量算力撑持,而计算实现后,算力同样处于低负载状态,计算资源利用率呈高稳定型,造成了资源节约。并且因为 GPU 资源的稀缺性,用户本人囤积大量 GPU 设施不仅老本十分高,还会面临资源利用率晋升,新卡适配,老卡利旧,异构计算等多种资源管理问题,而云上丰盛的 GPU 卡型可为用户提供更多样的抉择,即用即还的个性也确保了资源零节约,每一分钱都真正化在实在的业务需要上。
将来演进
- 多地区反对,反对利用部署到云上多个区域,利用与地区关联部署等个性
-
云边联合,联合 TKE-Edge,针对弱网络场景提供利用部署、调度策略,解脱专线依赖
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!