写点什么

如何在 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:004044
用户头像

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

关注

评论

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

使用CSS实现多种Noise噪点效果

dragonir

CSS html html5 css3

OneFlow源码解析:算子指令在虚拟机中的执行

OneFlow

虚拟机 源码解析 算子

Linux服务器端网络抓包和分析实战

程序员欣宸

Java Linux 8月月更

STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建

DS小龙哥

8月月更

一起畅聊「云+操作系统」!龙蜥社区亮相阿里巴巴开源开放周,完整议程来了

OpenAnolis小助手

数据库 操作系统 龙蜥社区 阿里巴巴开源开放周 开源共享

StoneDB 文档捉虫活动第一季

StoneDB

MySQL 数据库 开源 大数据 开源 8月月更

快速上手,征服三种不同分布式架构调用方案

知识浅谈

分布式 8月月更

中小规模网站架构

舟停江吹雪

Linux

开源一夏 | mysql5.7安装部署-yum安装

zhangpfly

MySQL 开源 linux运维 #开源 8月月更

Netty进阶 -- 非阻塞网络编程 实现群聊+私聊+心跳检测系统

Bug终结者

Netty 8月月更

企业如何判断数据治理是否成功?

雨果

数据治理

SQL与NoSQL最终会走向融合吗?

雨果

nosql sql

JWT 实现登录认证 + Token 自动续期方案

CRMEB

Kyligence 通过 SOC 2 Type II 审计,以可信赖的企业级产品服务全球客户

Kyligence

国际权威鉴证标准 企业级数据分析

面试突击73:IoC 和 DI 有什么区别?

王磊

Java 常见面试题

Gitlab刚发布一项禁止使用 Windows 的公司政策

雨果

gitlab Github'

2022年裁员潮,失业程序员何去何从?

千锋IT教育

是什么影响了MySQL性能?

TimeFriends

8月月更

8月份DB-Engines 数据库排行榜最新战况

雨果

数据库

短视频软件开发——平台同质化如何破局

开源直播系统源码

软件开发 直播源码 短视频直播源码 短视频直播系统源码

学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析

梦想橡皮擦

Python 爬虫 8月月更

Gartner再次重申了“数据编织”的重要价值

雨果

数据编织

50个Java面试必问的面试题,这里都给你整好了

千锋IT教育

GPU加速Pinterest推荐模型,参数量增加100倍,用户活跃度提高16%

OneFlow

机器学习 深度学习 gpu

从脚本到剪辑,影像大师亲授的后期制作秘籍

博文视点Broadview

2022秋招前端面试题(十)(附答案)

helloworld1024fd

谷歌数据中心发生“电力事故”造成 3 人受伤

雨果

数据中心 谷歌

C++运算符重载(二)之左移运算符重载

CtrlX

c c++ 进阶 重载 8月月更

Open Office XML 格式里如何描述多段具有不同字体设置的段落

汪子熙

xml 微软 Office 8月月更 openOffice

打工人的第27天-平凡但不平淡的日子

Amazing_eve

#开源

呵呵,JavaScript 真好玩(苦笑脸)

掘金安东尼

JavaScript 前端 8月月更

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