Strimzi从入门到精通系列之二:部署Kafka

这篇具有很好参考价值的文章主要介绍了Strimzi从入门到精通系列之二:部署Kafka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、认识Strimzi

Strimzi是一款用于在Kubernetes集群上管理Apache Kafka的开源项目。它使得在Kubernetes上部署、管理和监控Kafka成为可能,提供了一种高度可扩展和可靠的解决方案。Strimzi支持自动缩放、配置灵活、内置监控和告警等功能。通过使用Strimzi,用户可以将Kafka集成到Kubernetes和OpenShift中,并享受到自动化、简单部署和可靠性的好处。

二、Strimzi的核心知识点

Kafka在Kubernetes中的部署和管理:Strimzi提供了一种足够简单且可扩展的方法来在Kubernetes中部署和管理Apache Kafka集群。

操作Kafka集群:Strimzi可用于对Kafka集群进行管理和操作,包括创建和删除Kafka Topic、更改Kafka Broker配置、动态增加和减少Broker数量等。

与Kubernetes的集成:Strimzi与Kubernetes集成得非常紧密,使得Kafka集群可以受益于Kubernetes为应用程序提供的优点,如自动化、弹性、伸缩等。

自动缩放和容错:Strimzi支持Kafka自动扩容和容错,可以根据负载自动增加或减少Kafka Broker数量,同时还能够自动平衡partition分布,从而提高Kafka的可靠性和可用性。

监控和告警:Strimzi内置了监控和告警功能,可以监控Kafka集群的健康状况和性能数据,提供对Kafka集群的可视化监控和警报功能。

灵活的配置:Strimzi提供了灵活的配置选项,可以灵活地配置Kafka Broker和Topic的属性、日志级别、安全性和认证等。

扩展和定制:Strimzi是一个扩展性强、可定制的开源项目,用户可以根据自己的需求进行定制和扩展,从而满足特定的业务要求。

三、Kafka集群、Topic Operator、User Operator

为了能够使用 Cluster Operator 管理 Kafka 集群,您必须将其部署为 Kafka 资源。 Strimzi 提供了示例部署文件来执行此操作。您可以使用这些文件同时部署 Topic Operator 和 User Operator。

部署 Cluster Operator 后,使用 Kafka 资源部署以下组件:

  • Kafka集群
  • Topic Operator
  • User Operator

在安装 Kafka 时,Strimzi 还安装了 ZooKeeper 集群,并添加了连接 Kafka 和 ZooKeeper 所需的配置。

如果您尚未将 Kafka 集群部署为 Kafka 资源,则无法使用 Cluster Operator 对其进行管理。例如,这适用于在 Kubernetes 外部运行的 Kafka 集群。但是,您可以将 Topic Operator 和 User Operator 与不受 Strimzi 管理的 Kafka 集群一起使用,方法是将它们部署为独立组件。您还可以在非 Strimzi 管理的 Kafka 集群中部署和使用其他 Kafka 组件。

四、部署Kafka集群

此过程演示如何使用 Cluster Operator 将 Kafka 集群部署到 Kubernetes 集群。

该部署使用 YAML 文件来提供创建 Kafka 资源的规范。

Strimzi 提供了以下示例文件,可用于创建 Kafka 集群:

  • kafka-persistent.yaml:部署具有三个 ZooKeeper 和三个 Kafka 节点的持久集群。
  • kafka-jbod.yaml:部署具有三个 ZooKeeper 和三个 Kafka 节点(每个节点使用多个持久卷)的持久集群。
  • kafka-persistent-single.yaml:使用单个 ZooKeeper 节点和单个 Kafka 节点部署持久集群。
  • kafka-ephemeral.yaml:部署一个包含三个 ZooKeeper 和三个 Kafka 节点的临时集群。
  • kafka-ephemeral-single.yaml:部署具有三个 ZooKeeper 节点和一个 Kafka 节点的临时集群。

在此过程中,我们使用临时和持久 Kafka 集群部署的示例。

临时集群

  • 一般来说,临时(或临时)Kafka 集群适合开发和测试目的,而不适合生产。此部署使用emptyDir卷来存储代理信息(对于ZooKeeper)和主题或分区(对于Kafka)。使用emptyDir卷意味着它的内容与Pod生命周期严格相关,并且当Pod宕机时被删除。

持久集群

  • 持久性 Kafka 集群使用持久卷来存储 ZooKeeper 和 Kafka 数据。 PersistentVolume 是使用 PersistentVolumeClaim 获取的,以使其独立于 PersistentVolume 的实际类型。 PersistentVolumeClaim 可以使用 StorageClass 来触发自动卷配置。当没有指定StorageClass时,Kubernetes将尝试使用默认的StorageClass。

以下示例显示了一些常见类型的持久卷:

  • 如果您的 Kubernetes 集群在 Amazon AWS 上运行,Kubernetes 可以配置 Amazon EBS 卷
  • 如果您的 Kubernetes 集群在 Microsoft Azure 上运行,Kubernetes 可以配置 Azure 磁盘存储卷
  • 如果您的 Kubernetes 集群在 Google Cloud 上运行,Kubernetes 可以配置持久磁盘卷
  • 如果您的 Kubernetes 集群在裸机上运行,​​Kubernetes 可以配置本地持久卷

示例 YAML 文件指定最新支持的 Kafka 版本,以及其支持的日志消息格式版本和代理间协议版本的配置。 Kafka 配置的 inter.broker.protocol.version 属性必须是指定 Kafka 版本 (spec.kafka.version) 支持的版本。该属性表示 Kafka 集群中使用的 Kafka 协议的版本。

从Kafka 3.0.0开始,当inter.broker.protocol.version设置为3.0或更高版本时,log.message.format.version选项将被忽略,不需要设置。

升级 Kafka 时需要更新 inter.broker.protocol.version。

默认情况下,示例集群名为 my-cluster。集群名称由资源名称定义,集群部署后无法更改。要在部署集群之前更改集群名称,请编辑相关 YAML 文件中 Kafka 资源的 Kafka.metadata.name 属性。

默认集群名称和指定的Kafka版本

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    version: 3.4.0
    #...
    config:
      #...
      log.message.format.version: "3.4"
      inter.broker.protocol.version: "3.4"
  # ...

先决条件

  • 必须部署 Cluster Operator。

部署 Cluster Operator的详细步骤可以参考博主下面这篇技术博客:

  • Strimzi从入门到精通系列之一:部署Cluster Operator

创建并部署临时或持久集群。

创建并部署临时集群:

kubectl apply -f examples/kafka/kafka-ephemeral.yaml

创建和部署持久集群:

kubectl apply -f examples/kafka/kafka-persistent.yaml

2.检查部署状态

kubectl get pods -n <my_cluster_operator_namespace>

输出显示 Pod 名称和就绪情况

NAME                        READY   STATUS    RESTARTS
my-cluster-entity-operator  3/3     Running   0
my-cluster-kafka-0          1/1     Running   0
my-cluster-kafka-1          1/1     Running   0
my-cluster-kafka-2          1/1     Running   0
my-cluster-zookeeper-0      1/1     Running   0
my-cluster-zookeeper-1      1/1     Running   0
my-cluster-zookeeper-2      1/1     Running   0

my-cluster 是 Kafka 集群的名称。

以 0 开头的连续索引号标识创建的每个 Kafka 和 ZooKeeper Pod。

使用默认部署,您将创建一个 Entity Operator 集群、3 个 Kafka Pod 和 3 个 ZooKeeper Pod。

READY 显示已准备好/预期的副本数量。当状态显示为正在运行时,部署成功。文章来源地址https://www.toymoban.com/news/detail-504103.html

五、使用 Cluster Operator 部署 Topic Operator

此过程描述如何使用 Cluster Operator 部署 Topic Operator。

您配置 Kafka 资源的entityOperator 属性以包含topicOperator。默认情况下,Topic Operator 会监视 Cluster Operator 部署的 Kafka 集群的命名空间中的 KafkaTopic 资源。您还可以使用主题运算符规范中的 WatchNamespace 指定命名空间。单个主题操作员可以监视单个名称空间。一个命名空间只能由一个主题操作员监视。

如果您使用 Strimzi 将多个 Kafka 集群部署到同一命名空间,请仅为一个 Kafka 集群启用 Topic Operator,或使用 WatchedNamespace 属性配置 Topic Operator 来监视其他命名空间。

如果要将 Topic Operator 与不受 Strimzi 管理的 Kafka 集群一起使用,则必须将 Topic Operator 部署为独立组件。

先决条件

  • 必须部署 Cluster Operator。

程序

1.编辑 Kafka 资源的entityOperator 属性以包含 topicOperator:

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  #...
  entityOperator:
    topicOperator: {}
    userOperator: {}

2.使用 EntityTopicOperatorSpec 架构参考中描述的属性配置主题运算符规范。

如果您希望所有属性都使用其默认值,请使用空对象 ({})。

3.创建或更新资源:

kubectl apply -f <kafka_configuration_file>

4.检查部署状态:

kubectl get pods -n <my_cluster_operator_namespace>

输出显示 Pod 名称和就绪情况

NAME                        READY   STATUS    RESTARTS
my-cluster-entity-operator  3/3     Running   0
# ...

my-cluster 是 Kafka 集群的名称。

READY 显示已准备好/预期的副本数量。当状态显示为正在运行时,部署成功。

六、使用 Cluster Operator 部署 User Operator

此过程描述如何使用 Cluster Operator 部署 User Operator。

您配置 Kafka 资源的entityOperator 属性以包含userOperator。默认情况下,User Operator 会监视 Kafka 集群部署的命名空间中的 KafkaUser 资源。您还可以使用 User Operator 规范中的 WatchedNamespace 指定命名空间。单个用户操作员可以监视单个命名空间。一个命名空间只能由一名用户操作员监视。

如果要将 User Operator 与不受 Strimzi 管理的 Kafka 集群一起使用,则必须将 User Operator 作为独立组件部署。

先决条件

  • 必须部署 Cluster Operator。

程序

1.编辑 Kafka 资源的entityOperator 属性以包含 userOperator:

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  #...
  entityOperator:
    topicOperator: {}
    userOperator: {}

2.使用 EntityUserOperatorSpec 架构参考中描述的属性配置 User Operator 规范。

如果您希望所有属性都使用其默认值,请使用空对象 ({})。

3.创建或更新资源:

kubectl apply -f <kafka_configuration_file>

4.检查部署状态:

kubectl get pods -n <my_cluster_operator_namespace>

输出显示 Pod 名称和就绪情况

NAME                        READY   STATUS    RESTARTS
my-cluster-entity-operator  3/3     Running   0
# ...

my-cluster 是 Kafka 集群的名称。

READY 显示已准备好/预期的副本数量。当状态显示为正在运行时,部署成功。

到了这里,关于Strimzi从入门到精通系列之二:部署Kafka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Iceberg从入门到精通系列之二:Iceberg集成Hive

    理解Iceberg核心概念可以阅读博主下面这篇技术博客: Iceberg从入门到精通系列之一:Iceberg核心概念理解 拷贝Iceberg的jar包到Hive的auxlib目录中 启动hdfs 启动yarn 启动historyserver Hive的元数据服务是一种存储和管理Hive表格和数据定义的中央服务,它允许用户定义表格、分区和桶等元

    2024年02月12日
    浏览(28)
  • Iceberg从入门到精通系列之二十二:Spark DDL

    要在 Spark 中使用 Iceberg,请首先配置 Spark 目录。 Iceberg 使用 Apache Spark 的 DataSourceV2 API 来实现数据源和目录。 Spark 3 可以使用 USINGiceberg 子句在任何 Iceberg 目录中创建表: Iceberg会将Spark中的列类型转换为对应的Iceberg类型。详细信息请查看创建表的类型兼容性部分。 PARTITIONE

    2024年02月19日
    浏览(31)
  • Oracle数据库从入门到精通系列之二十一:Oracle 19c数据库增加重做日志大小

    在此最佳实践中,我们增加了 Oracle 重做日志的大小以提高数据库性能。适当调整数据库重做日志的大小可以减少数据库中的等待事件,从而优化数据库系统。 数据库重做日志至少包含两个文件,负责存储对数据库所做的任何更新。重做日志对于数据库至关重要,因为它们可

    2024年04月26日
    浏览(39)
  • Strimzi Kafka Bridge(桥接)实战之一:简介和部署

    这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 在strimzi技术体系中,桥接(bridge)是很要的功能,内容也很丰富,因此将桥接相关的内容从《strimzi实战》系列中独立出来,成立桥接相关的系列文章,便于分类和专项深入 本文是《Strimzi Kafka Bridge(桥

    2024年02月08日
    浏览(27)
  • Debezium系列之:使用 Strimzi 将 Kafka 和 Debezium 迁移到 Kubernetes

    在本文中,将探讨在生产中实现debezium与K8s的结合: 在 Kubernetes 集群中安装和管理 Apache Kafka 集群。 在 Kubernetes 集群中部署 Debezium Kafka Connect。 Kubernetes 是一个开源容器编排器,本文使用 minikube 作为 Kubernetes 集群,但相同的步骤在任何其他实现中都应该有效。 启动集群 在终

    2024年02月15日
    浏览(38)
  • minikube从入门到精通系列之一:部署minikube详细步骤

    K8s相关知识可以阅读博主以下几篇技术博客: K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点 K8s系列之:Pod的基本用法 k8s系列之:kubectl子命令详解一 k8s系列之:kubectl子命令详解二 更多K8s知识点详见博主K8s系列文章 Minikube是一个开源工具,用于在本

    2024年02月16日
    浏览(25)
  • TiDB数据库从入门到精通系列之六:使用 TiCDC 将 TiDB 的数据同步到 Apache Kafka

    快速搭建 TiCDC 集群、Kafka 集群和 Flink 集群 创建 changefeed,将 TiDB 增量数据输出至 Kafka 使用 go-tpc 写入数据到上游 TiDB 使用 Kafka console consumer 观察数据被写入到指定的 Topic (可选)配置 Flink 集群消费 Kafka 内数据 部署包含 TiCDC 的 TiDB 集群 在实验或测试环境中,可以使用 TiU

    2024年02月12日
    浏览(41)
  • Kafka入门到精通

    网上很多,随便列几个:  kafka笔记_千峰kafka笔记_kyrielx的博客-CSDN博客 Kafka 基本原理(8000 字小结) 基础没看完,下面别看了,容易头晕。   Partition+Replication 再加上consumer group 基本就保证了高可用。 这个需要重点说下,因为市面上消息队列产品很多, kafka据说时目前最快,

    2024年02月10日
    浏览(22)
  • (四)kafka从入门到精通之安装教程

    Kafka是一个高性能、低延迟、分布式的分布式数据库,可以在分布式环境中实现数据的实时同步和分发。 Zookeeper是一种开源的分布式数据存储系统,它可以在分布式环境中存储和管理数据库中的数据。它的主要作用是实现数据的实时同步和分发,可以用于实现分布式数据库、

    2024年02月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包