2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

如何在 Kubernetes 中管理和操作 Kafka 集群

  • 2018-02-11
  • 本文字数:1235 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Amadeus 公司平台解决方案架构师 Nenad Bogojevic 最近在北美 2017 KubeCon 和 CloudNativeCon 谈到如何在 Kubernetes 环境中运行和管理 Kafka 集群。

该公司将 Kafka 用于日志和事件收集以及作为流媒体平台。Kafka 集群中的每一个代理 (broker) 都有一个身份,这个身份可以被用来寻找集群中的其他代理。代理同样需要一个数据库来存储分区日志。所以为 Kafka 配置一个持久卷非常重要,否则你便会丢失日志。

Nenad Bogojevic 谈到如何使用 Kubernetes ConfigMap CustomResource 来分配和配置 Kafka 集群,并用它们来描述参数,比如名称、分区数、复制因子和主题 (topic) 属性如保存时间(以毫秒表示)等。它们能够帮助自动化主题的分配或反分配过程。它们同样能够确保开发和运营阶段以及集群重启时的配置一致性。

Bogojevic 还谈到了如何使用 Kubernetes StatefulSet 特性来设置 Kafka 和 ZooKeeper 集群元素。Kubernetes StatefulSet 特性提供了如下能力:

  • 稳定的 pod 身份
  • 稳定的存储
  • 有秩序的启动和关闭
  • 滚动更新

他们的解决方案架构包括 Kafka 和 ZooKeeper Statefulset,其中 Statefulset 是作为一个无头服务 (Headless Service) 被运行的。同样,该架构还包括一个发现服务,客户端应用用它来发现集群中的 Kafka 节点。他谈到了节点选择器,它可以被用来在配置较好硬件(如SSD)的机器上安装实例,以及反关联特性,它可以被用来将实例分布到不同的物理机上。

他们的架构还有一个重要的组件,那就是Kubernetes 的监控,监控组件可以被用来检测某个服务器是否准备就绪,并可以接受连接。监控是由 JMX Prometheus 这 2 个工具完成的。

Bogojevic 讨论了 Kafka 操作算子,它可以被用来将站点可靠性工程师 (SRE) 和运营团队的领域知识转换成可执行的代码。他们将操作算子用于以下的组件:

  • Prometheus
  • Redis 集群
  • 工作流
  • Kafka

使用自动化脚本来创建 Kafka 主题是非常好的实践。信息传送解决方案应该考虑采用“主题即代码”的方法。在操作 Kafka 集群主题时的最佳实践不止这些,还包括:

  • 确保主题存在于目标环境中
  • 确保主题在不再使用时被删除
  • 在不同的环境中采用同样的配置。
  • 根据可用的磁盘空间来配置保存时间
  • 为客户端配置证书
  • 将配置和需求作为代码来交付

在演讲结尾,Bogojevic 谈到了执行 Kafka 升级的一些最佳实践,包括:将协议版本设置为目前的、一次只升级一个 Kafka 代理,然后才将协议版本设置为最新的。关于存储格式的最佳实践是,首先让客户使用最新的版本,然后再将格式版本升级为最新的。

你可以在 CNCF YouTube 频道上找到 Bogojevic 名为“ Kafka 操作算子:如何在 Kubernetes 中管理和操作 Kafka 集群”的演讲视频。

查看英文原文 Managing and Operating Kafka Clusters in Kubernetes


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018-02-11 18:004296
用户头像

发布了 34 篇内容, 共 20.6 次阅读, 收获喜欢 47 次。

关注

评论

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

【CSS】:什么是z-index属性?该属性有哪些取值类型?

翼同学

CSS 前端 样式设置 10月月更

【愚公系列】2022年10月 Go教学课程 015-运算符之赋值运算符和关系运算符

愚公搬代码

10月月更

操作系统导论:分页

小白钊钊

操作系统 java; 10月月更

今日国庆,祝福祖国!【文末超级福利】

图灵社区

读书 国庆节

2022-10-01:给定一个字符串 s,计算 s 的 不同非空子序列 的个数 因为结果可能很大,所以返回答案需要对 10^9 + 7 取余 。 字符串的 子序列 是经由原字符串删除一些(也可能不删除

福大大架构师每日一题

算法 rust 福大大

体验 Orbeon form PE 版本提供的 JavaScript Embedding API

汪子熙

Java SAP commerce 10月月更 oberon

一起玩OptaPlanner-Study,玩转第一个程序

积木编程

ESP32-C3 学习测试 蓝牙 篇(四、GATT Server 示例解析)

矜辰所致

蓝牙 ESP32-C3 10月月更 GATT

When allowCredentials is true, allowedOrigins cannot contain the special value ___ since that cannot be set on the _Access-Contr

共饮一杯无

Java springboot 10月月更

《零代码教练指南》正式发布

明道云

存储优化--分区与冷热分离

喵叔

10月月更

从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题

felix

落地 机器人 AI人工智能

Spring Boot 集成 Redis 配置 MyBatis 二级缓存

微枫Micromaple

redis 缓存 mybatis springboot 10月月更

跟随一组图片,了解Go Channel的底层实现

董哥的黑板报

Go 后端 服务端 操作系统 runtime

【一Go到底】第一天---初识Goooooooooooooooooooooooo

指剑

Go go并发 10月月更

架构师的十八般武艺:线上运维

agnostic

运维

【从0到1学算法】1. 如何获取题中关键信息

Geek_65222d

10月月更

大画 Spark :: 网络 (8)-Spark 网络中的“四次握手”Driver 如何获取 Executor 的 EndpointRef 烧脑

dclar

大数据 hadoop spark 源代码 spark源码

[架构实战] 学习笔记二

爱学习的麦子

Python应用之计算三角形面积

芯动大师

10月月更 Python代码 计算三角形面积

Java中的自旋锁和适应性自旋锁是什么意思?其分类依据是啥?

wljslmz

Java 自旋锁 10月月更 适应性自旋锁

【结构体内功修炼】结构体内存对齐(一)

Albert Edison

C语言 结构体 10月月更 内存对齐

Go学习之路-1.认识GO语言

子不语Any

Go 后端 10月月更

能不能手写Vue响应式?前端面试进阶

bb_xiaxia1998

Vue

mysql中的事务隔离级别序列化如何实现

知识浅谈

MySQL 隔离级别 10月月更

Qt解压带有密码的加密文件

中国好公民st

c++ Qt Company 10月月更

微服务稳定性保障

穿过生命散发芬芳

微服务 10月月更

OpenHarmony如何控制屏幕亮度

坚果

OpenHarmony 10月月更

【LeetCode】重新格式化电话号码Java题解

Albert

LeetCode 10月月更

今日国庆,祝福祖国!【文末超级福利】

图灵教育

读书 国庆节

COSCon'22主论坛来袭 开源站在十字路口

开源社

如何在Kubernetes中管理和操作Kafka集群_大数据_Srini Penchikala_InfoQ精选文章