腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

文约
• 阅读 2706

作者

何鹏飞,腾讯云专家产品经理,曾作为容器私有云、TKEStack的产品经理兼架构师,参与腾讯云内部业务、外部客户容器化改造方案设计,目前负责云原生混合云产品方案设计工作。

胡晓亮,腾讯云专家工程师,专注云原生领域。目前负责开源社区TKEStack和混合云项目的设计和开发工作。

前言

混合云是一种部署形态,一方面企业可从资产利旧、成本控制、控制风险减少锁定等角度选择混合云。另一方面企业也可以通过混合业务部署获得不同云服务商的相对优势能力,以及让不同云服务商的能力差异形成互补。 而容器和混合云是天作之合,基于容器标准化封装,大大降低了应用运行环境与混合云异构基础设施的耦合性,企业更易于实现多云/混合云敏捷开发和持续交付,使应用多地域标准管理化成为可能。
TKE 容器团队提供了一系列的产品能力来满足混合云场景,本文介绍其中针对突发流量场景的产品特性——第三方集群弹 EKS。

低成本扩容

IDC 的资源是有限的,当有业务突发流量需要应对时,IDC 内的算力资源可能不足以应对。选择使用公有云资源应对临时流量是不错的选择,常见的部署架构为:在公有云新建一个集群,将部分工作负载部署到云上,通过 DNS 规则或负载均衡策略将流量路由到不同的集群:

腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

此种模式下,业务的部署架构发生了变化,因此在使用前需要充分评估:

  1. 哪些业务工作负载需要在云上部署,是全部还是部分;
  2. 云上部署的业务是否有环境依赖,例如 IDC 内网 DNS、DB、公共服务等;
  3. 云上、云下业务日志、监控数据如何统一展示;
  4. 云上、云下业务流量调度规则;
  5. CD 工具如何适配多集群业务部署;

这样的改造投入对于需要长期维持多地域接入的业务场景来说是值得的,但对于突发流量业务场景来说成本较高。因此我们针对这种场景推出了便捷在单集群内利用公有云资源应对突发业务流量的能力:第三方集群弹 EKS,EKS是腾讯云弹性容器服务,可以秒级创建和销毁大量 POD 资源,用户仅需提出 POD 资源需求即可,无需维护集群节点可用性,对于弹性的场景来说是非常合适的。仅需要在集群中安装相关插件包即可快速获得扩容到 EKS 的能力。

腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

与直接使用云上虚拟机节点相比,此种方式扩缩容更快,并且我们还提供了2种调度机制来满足客户的调度优先级需求:

全局开关: 在集群层面,当集群资源不足时,任何需要新创建Pod的工作负载都可以将副本创建到腾讯云 EKS 上;

局部开关: 在工作负载层面,用户可指定单个工作负载在本集群保留N个副本后,其他副本在腾讯云 EKS 中创建;

为了确保所有工作负载在本地 IDC 均有足够的副本数,当突发流量过去,触发缩容时,支持优先缩容腾讯云上 EKS 副本(需要使用 TKE 发行版集群,关于 TKE 发行版的详细介绍,请期待后续发布的该系列文章)。

腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

这种模式下,业务部署架构没有发生变化,在单集群中即可弹性使用云上资源,避免了引入业务架构改造、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 工作正常

腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

创建 demo 应用 nginx:ngx1

效果演示:

全局调度

由于此特性默认已开启,我们先将kube-system 中 的 AUTO_SCALE_EKS 设置为 false
默认情况下,ngx1 副本数为1
腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器
将ngx1副本数调整为50
腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

可以看到有大量 POD 因为资源不足,处于 pending 状态
将 kube-system 中 的 AUTO_SCALE_EKS 设置为 true 后,短暂等待后,观察pod状态,原本处于 pend的pod,被调度到了 EKS 虚拟节点:eklet-subnet-167kzflm 上。

腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

指定调度

我们再次将 ngx1 的副本数调整为1
腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器
编辑 ngx1 yaml,设置开启局部开关

spec:
    template:
        metadata:
            annotations:
            # 打开局部开关
                AUTO_SCALE_EKS: "true"
            # 设置需要在本地集群创建的副本个数
                LOCAL_REPLICAS: "2""
        spec:
            # 使用tke调度器
               schedulerName: tke-scheduler

将 ngx1 副本数改为3,尽管本地集群没有出现资源不足,但可以看到,超过2个本地副本后,第三个副本被调度到了EKS上
腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

卸载 tke-resilience 插件

helm uninstall tke-resilience -n=kube-system

此外 TKEStack 已集成 tke-resilience,用户可以在 TKEStack 的应用市场中界面化安装 tke-resilience
腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器

应用场景

云爆发

电商促销、直播等需要在短时间扩容大量临时工作负载的场景,这种场景下,资源需求时间非常短,为了应对这种短周期需求而在日常储备大量资源,势必会有比较大的资源浪费,且资源需求量随每次活动变化难以准确评估。使用此功能,您无需关注于资源筹备,仅需依靠K8S的自动伸缩功能,即可快速为业务创建出大量工作负载为业务保驾护航,流量峰值过去后,云上POD会可优先销毁,确保无资源浪费的情况。

离线计算

大数据、AI业务场景下,计算任务对算力亦有高弹性要求。为保障任务快速计算完成,需要在短时间能有大量算力支撑,而计算完成后,算力同样处于低负载状态,计算资源利用率呈高波动型,形成了资源浪费。并且由于GPU资源的稀缺性,用户自己囤积大量GPU设备不仅成本非常高,还会面临资源利用率提升,新卡适配,老卡利旧,异构计算等多种资源管理问题,而云上丰富的GPU卡型可为用户提供更多样的选择,即用即还的特性也确保了资源零浪费,每一分钱都真正化在真实的业务需求上。

未来演进

  1. 多地域支持,支持应用部署到云上多个区域,应用与地域关联部署等特性
  2. 云边结合,结合 TKE-Edge,针对弱网络场景提供应用部署、调度策略,摆脱专线依赖

    【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
    腾讯云原生混合云-第三方集群弹EKS应对突发流量的利器
点赞
收藏
评论区
推荐文章
Effective HPA:预测未来的弹性伸缩产品
作者胡启明,腾讯云专家工程师,专注Kubernetes、降本增效等云原生领域,Crane核心开发工程师,现负责成本优化开源项目Crane开源治理和弹性能力落地工作。余宇飞,腾讯云专家工程师,专注云原生可观测性、成本优化等领域,Crane核心开发者,现负责Crane资源预测、推荐落地、运营平台建设等相关工作。田奇,腾讯高级工程师,专注分布式资源管
KubeCon 2021|使用 eBPF 代替 iptables 优化服务网格数据面性能
作者刘旭,腾讯云高级工程师,专注容器云原生领域,有多年大规模Kubernetes集群管理及微服务治理经验,现负责腾讯云服务网格TCM数据面产品架构设计和研发工作。引言目前以Istioiptables实现流量劫持首先看一下当前社区使用的基于iptables的流量劫持方案,下图是一个Pod的创建过程,sidecarinjector会向
虚拟节点轻松应对 LOL S11 百万并发流量——腾竞体育的弹性容器实践
作者刘如梦,腾竞体育研发工程师,擅长高并发、微服务治理、DevOps,主要负责电竞服务平台架构设计和基础设施建设。詹雪娇,腾讯云弹性容器服务EKS产品经理,主要负责EKS虚拟节点、容器实例相关的产品策划。业务介绍自2019年,腾竞整个电竞赛事数据服务完全由腾讯云TKE容器服务承载。腾竞赛事数据开放平台目前主要提供职业赛事数据的授权与查询,随着斗
good123 good123
3年前
奈学p7云原生架构师
云原生的概念主要是基于容器云,其主要原则是,软件产品从设计、开发到交付,全流程都考虑适配容器云的环境。传统的开发,是本地开发与测试,测试环境再次测试,然后部署上线,如果有上容器的需求,那么再编写Dcokerfile,做容器化改造,最后部署到容器云上云原生的产品,开发,测试和上线都是完全兼容容器云的环境,例如通过EclipseChe镜像开发,提交到git上,从
宙斯盾 DDoS 防护系统“降本增效”的云原生实践
作者tomdu,腾讯云高级工程师,主要负责宙斯盾安全防护系统管控中心架构设计和后台开发工作。导语宙斯盾DDoS防护系统作为公司级网络安全产品,为各类业务提供专业可靠的DDoS/CC攻击防护。在黑客攻防对抗日益激烈的环境下,DDoS对抗不仅需要“降本”还需要“增效”。随着云原生的普及,宙斯盾团队持续投入云原生架构改造和优化,以提升系统的处理能力及
使用 Elastic GPU 管理 Kubernetes GPU 资源
关于我们更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号福利:①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》②公众号后台回复【系列】,可获得《15个系列100篇超实用云原生原创干货合集》,包含Kubernetes降本增效、K8s性能优化实践、最佳实践等系列。③公众号后台回复【白皮书】,可获得《腾讯云容器安
K8s 如何提供更高效稳定的编排能力?K8s Watch 实现机制浅析
关于我们更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号福利:①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》②公众号后台回复【系列】,可获得《15个系列100篇超实用云原生原创干货合集》,包含Kubernetes降本增效、K8s性能优化实践、最佳实践等系列。③公众号后台回复【白皮书】,可获得《腾讯云容器安
AMS 新闻视频广告的云原生容器化之路
作者卓晓光,腾讯广告高级开发工程师,负责新闻视频广告整体后台架构设计,有十余年高性能高可用海量后台服务开发和实践经验。目前正带领团队完成云原生技术栈的全面转型。吴文祺,腾讯广告开发工程师,负责新闻视频广告流量变现相关后台开发工作,熟悉云原生架构在生产实践中的应用,拥有多年高性能高可用后台服务开发经验。目前正推动团队积极拥抱云原生。陈宏钊,腾讯广告高级开发工程
Istio 中实现客户端源 IP 的保持
作者尹烨,腾讯专家工程师,腾讯云TCM产品负责人。在K8s、ServiceMesh等方面有多年的实践经验。导语对于很多后端服务业务,我们都希望得到客户端源IP。云上的负载均衡器,比如,腾讯云CLB支持将客户端源IP传递到后端服务。但在使用istio的时候,由于istioingressgateway以及sidecar的存在,后
轻量化安装 TKEStack:让已有 K8s 集群拥有企业级容器云平台的能力
关于我们更多关于云原生的案例和知识,可关注同名【腾讯云原生】公众号福利:①公众号后台回复【手册】,可获得《腾讯云原生路线图手册》&《腾讯云原生最佳实践》②公众号后台回复【系列】,可获得《15个系列100篇超实用云原生原创干货合集》,包含Kubernetes降本增效、K8s性能优化实践、最佳实践等系列。③公众号后台回复【白皮书】,可获得《腾讯云容器安
Kubernetes 资源拓扑感知调度优化
作者星辰算力团队,星辰算力平台基于深入优化云原生统一接入和多云调度,加固容器运行态隔离,挖掘技术增量价值,平台承载了腾讯内部的CPU和异构算力服务,是腾讯内部大规模离线作业、资源统一调度平台。背景问题源起近年来,随着腾讯内部自研上云项目的不断发展,越来越多的业务开始使用云原生方式托管自己的工作负载,容器平台的规模因此不断增大。以Kubernetes