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

相关推荐

  1. kafka

    2024-07-16 12:18:05       17 阅读
  2. STM32

    2024-07-16 12:18:05       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 12:18:05       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 12:18:05       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 12:18:05       62 阅读
  4. Python语言-面向对象

    2024-07-16 12:18:05       72 阅读

热门阅读

  1. Memcached说明、安装、配置、工具

    2024-07-16 12:18:05       25 阅读
  2. 【Linux/Vim】Vim使用教程及速查手册

    2024-07-16 12:18:05       26 阅读
  3. Vue3学习:如何在Vue3项目中创建一个axios实例

    2024-07-16 12:18:05       25 阅读
  4. 机器学习中的LeetCode

    2024-07-16 12:18:05       22 阅读
  5. 安全加固:Eureka服务实例安全令牌配置全解析

    2024-07-16 12:18:05       29 阅读
  6. Linux 环境下整体备份迁移 Docker 镜像及数据教程

    2024-07-16 12:18:05       28 阅读
  7. Uniapp中image的@load不触发问题

    2024-07-16 12:18:05       26 阅读
  8. unity局部坐标和世界坐标角度介绍

    2024-07-16 12:18:05       28 阅读
  9. windows下使用#include <nlohmann/json.hpp>

    2024-07-16 12:18:05       20 阅读