K8S系列文章之 Docker安装使用Kafka

通过Docker拉取镜像的方式进行安装

照例先去DockerHub找一下镜像源,看下官方提供的基本操作(大部分时候官方教程比网上的要清晰一些,并且大部分教程可能也是翻译的官方的操作步骤,所以直接看官方的就行)

老实说Kafka的参数配置项太多了,比较繁琐。

如果是Linux环境下打算直接用官方提供的docker-compose直接读取yml配置文件了

docker-compose.yml

version: "3"
services:
  zookeeper:
    image: 'bitnami/zookeeper:latest'
    ports:
      - '2181:2181'
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: 'bitnami/kafka:latest'
    ports:
      - '9092:9092'
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.59.149:9092
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper

直接运行即可

docker-compose up -d

官网同时还提供了Kafka without Zookeeper (KRaft)的配置方式

WIn10可以在Docker容器内部通过挂载配置文件,继续用上面的方式,但我这里决定用繁琐的方式一步步来

拉取Zookeeper和Kafka镜像

docker pull zookeeper
docker pull bitnami/kafka:3.1

在Docker容器内创建网络(连通Zookeeper和Kafka)

app-tier:网络名称
–driver:网络类型为bridge

docker network create app-tier --driver bridge

启动Zookeeper节点

在Docker run命令里加上--network app-tier,让Zookeeper容器启动后连接上创建的网络(并且允许匿名登陆)

docker run -d --name zookeeper-server --network app-tier -e ALLOW_ANONYMOUS_LOGIN=yes zookeeper

启动kafka服务端

同样的方式,让Kafka服务端节点也连上这个网络

dockerun -d --name kafka-server --network app-tier -p 9092:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.59.149:9092 -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 bitnami/kafka:3.1

注意:

KAFKA_ADVERTISED_HOST_NAME为当前主机IP或地址(重点:如果是服务器部署则配服务器IP或域名否则客户端监听消息会报地址错误)

kafka 节点启动后,会向 zookeeper 注册自己,同时告诉 zookeeper 自身的通信地址,这个地址就是配置文件中的 advertised.listeners,如果没有配置 advertised.listeners,就会使用listeners

启动Kafka客户端

Finally we create a new container instance to launch the Apache Kafka client and connect to the server created in the previous step:

docker run -it --rm --network app-tier -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 bitnami/kafka:3.1 kafka-topics.sh --list --bootstrap-server kafka-server:9092

Producer and consumer using external client

These clients, from the same host, will use localhost to connect to Apache Kafka.

#生产者创建Topic 
kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test
#消费者接收消息
kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning

最后发送个经典的Hello World做为测试

kafka-server

kafka-client

最后推荐一个kafka的图形化管理工具
kafka-map

访问地址:http://服务器IP:9001/  #端口号看自己喜好修改映射
DEFAULT_USERNAME:默认账号admin
DEFAULT_PASSWORD:默认密码admin
GitHub地址:https://github.com/dushixiang/kafka-map/blob/master/README-zh_CN.md
Gitee地址 https://gitee.com/dushixiang/kafka-map

拉取镜像

docker pull dushixiang/kafka-map:latest

启动运行

docker run -d --name kafka-map --network app-tier -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --restart always dushixiang/kafka-map:latest

image-20230209234854965

Kubernetes (k8s) 是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。要在 k8s安装 Kafka(一个分布式流处理平台)的单机版,首先你需要确保你的 k8s 集群已经设置好,并且具备运行 Docker 或者 Kubernetes 的能力。 以下是简单的步骤: 1. **下载 Kafka**: 从 Apache Kafka 官网下载适合的版本,例如 tar.gz 或者二进制镜像。你可以选择单节点模式,因为这是一个演示,但在生产环境中通常会使用多节点复制。 2. **部署 Kafka:** - 创建一个 Kubernetes Deployment 根据下载的 Kafka 镜像。这需要一个 YAML 文件,例如 `kafka-deployment.yaml`,内容包括了 Deployment 的名称、Kafka容器的镜像标签以及必要的环境变量(如 `ZOOKEEPER_CONNECT`、`KAFKA_LISTENERS` 等)。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: kafka spec: replicas: 1 selector: matchLabels: app: kafka template: metadata: labels: app: kafka spec: containers: - name: kafka image: confluentinc/cp-kafka:latest env: - name: ZOOKEEPER_CONNECT value: "localhost:2181" - name: KAFKA_ADVERTISED_LISTENERS value: "PLAINTEXT://localhost:9092" ``` 3. **创建 Service:** 使用 Kubernetes Service 来暴露 Kafka 服务的端点。创建一个 `kafka-service.yaml`,定义一个 ClusterIP 类型的服务,暴露 Kafka 的端口 9092。 ```yaml apiVersion: v1 kind: Service metadata: name: kafka-service spec: type: ClusterIP selector: app: kafka ports: - name: kafka port: 9092 targetPort: 9092 ``` 4. **应用配置并部署:** 在你的 kubectl 命令行中,使用 `kubectl apply -f` 命令分别应用 Deployment 和 Service 的配置文件: ```bash kubectl apply -f kafka-deployment.yaml kubectl apply -f kafka-service.yaml ``` 5. **验证安装:** 使用 `kubectl get pods,svc` 确认 Kafka 的 Deployment 是否已启动并处于 Running 状态,Service 是否成功创建。 6.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值