半夜偷偷烧钱的服务器?用这套方案每年白捡一辆特斯拉

服务器 服务器产品
Kubernetes, 简称 k8s,我们可以把它当做服务器和应用服务之间的中间层。在腾讯云里,它叫 TKE,Tencent Kubernetes Engine。

你是一个程序员,前后端是你,运维还是你。

公司有一批云服务器,上面部署了视频推荐,语音识别,前端网页等各种应用服务。

你经常要手动将应用服务挨个部署到各个服务器上,服务器出问题了,还得跑到别的服务器上手动部署一遍。每天都累得嗷嗷叫。

随着业务发展,用户变多,应用 cpu 使用率变高,你需要手动部署更多应用到更多服务器上。

可老板发现了问题,服务器实时计费,大晚上的没人用,放着也是浪费钱,如果能及时归还,那岂不是能省下一大笔服务器费用?

这。。。难不成要你晚上手动归还服务器,第二天早上再重新申请新服务器,然后手动部署应用服务吗?

经常当牛马的兄弟都知道,这听起来虽然很离谱,但也并非不可能。

那有更好的解决方案吗?有!没有什么是加一层中间层不能解决的,如果有,那就再加一层。

图片图片

这次我们要加的中间层有俩,分别是 Kubernetes 和 节点伸缩工具,比如Cluster Autoscaler和Karpenter。在介绍它们之前,我们先来了解下 Kubernetes 的几个概念。

节点扩容工具节点扩容工具

k8s 是什么

Kubernetes, 简称 k8s,我们可以把它当做服务器和应用服务之间的中间层。在腾讯云里,它叫 TKE,Tencent Kubernetes Engine。

k8s是什么k8s是什么

有了它,你不再需要苦哈哈手动部署服务,你只要写好一份类似 todo list 的配置文件,k8s 就可以自动将应用部署到各个服务器上,应用崩了还能自动帮你找到另外一台服务重新部署。

通过yaml文件部署服务通过yaml文件部署服务

那它是怎么做到的呢?

我们知道,公司里通常会维护一批云服务器,它们可以是物理机或虚拟机。

k8s 会将这些服务器分为两类,一部分叫控制平面(control plane),另一部分叫工作节点,也就是 Node。

控制平面和工作节点控制平面和工作节点

control plane决定应用部署到具体哪个 node 上。而 node 则负责实际部署各种应用服务,这些千奇百怪的应用服务,我们统一管它叫 pod,它们共同构成 k8s 集群。

k8s集群k8s集群

举个例子,不同的 node 可以是不同规格的服务器,有些 4c8g,有些 8c32g. 如果你想要部署一个 4c16g 的视频推荐服务,以前你需要手动选择服务器部署,但现在你只需要执行一行命令,control plane 就会自动帮你选择好 node, 做自动部署。

并且随着业务发展,用户变多,应用的 cpu 使用率变高,k8s 还能帮你自动增加 pod,也就是所谓的扩容。晚上资源利用率下来了,k8s 也能自动减少 pod 数量,完成缩容,很省心,让你感觉未来可期。

节k点伸缩工具是什么

可是问题又来了,k8s 的扩缩容是针对 pod 的,不是针对 node 的。也就是说,有了 k8s,你不需要手动部署服务了,可一旦 k8s 集群内总的工作节点 CPU 内存不足,你就还得手动到腾讯云上开关服务器,并手动将它们加入到 k8s 集群中。那有办法让node节点也支持弹性伸缩吗?

k8s的扩缩容维度k8s的扩缩容维度

有,既然加一层中间层不能解决问题,那就再加一层。

我们可以在 k8s 和云厂商服务器之间,加一层自动化节点管理工具来实现节点自动伸缩。

自动化节点管理工具自动化节点管理工具

这类工具有很多,以腾讯云TKE为例,它同时支持 CA (Cluster Autoscaler)和Karpenter两种主流方案。它们都可以实现节点伸缩功能,前者是K8s社区标准方案,后者则是新一代弹性伸缩方案。我们来看下它们有哪些区别。

TKE同时支持两种节点伸缩方案TKE同时支持两种节点伸缩方案

节点扩容

不管是Karpenter还是CA,它们实际上都会以 pod 的形式部署到 node 上,然后通过 control plane 获取 k8s 集群资源状态。

当它们识别到 k8s 集群内出现了一些想要部署但却由于 node 资源不足,导致无法部署的 pod 应用服务时,就会尝试去调用腾讯云的接口,创建云服务器。再将它加入到 k8s 集群内,成为新的 node,完成扩容。

这时,之前得不到资源的 pod 就能部署到新的 node 上。

节点扩容节点扩容

不同点在于,CA会预先设置好静态服务器的配置,相同配置的服务器们构成一个池子,也就是节点池。资源不足时就在池子里建个新的同配置服务器。

CA扩容CA扩容

而Karpenter 则会动态实时计算当前缺了多少 cpu 和内存等信息,然后拿着这些信息调用腾讯云接口创建个资源大小合适、成本最优的服务器,相对来说扩容配置参数会少一些。

Karpenter 扩容Karpenter 扩容

node 扩容看完了,我们再来看缩容。

节点缩容

每当夜幕降临,蝙蝠侠在哥谭市到处找你那不成器的兄弟时,k8s 的流量就会迎来低峰,pod 会缩容,此时节点伸缩工具 识别到部分 node 上面长时间没有正在跑的 pod,就会触发腾讯云的接口,将云服务器回收,实现 Node 缩容。对于按时计费的服务器,可以大省一笔。

节点缩容节点缩容

这部分能力,CA和Karpenter类似,但Karpenter会综合考虑服务器成本,资源分配等更多因素,因此成本控制更精细。

缩容的差异缩容的差异

节点整合

节点缩容后,剩下的一些 node 上虽然跑着 pod,但可能会出现 cpu 和内存等资源分配率过低的情况,这时候 Karpenter 还能通过计算,重新将多个 node 上的 pod 整合到一个更合适的 node上。从而提升单个 node 的资源利用率,这时候多出来的 node,就还能进一步缩容。这样就又省了一大笔。CA虽然不支持节点整合,但是也可以通过缩容分配率低的节点,提升其他节点的利用率。

节点整合节点整合

节点替换

这还不够,当节点出现故障,比如底层硬件坏了,状态异常时, Karpenter 还能立马向腾讯云申请新的云服务器作为 node,并将 pod 迁移到新 node 上,实现节点替换,保证系统正常运行。同样CA也可以通过搭配TKE的节点自动修复功能实现类似的效果。

TKE 的优势

有了CA和Karpenter的加持,腾讯云TKE不仅能根据资源需求自动伸缩,还能优化服务器成本,确保你用的每一分钱都花在刀刃上。只需简单的配置,就能轻松将节点伸缩工具集成到你的K8s集群中,是绝对的懒人福音。

图片图片

同时腾讯云还在持续探索更多降本增效的方案,比如Karpenter on TKE还在原生Karpenter的基础上结合了 TKE FinOps 调度策略优化,助力业务进一步降低资源成本。

图片图片

用了它,你老板里子有了,面子也有了。

现在大家通了吗?


责任编辑:武晓燕 来源: 小白debug
相关推荐

2015-07-09 15:23:58

2021-10-22 10:33:05

AI 数据人工智能

2017-06-13 14:15:51

戴尔协同计算汽车神话

2011-08-08 17:11:31

2012-09-05 09:44:37

IDC高性能服务器HPC

2018-12-14 11:07:00

2010-08-05 14:21:43

NFS服务器

2013-05-15 10:29:58

创业创业案例创业故事

2018-06-07 10:29:34

SDN服务器负载均衡

2009-10-21 10:55:01

2015-08-25 15:34:51

2022-02-15 15:31:31

特斯拉漏洞安全

2010-05-21 18:03:19

IIS服务器

2011-11-04 09:42:26

服务器电源节能

2023-10-23 12:31:40

2011-02-25 16:14:09

proftpdftp

2011-02-23 15:32:39

vsftpd

2011-02-25 16:14:09

proftpdftp

2009-10-09 18:21:32

服务器测试
点赞
收藏

51CTO技术栈公众号