速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Medium 的 Kubernetes 基础设施

  • 2023-03-25
    北京
  • 本文字数:1838 字

    阅读完需:约 6 分钟

Medium的Kubernetes基础设施

本文最初发布于 Medium 工程博客。

 

本文概要介绍了我们如何使用 Kubernetes 来管理微服务。

 

为什么选择 Kubernetes?

简单来说,就是它很好地满足了我们的需求;它能解决重要且复杂的问题,而又不需要我们自己去构建解决方案。Kubernetes提供的解决方案主要聚焦于扩展、打包以及使服务具有一定程度的“自愈”能力。

 

另一个关键的考量因素是部署——滚动升级和回滚很简单。我们已经围绕部署构建了复杂的基础设施,不过相关细节的话,我们会在另一篇文章中介绍。

 

我们如何使用 Kubernetes?



我们的生产基础设施分布在 4 个可用区,在 4 个特有的 Kubernetes 集群中。从技术上讲,Kubernetes 现在提供了在单个集群实体(entity)中管理这种拓扑的机制,但我们还没有探索过的这项新功能。

 

随着时间的推移,我们认识到,将系统分布在 4 个集群中有一些很大的好处,而且越来越多,下面是一些比较重要的。

 

能够在需要时通过一些内部工具跨 AZ 转移流量

  • 事实证明,这在单个区域出现问题(无论是云提供商的原因,还是其他原因)时非常有用。

在生产环境中滚动上线基础设施更改

  • 假设我们想测试一个新的Kubernetes插件或配置更改——当我们在底层基础设施上验证更改(只有当我们无法在过渡集群上验证时),便可以将大部分的生产流量转移到其他 3 个集群。

 

我们选择的服务网格是Istio。我们使用各种内部控制器管理入口和出口网关,为的是可以顺畅地配置和协调从 CDN 到所有 4 个集群的流量。我们不会在这里讨论细节(这本身就是一篇文章!)。

 

配置管理

Terraform 和一些内部工具是我们管理集群配置的首选武器。当团队第一次概念化 Kubernetes 配置时,并没有多少现成的工具可以帮助我们简化 Terraform。我们编写(并持续维护)了一个内部应用程序,它让我们可以跨集群(无论是生产集群,还是我们内部的任何过渡集群)模板化、传递和应用我们的配置。

 

事实证明,一个让我们可以使用模板和静态配置的工具非常有价值,它可以确保我们的配置始终有一个“真相来源”,并使我们有一个适当的流程可以测试更改并应用到集群。

 

我们都知道 Kubernetes 和容器技术的发展有多快——请在回复中告诉我们你还使用了哪些工具来简化 Kubernetes 配置管理!

 

优化集群缩放——针对突发流量进行扩展,依据请求量进行收缩

为了确保应用程序请求的资源大小与实际利用率相匹配,我们做了大量的工作。这对 Medium 来说有很大的帮助,那让我们可以充分利用我们的节点(更有效的打包)。还有一个好处是缩放更平滑,但需要一些额外的调优和工具才能实现。

 

集群超额配置和 Pod 抢占

这个工具很棒。对于它所做的事情,简单来说就是定义许多副本以及它们所需的资源量。在我们的例子中,我们知道需要随着流量大幅扩展的服务(我们称之为backend-A)恰好也需要大量的资源。一旦了解了缩放事件的性质,我们就知道需要规划多少个副本以及如何调整它们的大小。

 

假设流量暴增的情况会频繁出现,而此时该服务额外需要大约 200 个 pod(横跨所有 4 个集群)才能应对突发的请求。如果不能快速扩展,我们就会看到 5xx 错误急剧增加。

 

我们在每个集群中设置了集群超额配置(cluster-overprovisioner),请求的 CPU 和内存数略高于backend-A pod,并将副本数设置为 50(单集群配置)。通过适当地配置优先级抢占集群自动缩放器,我们获得了以下好处:

  • 集群超额配置(cluster-overprovisioner)的目标是在任何时间为backend-A 的纵向扩展(scale-up)事件额外提供 200 个 pod 的资源。

  • 当需要调度新增的backend-A pod 时,集群超额配置的 pod 将被抢占(也就是驱逐)

  • 超额配置的 pod 被驱逐后需要重新调度。因此,它们通过集群自动缩放器触发节点纵向扩展事件。

 

因此,本质上上讲,集群超额配置消除了节点纵向扩展事件的延迟,让我们有空间可以平稳地处理生产服务的扩展事件而又不会产生中断。

 

还一个额外的好处是,我们的节点数量统计图看起来比以前平滑许多。我们不需要那么大幅度地缩放节点



在超额配置和适型化(right-sizin)之前,节点总数(在所有 4 个集群中)定期爆增至 800-900 个节点以上



在进行超额配置和应用程序适型化之后,在所有生产集群中,峰值节点数量下降到接近 400 个,很少超过 600 个。

结语

Kubernetes 非常复杂,并且根据组织需要提供了无数可能的配置。在 Medium,我们根据自己的需求塑造了 Kubernetes,我们对此非常自豪。我们还会一如既往地探索增强基础设施的新方法,并利用新技术提高可靠性和可扩展性。

 

声明:本文为 InfoQ 翻译,未经许可禁止转载。

 

原文链接:https://medium.engineering/kubernetes-infrastructure-at-medium-d9e2444932ef

2023-03-25 20:166539

评论

发布
暂无评论
发现更多内容

大促系统优化之应用启动速度优化实践

京东科技开发者

质量视角下的系统稳定性保障--稳定性保障常态化自动化实践

京东科技开发者

快递行业定义以及特点简单分析

行云管家

等保 等级保护 快递

文献解读-Unifying comprehensive genomics and transcriptomics in individual cells to illuminate oncogenic and drug resistance mechani

INSVAST

基因数据分析 生信服务 基准与方法研究 Sentieon

Bartender 4 for Mac(应用图标管理工具)中文版

Mac相关知识分享

注塑MES如何帮企业提高生产效率?

万界星空科技

mes 万界星空科技mes 注塑MES 注塑行业 生产管理MES系统

AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!

可信AI进展

人工智能 | ReACT 推理模式

测吧(北京)科技有限公司

测试

WebAssembly--目标及核心优势

江湖修行

前端 Web WebAssenbly

如何使用Java开发抖音API接口?

科普小能手

API Java 开发 1688 API 接口 1688商品详情接口

模具企业MES系统需求分析及解决方案

万界星空科技

mes 模具mes 万界星空科技mes 模具行业 模具加工

百度智能云千帆大模型平台引领企业创新增长

Baidu AICLOUD

智能体 agent LLMOps 模型精调

AlmaLinux 9.5 正式版发布 - RHEL 二进制兼容免费发行版

sysin

RHEL AlmaLinux

小心互联网行业的“高薪”陷阱

老张

职场成长 认知 职场晋升

数智析碳,节能降碳

鲸品堂

节能管理 实战案例 双碳 企业号 2024年11月PK榜

配置NVIDIA Container Runtime和容器运行GPUStack教程

GPUStack

Docker 容器 大模型 LLM GPU集群

并发编程体系概述

京东科技开发者

HyperWorks一维单元创建与模型连接管理

智造软件

教程 仿真 hyperworks 有限元

京东商品详情数据接口(JD.item_get)丨京东API接口指南

tbapi

京东API接口 京东商品详情接口

Final Cut Pro X for Mac(fcpx视频剪辑)中文版

Mac相关知识分享

用户身份与访问管理IAM和人工智能的融合应用

芯盾时代

人工智能 iam 统一身份管理平台

维度爆炸背景下uv计算在Feed业务的高效实践

百度Geek说

配置NVIDIA Container Runtime和容器运行GPUStack教程

SEAL安全

Docker 容器 大模型 LLM GPU集群

SentenceTransformers×Milvus:如何进行向量相似性搜索

Zilliz

Milvus SentenceTransformers 向量相似性搜索 embedding向量

JProfiler for Mac( Java 性能分析软件)

Mac相关知识分享

安徽淮南有等保测评机构吗?在哪里?

行云管家

等保 等保测评 淮南

软件测试/人工智能 | ReACT 推理模式

测试人

软件测试 测试开发

项目上线之后,出现过线上问题吗?怎么排查和解决的?

王中阳Go

Go 面试

华光环能:从财务预算向战略导向全面预算转型升级

用友智能财务

财务 实践案例 企业数智化

影响LED显示屏显示效果的因素有哪些?

Dylan

显示器 LED显示屏 全彩LED显示屏 led显示屏厂家 效果图渲染

AirServer 7 for Mac(专业mac投屏软件)中文版

Mac相关知识分享

Medium的Kubernetes基础设施_架构_Eduardo_InfoQ精选文章