2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Datadog 使用大规模 Kubernetes 集群的艰辛之路

  • 2020-01-02
  • 本文字数:1518 字

    阅读完需:约 5 分钟

Datadog使用大规模Kubernetes集群的艰辛之路

来自 Datadog 的Laurent Bernaille柏林举行的Velocity会议上讨论了运维大型自管理 Kubernetes 集群所面临的挑战。Bernailed 聚焦在如何配置弹性和可扩展的控制平面,为何和如何频繁地循环更新证书,以及在 Kubernetes 中使用网络插件实现高效通信的必要性。


传统的架构方式会将所有的 Kubernetes master 组件都放到同一台服务器上,并且至少有三台这样服务器来保持高可用性。但是,这些组件有不同的职责,不能或者不需要以相同的方式进行扩展。举例来说,调度器(scheduler)和控制器(controller)是无状态的组件,这使得它们很易于扩展。但是,etcd 是有状态的,需要数据的冗余备份。同时,像调度器这样的组件会与一个选举机制协作,确保只有一个实例是处于激活状态的。Bernaille 认为扩展调度器并没有什么意义。


因此,Datadog 决定将 Kubernetes 组件切分到不同的服务器上,这些服务器有不同的资源并配置自定义的扩展策略。对于像 API 服务器这样的组件,他们在该组件之前放置了一个负载均衡器,从而能够正确地分配请求。而对于 etcd 服务器,他们也对其进行了拆分,形成了一个专门的 etcd 集群,只用来处理 Kubernetes 事件。



Bernaille 指出,Kubernetes 在所有的组件通信时会使用加密和 x509 证书。所以,为了避免出现证书的问题,比如证书过期,Datadog 决定每天都轮流更新证书。但是,轮流更新证书是一项很具挑战性的任务,因为 Kubernetes 需要在不同的组件和服务器上安装和使用不同的证书。同时,Datadog 意识到在每次轮流更新之后,他们必须要重新启动像 API 服务器这样的组件。因此,Datadog 决定将每天的证书轮流更新自动化并把该任务交给HaschiCorp Vault来实现。


但是,鉴于kubelet按需生成证书的运行方式,Datadog 决定在 kubelet 的每日轮流更新中采用一种例外规则。尽管存在挑战和复杂性,但是 Bernaille 依然建议要频繁地轮流更新证书。这不是一项简单的任务,不过用户能够避免将来在证书过期时出现问题,更糟糕的是在日志中可能并没有证书过期的明显标志。



Bernaille 提到,Datadog 还面临网络方面的挑战,因为需要大量的服务器来运行他们的平台。Bernaille 花了一些时间阐述 Kubernetes 节点会有一个 IP 地址的范围,它们被用来给 pod 分配 IP 地址。因此,对于小型集群来说,使用静态路由实现 pod 之间的通信能够运行地非常好。但是,对于中等规模的集群来说,一种有效的方式就是使用网络覆盖(networking overlays),在这种方式中,节点通过隧道进行通信。在 Datadog,有效的方式是在整个网络中,为 pod 分配一个可路由的 IP。通过这种方式,到 pod 的通信是直接连接的,不再需要像 kube-proxy 这样的中介。GCP以IP别名的方式支持该模型AWS也以弹性网络接口(elastic network interface,ENI)的形式提供了支持,对于企业的内建集群,用户可以使用像Calico这样的工具。


最后,Bernaille 讨论了跨不同集群的通信。默认情况下,在 Kubernetes 中,当一个外部请求到达集群时,Kubernetes 会通过 kube-proxy 来路由流量。但是,如果请求到达了一个不正确的节点,目标 pod 并没有运行,那么 kube-proxy 必须将请求重定向到正确的节点。有种替代方案是创建一个外部流量策略或者使用ingress控制器,但是该方案并不适用于大规模集群。因此,Datadog 借助AWS中的ALB ingress控制器针对 HTTP 通信实现了原生路由。



Bernaille 最后说,他们在 DNS、有状态应用和应用部署方面还面临着其他的挑战,但是他没有足够的时间来深入讨论这些话题。不过,他推荐观看Jerome Petazzoni关于Kubernetes内部核心的演讲以及更早的关于Datadog使用Kubernetes艰辛之路的演讲


原文链接:


Kubernetes the Very Hard Way With Large Clusters at Datadog


2020-01-02 09:002974

评论

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

计算机网络协议介绍

京东科技开发者

如何使用通义灵码辅助开发微信小程序

阿里云云效

微信小程序 云计算

2025年GitHub Star增长最快的15个开源低代码项目

NocoBase

GitHub 开源 低代码 零代码 无代码

通义灵码 - HTML智能编码辅助AI工具

阿里云云效

人工智能 云计算

企业上云后,SRE认证为何成为企业“新宠”?

雅菲奥朗

SRE ITIL SRE培训 SRE认证

安全运营 | 第十期「纵深防护·极智运营」度安讲技术沙龙成功举办

百度安全

2025Q1大模型中标成绩出炉,百度智能云成为大模型“标王”

科技热闻

2025 中国人工智能教育大会召开,和鲸x智谱推出人工智能通识教育方案

ModelWhale

人工智能 高等教育 通识课 人工智能通识课

音乐NFT项目的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 音乐NFT

谁在买王兴兴的机器人?「宇树科技」百笔订单梳理、分析!

机器人头条

科技 大模型 人形机器人 具身智能

AI口语练习App的技术架构

北京木奇移动技术有限公司

AI技术 软件外包公司 AI口语练习

【解决方案】DistilQwen2.5-R1蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践

阿里云大数据AI技术

人工智能 深度思考 大模型 模型蒸馏 DistilQwen2.5

shopeeAPI 系列:商品列表接口接入与应用

tbapi

Shopee shopee商品列表接口

鸿蒙APP开发的技术架构

北京木奇移动技术有限公司

鸿蒙app 软件外包公司 APP外包公司

手把手教你用爬虫技术抓取1688商品详情与实现关键字搜索API——实战干货分享

代码忍者

1688API接口

诚邀加入天翼云用户体验官计划:您的洞察,重塑科技边界!

天翼云开发者社区

云计算

2025年智能ITSM产品推荐

云智慧AIOps社区

ITSM ITSM软件 工单管理 工单系统

智能制造常见系统,ERP、MES、WMS、SCM、PLM,一文吃透!

积木链小链

虚拟表 + 高效写入 + 流计算优化,时序数据库 TDengine 3.3.6.0 重构核心体验

TDengine

数据库 tdengine 时序数据库

快速业务扩张下,App混合开发成必然选择

xuyinyin

手把手教你用爬虫抓取1688商品详情和店铺全量商品API接口——从零到实战

代码忍者

1688API接口

企业级软件定制:摒弃“银弹思维”,回归场景务实求解

TechLead Studio

软件研发

时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化

TDengine

数据库 tdengine 时序数据库

京东中台化底层支撑框架技术分析及随想

京东科技开发者

时序数据库 TDengine + Tableau,数据可视化一步到位!

TDengine

数据库 tdengine 时序数据库

CloudWeGo 2025 黑客松报名指南

字节跳动开源

字节跳动 黑客马拉松 CloudWeGo hertz Eino

添加DNS解析记录提示解析冲突是怎么回事?(国科云)

国科云

区块链智能合约的安全性

北京木奇移动技术有限公司

智能合约 区块链技术 软件外包公司

Web Components实践:如何搭建一个框架无关的AI组件库

京东科技开发者

低代码平台终极拷问:NocoBase 像「乐高套装」,iVX 更像「3D 打印机」?

代码制造者

低代码开发 无代码平台

如何使用通义灵码辅助开发微信小程序

阿里巴巴云原生

Datadog使用大规模Kubernetes集群的艰辛之路_软件工程_Christian Melendez_InfoQ精选文章