使用 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。
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
ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: "2024-07-11T06:53:34Z"
labels:
app: strimzi
chart: kafka-operator-0.31.1
component: broker-role
heritage: Helm
release: qfusion-kafka-operator
name: strimzi-kafka-broker
resourceVersion: "2187"
uid: e4da519d-418d-4e84-8b63-cc73773fac87
rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
creationTimestamp: "2024-07-12T07:32:13Z"
labels:
AppName: kafka-6d02b3a4
TenantId: 847798ee3db44716b6357b04e5a55c16
app.kubernetes.io/instance: kafka-6d02b3a4
app.kubernetes.io/managed-by: strimzi-cluster-operator
app.kubernetes.io/name: kafka
app.kubernetes.io/part-of: strimzi-kafka-6d02b3a4
strimzi.io/cluster: kafka-6d02b3a4
strimzi.io/kind: Kafka
strimzi.io/name: strimzi
name: strimzi-qfusion-admin-kafka-6d02b3a4-kafka-init
resourceVersion: "2595833"
uid: c4e26e5a-8212-4d5e-8e44-9c72795ee1d6
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: strimzi-kafka-broker
subjects:
- kind: ServiceAccount
name: kafka-6d02b3a4-kafka
namespace: qfusion-admin
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-9090kafka-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-90919091 —— 用于 Kafka 代理之间的数据复制。PLAIN-9092://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9092
PLAIN-90929092 —— 对外提供非加密的访问。TLS-9093://kafka-823135ee-kafka-2.kafka-823135ee-kafka-brokers.qfusion-admin.svc:9093
TLS-90939093 —— 另一个 SSL 端口,可能用于不同的用途或客户端。ZONE1-9094://10.10.x.x:23561
ZONE1-909410.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