快速入门
使用 Strimzi 项目时,在 Kubernetes 上启动和运行 Apache Kafka 集群非常简单!
Kubernetes Kind 是一个 Kubernetes 集群,以单个 Docker 镜像的形式实现,并以容器的形式运行。它主要用于测试 Kubernetes 本身,但也可用于本地开发或 CI。
使用 Minikube 或 Minishift 的本地安装时,Kubernetes 集群在虚拟机内启动,运行 Linux 内核和 Docker 守护程序,消耗额外的 CPU 和 RAM。
另一方面,Kind 不需要额外的 VM - 它只是作为 Linux 容器运行,使用一组进程,使用与 Docker 守护程序相同的 Linux 内核。因此,它启动速度更快,消耗的 CPU 和 RAM 比其他方案更少,这在 Linux 主机上本地运行 Docker 守护程序时尤其明显。
Kubernetes Kind 目前不支持节点端口或负载均衡器。您将无法从 Kubernetes 环境外部轻松访问 Kafka 集群。如果您需要从外部访问,我们建议使用 Minikube。
api-resources
k api-resources | grep kaf
kafkabridges kb kafka.strimzi.io/v1beta2 true KafkaBridge
kafkaconnectors kctr kafka.strimzi.io/v1beta2 true KafkaConnector
kafkaconnects kc kafka.strimzi.io/v1beta2 true KafkaConnect
kafkamirrormaker2s kmm2 kafka.strimzi.io/v1beta2 true KafkaMirrorMaker2
kafkamirrormakers kmm kafka.strimzi.io/v1beta2 true KafkaMirrorMaker
kafkarebalances kr kafka.strimzi.io/v1beta2 true KafkaRebalance
kafkas k kafka.strimzi.io/v1beta2 true Kafka
kafkatopics kt kafka.strimzi.io/v1beta2 true KafkaTopic
kafkausers ku kafka.strimzi.io/v1beta2 true KafkaUser
使用安装文件部署 Strimzi
ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:creationTimestamp: "2024-07-11T06:53:34Z"labels:app: strimzichart: kafka-operator-0.31.1component: broker-roleheritage: Helmrelease: qfusion-kafka-operatorname: strimzi-kafka-brokerresourceVersion: "2187"uid: e4da519d-418d-4e84-8b63-cc73773fac87
rules:
- apiGroups:- ""resources:- nodesverbs:- get
ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:creationTimestamp: "2024-07-12T07:32:13Z"labels:AppName: kafka-6d02b3a4TenantId: 847798ee3db44716b6357b04e5a55c16app.kubernetes.io/instance: kafka-6d02b3a4app.kubernetes.io/managed-by: strimzi-cluster-operatorapp.kubernetes.io/name: kafkaapp.kubernetes.io/part-of: strimzi-kafka-6d02b3a4strimzi.io/cluster: kafka-6d02b3a4strimzi.io/kind: Kafkastrimzi.io/name: strimziname: strimzi-qfusion-admin-kafka-6d02b3a4-kafka-initresourceVersion: "2595833"uid: c4e26e5a-8212-4d5e-8e44-9c72795ee1d6
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: strimzi-kafka-broker
subjects:
- kind: ServiceAccountname: kafka-6d02b3a4-kafkanamespace: qfusion-admin
advertised.listeners
https://www.confluent.io/blog/kafka-listeners-explained/
advertised.listeners
配置项在 Kafka 配置中非常重要,它指定了 Kafka 代理(Broker)应该向外部(包括客户端和其它 Kafka 代理)通告的监听地址和端口。这个配置确保了即使在复杂的网络环境中,比如使用了服务发现或者网络隔离的情况下,Kafka 集群的各个组件也能正确地找到并相互通信。
下面是对您提供的 advertised.listeners
配置的详细解释:
-
CONTROLPLANE-9090://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9090
- 监听器名称:
CONTROLPLANE-9090
- 协议:SSL(安全套接字层,用于加密通信)
- Kafka 代理地址:
kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc
—— 这通常是一个 Kubernetes 服务的 DNS 名称,它解析为 Kafka 集群中的一个代理。 - 端口:
9090
—— Kafka 代理监听的端口。
- 监听器名称:
-
REPLICATION-9091://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9091
- 监听器名称:
REPLICATION-9091
- 协议:SSL
- 端口:
9091
—— 用于 Kafka 代理之间的数据复制。
- 监听器名称:
-
PLAIN-9092://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9092
- 监听器名称:
PLAIN-9092
- 协议:PLAINTEXT(明文)
- 端口:
9092
—— 对外提供非加密的访问。
- 监听器名称:
-
TLS-9093://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9093
- 监听器名称:
TLS-9093
- 协议:SSL
- 端口:
9093
—— 另一个 SSL 端口,可能用于不同的用途或客户端。
- 监听器名称:
-
ZONE1-9094://10.10.x.x:23561
- 监听器名称:
ZONE1-9094
- 协议:SASL_PLAINTEXT(简单认证和明文传输)
- IP 地址:
10.10.180.x.x
—— 一个固定的 IP 地址,可能用于特定区域或场景的访问。 - 端口:
23561
—— 特定于这个监听器的端口号。
- 监听器名称:
在 Kubernetes 环境中,.kafka-823135ee-kafka-brokers.qfusion-admin.svc
这部分是一个服务名称,它可能被 Kubernetes DNS 解析为集群内所有 Kafka 代理的内部 IP 地址。这样,即使代理的 IP 地址发生了变化,服务的 DNS 名称仍然保持稳定,可以用于通信。
advertised.listeners
配置确保了 Kafka 集群可以在复杂的网络环境中正确地对外通告其服务地址和端口,使得客户端和其它 Kafka 代理能够找到并与之通信。
https://blog.csdn.net/AE_BD/article/details/136626386