Kubernetes设置和运行Kafka教程:什么是 Apache Kafka?Kafka 是一种实时收集和处理大量数据的消息传递系统,使其成为在 Kubernetes 集群中运行的应用程序的重要集成组件。部署在集群中的应用程序的效率可以通过事件流平台(如Apache Kafka )进一步增强。
如何在Kubernetes上设置和运行Kafka?本深度教程向你展示如何在 Kubernetes 集群上配置 Kafka 服务器。
Apache Kafka 如何工作?【如何在Kubernetes上设置和运行Kafka(分步指南)】Apache Kafka 基于发布订阅模型:
- 生产者产生消息并将它们发布到主题。
- Kafka 将消息分类为主题并存储它们,以便它们是不可变的。
- 消费者订阅特定主题并吸收生产者提供的消息。
文章图片
Zookeeper是 Kafka 配置中不可或缺的组件。它协调 Kafka 生产者、经纪人、消费者和集群成员。
部署 ZookeeperKubernetes如何设置和运行Kafka?没有 Zookeeper,Kafka 无法运行。Kafka 服务会不断重新启动,直到检测到有效的 Zookeeper 部署。
通过创建 YAML 文件zookeeper.yml预先部署 Zookeeper 。此文件启动服务和部署,用于在 Kubernetes 集群上安排 Zookeeper pod。
注意:你可以使用另一种标记语言 (YAML) 创建适合人类用户和软件工具的文件。像本教程中介绍的文件一样,可以在 GitHub 等在线存储库中轻松免费获得。当前形式的文件不打算在生产环境中使用。相反,你应该充分编辑这些文件以满足你的系统要求。
使用你喜欢的文本编辑器将以下字段添加到zookeeper.yml:
apiVersion: v1
kind: Service
metadata:
name: zk-s
labels:
app: zk-1
spec:
ports:
- name: client
port: 2181
protocol: TCP
- name: follower
port: 2888
protocol: TCP
- name: leader
port: 3888
protocol: TCP
selector:
app: zk-1
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: zk-deployment-1
spec:
template:
metadata:
labels:
app: zk-1
spec:
containers:
- name: zk1
image: bitnami/zookeeper
ports:
- containerPort: 2181
env:
- name: ZOOKEEPER_ID
value: "1"
- name: ZOOKEEPER_SERVER_1
value: zk1
在 Kubernetes 集群上运行以下命令以创建定义文件:
kubectl create -f zookeeper.yml
创建 Kafka 服务如何在Kubernetes上设置和运行Kafka?我们现在需要创建一个 Kafka 服务定义文件。该文件通过负载平衡新的 Kafka pod 来管理 Kafka Broker 部署。基本的kafka-service.yml文件包含以下元素:
apiVersion: v1
kind: Service
metadata:
labels:
app: kafkaApp
name: kafka
spec:
ports:
-
port: 9092
targetPort: 9092
protocol: TCP
-
port: 2181
targetPort: 2181
selector:
app: kafkaApp
type: LoadBalancer
保存文件后,通过输入以下命令创建服务:
kubectl create -f kafka-service.yml
注意:在上面提到的Kafka Service定义文件中,Type设置为
LoadBalancer
.
如果你将Kubernetes 部署在裸机上,请使用 MetalLB,这是裸机 Kubernetes的负载均衡器实现。Kubernetes设置和运行Kafka教程:定义 Kafka 复制控制器创建一个额外的.yml文件作为 Kafka 的复制控制器。在我们的示例kafka-repcon.yml 中,复制控制器文件包含以下字段:
---
apiVersion: v1
kind: ReplicationController
metadata:
labels:
app: kafkaApp
name: kafka-repcon
spec:
replicas: 1
selector:
app: kafkaApp
template:
metadata:
labels:
app: kafkaApp
spec:
containers:
-
command:
- zookeeper-server-start.sh
- /config/zookeeper.properties
image: "wurstmeister/kafka"
name: zk1
ports:
-
containerPort: 2181
保存复制控制器定义文件并使用以下命令创建它:
kubectl create -f kafka-repcon.yml
启动 Kafka 服务器Kubernetes如何设置和运行Kafka?Kafka 服务器的配置属性在config/server.properties文件中定义。由于我们已经配置了 Zookeeper 服务器,请使用以下命令启动 Kafka 服务器:
kafka-server-start.sh config/server.properties
如何创建 Kafka 主题
如何在Kubernetes上设置和运行Kafka?Kafka 有一个名为kafka-topics.sh的命令行实用程序。使用此实用程序在服务器上创建主题。打开一个新的终端窗口并输入:
kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic Topic-Name
我们创建了一个名为Topic-Name 的主题,其中包含一个分区和一个副本实例。
如何启动 Kafka Producer
在配置/ server.properties文件包含代理端口ID。示例中的代理正在侦听端口 9092。可以使用命令行直接指定侦听端口:
kafka-console-producer.sh --topic kafka-on-kubernetes --broker-list localhost:9092 --topic Topic-Name
现在使用终端添加几行消息。
如何启动 Kafka 消费者
Kubernetes如何设置和运行Kafka?与生产者属性一样,默认消费者设置在config/consumer.properties文件中指定。打开一个新的终端窗口并输入消费消息的命令:
kafka-console-consumer.sh --topic Topic-Name --from-beginning --zookeeper localhost:2181
该
--from-beginning
命令按时间顺序列出消息。你现在可以从生产者的终端输入消息并看到它们出现在消费者的终端中。如何扩展 Kafka 集群使用命令终端并使用kubectl直接管理 Kafka 集群 。输入以下命令并通过将 pod 数量从一 (1) 增加到六 (6) 来快速扩展你的 Kafka 集群:
kubectl scale rc kafka-rc --replicas=6
Kubernetes设置和运行Kafka教程结论如何在Kubernetes上设置和运行Kafka?按照本教程中的说明,你已在 Kubernetes 上成功安装了 Kafka。单个 Kafka 代理可以同时处理来自多个客户端的大量读取和写入。
如果你在 Kubernetes 集群中部署应用程序,请使用 Kafka 来提高应用程序实时交换信息的能力。
对于替代消息代理,请查看我们关于在 Kubernetes上部署 RabbitMQ的文章。
推荐阅读
- 如何将Node.js更新到最新版本(Linux、Windows和macOS)
- Docker CMD与Entrypoint命令有什么区别(应该使用哪个?)
- Docker镜像大小(如何保持小(如何使用更小的镜像?))
- 如何使用Prometheus监控Kubernetes(分步指南)
- Ghost win8.1下蓝牙经常掉线的处理技巧
- xlueops.exe是啥?Win8.1系统下删除xlueops.exe的技巧
- Win8.1系统下IE脚本出错的原因区分以及处理技巧
- 雨林木风Win8.1恢复开始屏幕IE10图标的具体技巧
- Ghost Win8.1纯净版磁盘已用空间与文件大小不一致