k8s kafka部署实战

鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen)

Kubernetes (k8s) 是一个用于自动化容器操作的开源平台,而 Kafka 是一个分布式流数据处理平台。在 k8s 上部署 Kafka 可以使得 Kafka 的部署更加容易管理和维护。下面是一个简单的 k8s Kafka 部署实战:

  1. 安装 k8s 集群

在部署 Kafka 之前,需要先准备一个 k8s 集群。可以使用 Minikube 等工具在本地搭建一个 k8s 集群进行测试。如果需要在生产环境中部署,可以使用云服务商提供的 k8s 服务,如 AWS EKS、Google GKE 等。

  1. 下载 Kafka 镜像

可以从官方网站下载 Kafka 镜像,也可以使用 Docker Hub 上的 Kafka 镜像。下载完成后,需要将镜像上传到 k8s 集群的 Docker 仓库。

  1. 创建 Kafka Topic

使用 k8s 提供的命令行工具 kubectl 创建 Kafka Topic,可以通过命令 kubectl create -f <topic.yaml> 来创建一个 topic。

  1. 创建 Kafka 部署文件

在 k8s 集群上创建 Kafka 部署文件,定义 Kafka 的 Pod、Service 等。一个示例的部署文件如下:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: kafka
  namespace: default
spec:
  selector:
    matchLabels:
      app: kafka
  serviceName: kafka
  replicas: 3
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
      - name: kafka
        image: <kafka-image>
        ports:
        - containerPort: 9092
        volumeMounts:
        - name: data
          mountPath: /var/lib/kafka
      volumes:
      - name: data
        emptyDir: {}

这个文件定义了一个 StatefulSet,用于创建 Kafka 的 Pod。其中定义了 3 个副本,使用 Kafka 镜像,将 9092 端口暴露出来,并挂载一个数据卷。

  1. 创建 Kafka Service

使用 k8s 提供的命令行工具 kubectl 创建 Kafka Service,将 Kafka 集群暴露在 k8s 集群外部。一个示例的 Service 文件如下:

apiVersion: v1
kind: Service
metadata:
  name: kafka
  namespace: default
  labels:
    app: kafka
spec:
  ports:
  - name: kafka
    port: 9092
    protocol: TCP
  selector:
    app: kafka

这个文件定义了一个 Service,将 Kafka 集群暴露在 k8s 集群外部,并将 Kafka 的 9092 端口暴露出来。

  1. 部署 Kafka

使用命令 kubectl apply -f <kafka-deploy.yaml> 来部署 Kafka。

  1. 测试 Kafka

使用 Kafka 提供的命令行工具来测试 Kafka部署后,可以使用 Kafka 提供的命令行工具来测试 Kafka 是否正常工作。

  1. 创建一个 Kafka topic:
kubectl exec -it kafka-0 -- /usr/bin/kafka-topics --create --topic test-topic --partitions 3 --replication-factor 3 --if-not-exists --zookeeper zk-cs:2181
  1. 查看 Kafka topic 列表:
kubectl exec -it kafka-0 -- /usr/bin/kafka-topics --list --zookeeper zk-cs:2181

如果能看到 test-topic 列表,说明 Kafka 已经正常工作。

  1. 生产消息到 Kafka:
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-producer --topic test-topic --broker-list localhost:9092

此时会进入一个命令行界面,输入消息并回车,消息会被发送到 Kafka。

  1. 消费消息:
kubectl exec -it kafka-0 -- /usr/bin/kafka-console-consumer --topic test-topic --from-beginning --bootstrap-server localhost:9092

此时会进入一个命令行界面,显示接收到的消息。

以上测试命令中的 kafka-0 可以替换为 Kafka 集群中的任意一个 Pod 名称,都可以进行测试。

猜你喜欢

转载自blog.csdn.net/feng1790291543/article/details/130868573