kafka入坑

快速入门

使用 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: 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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值