Kubernetes kafka系列 | Strimzi 快速部署kafka集群 (可外部通信)

一、Strimzi介绍

Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制器和操作符,使得在 Kubernetes 环境中轻松地部署、管理和操作 Kafka 集群成为可能。Strimzi 项目旨在简化 Kafka 在 Kubernetes 上的部署和运维,同时利用 Kubernetes 的优势,如弹性、可扩展性和自动化。

以下是 Strimzi 的一些关键特性和优势:

Kubernetes原生支持: Strimzi 利用 Kubernetes 的原生资源和概念,如Pods、Services、PersistentVolumeClaims(PVCs)等,使得 Kafka 集群的部署和管理与 Kubernetes 中其他应用程序类似。

自定义资源定义(CRDs): Strimzi 提供了一组自定义资源定义(CRDs),用于描述 Kafka 集群、主题、用户等 Kafka 相关的资源,使得用户可以通过 Kubernetes API 对其进行管理。

多种部署选项: Strimzi 支持多种部署模式,包括单节点、多节点、高可用、多集群等,可以根据需求选择合适的部署模式。

集成安全性: Strimzi 支持 Kafka 的安全功能,包括TLS/SSL加密、身份认证、授权等,以确保 Kafka 集群的安全性。

自动化运维: Strimzi 提供了一组控制器和操作符,可以自动化 Kafka 集群的运维任务,如扩展、备份、升级等,减少了运维人员的工作量。
组件架构图如下:

二、部署Kafka集群

创建namespace

kubectl create namespace kafka

Strimzi 部署
包括ClusterRoles和ClusterRoleBindings一些自定义资源定义(CRDs)。CRD 定义了您将用于管理 Kafka 集群、主题和用户的自定义资源(CR,例如 等)使用Kafka的架构。

kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka

从 strimzi.io下载的YAML 文件ClusterRoleBindings包含默认命名空间myproject。查询参数namespace=kafka会更新这些文件以改为使用kafka。通过-n kafka在运行时指定。

kafka部署

1、如果您的k8s环境还没有准备好pv,请执行以下命令完成部署,这样创建的kafka服务也能正常使用,只不过所有数据都存在pod中,一旦pod被删除