在这个终极指南中,我将为您提供一个简单的分步教程,关于在库伯内特斯安装Kafka Docker。这篇文章包括一个完整的视频演练。

最近,人们对于将卡夫卡部署到库贝内特斯集群产生了浓厚的兴趣。如果你想自己去深潜,那么你找到了正确的文章。现在,我们有卡夫卡多克,部署一个卡夫卡集群到库伯内特斯是一个瞬间。

在库伯内特斯部署动物园管理员

Kafka 依靠 ZooKeeper 来跟踪其配置,包括可用的主题。

在部署卡夫卡之前,我们需要部署动物园管理员。

创建一个名为zoosand.yml的文件,并添加以下内容:

---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: zookeeper-deployment-1
spec:
  template:
    metadata:
      labels:
        app: zookeeper-1
    spec:
      containers:
      - name: zoo1
        image: digitalwonderland/zookeeper
        ports:
        - containerPort: 2181
        env:
        - name: ZOOKEEPER_ID
          value: "1"
        - name: ZOOKEEPER_SERVER_1
          value: zoo1
---
apiVersion: v1
kind: Service
metadata:
  name: zoo1
  labels:
    app: zookeeper-1
spec:
  ports:
  - name: client
    port: 2181
    protocol: TCP
  - name: follower
    port: 2888
    protocol: TCP
  - name: leader
    port: 3888
    protocol: TCP
  selector:
    app: zookeeper-1

这将创建一个 Kubernetes 部署,将安排动物园管理员吊舱和 Kubernetes 服务将流量路由到吊舱。该服务有一个zoo1的短名称,我们将稍后在部署卡夫卡经纪人时使用。

创建资源:

$ kubectl create -f zookeeper.yml

现在让我们开始部署卡夫卡。

部署卡夫卡码头服务

我们需要做的第一件事是部署一个Kubernetes服务,将管理我们的卡夫卡经纪人部署。

创建一个名为 kafka-service.yml 的新文件,并添加以下内容:

---
apiVersion: v1
kind: Service
metadata:
  name: kafka-service
  labels:
    name: kafka
spec:
  ports:
  - port: 9092
    name: kafka-port
    protocol: TCP
  selector:
    app: kafka
    id: "0"
  type: LoadBalancer

您可能会注意到,我们已将类型设置为 LoadBalancer 。如果您的 Kubernetes 群集部署到裸机,则不要惊慌失措。有一个新的Kubernetes附加组件称为金属LB,允许这一点。结出我的文章Kubernetes金属磅裸金属负载平衡器如何启用它的说明。它会让你的生活轻松得多。

创建服务。

$ kubectl create -f kafka-service

现在,我们需要获得服务的外部 IP,因为我们需要它才能在下一节中启动一个 Kafka Broker。

$ kubectl describe svc kafka-service
Name: kafka-service
Namespace: default
Labels: name=kafka
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"name":"kafka"},"name":"kafka-service","namespace":"default"},"spec":{"ports...
Selector: app=kafka,id=0
Type: LoadBalancer
IP: 10.105.148.62
LoadBalancer Ingress: 192.168.1.240
Port: kafka-port 9092/TCP
TargetPort: 9092/TCP
NodePort: kafka-port 30718/TCP
Endpoints: 10.44.0.4:9092
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>

在上面的示例中,我注意到负载平衡器入口设置为 192.168.1.240。现在我们可以开始我们的卡夫卡经纪人

按照以下步骤进行部署。

创建一个名为 kafka-broker.yml 的新文件,并添加以下内容:

---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: kafka-broker0
spec:
  template:
    metadata:
      labels:
        app: kafka
        id: "0"
    spec:
      containers:
      - name: kafka
        image: wurstmeister/kafka
        ports:
        - containerPort: 9092
        env:
        - name: KAFKA_ADVERTISED_PORT
          value: "30718"
        - name: KAFKA_ADVERTISED_HOST_NAME
          value: 192.168.1.240
        - name: KAFKA_ZOOKEEPER_CONNECT
          value: zoo1:2181
        - name: KAFKA_BROKER_ID
          value: "0"
        - name: KAFKA_CREATE_TOPICS
          value: admintome-test:1:1

请注意,KAFKA_ADVERTISED_HOST_NAME 已设置为我们前面提到的 IP 地址。另请注意,我们告诉 Kafka Broker 自动创建具有 1 个分区和 1 个副本的主题管理测试。您可以使用同一方言创建多个主题,并用逗号(即 – )分隔它们。 topic1:1:1,topic2:1:1

保存文件并创建资源。

$ create -f kafka-broker.yml

您可以验证所有内容是否正在运行。

$ kubectl get pod kafka-broker0

要缩放您的 Kafka 经纪商,请创建另一个文件,但给它一个不同的名称(即 kafka-broker1),并更新 ID 以进行匹配。

让我们测试我们的卡夫卡部署

使用卡夫卡猫进行测试

我们将使用一个名为KafkaCat的应用程序来测试我们的卡夫卡部署。

要安装:

$ apt-get install kafkacat

安装应用程序后,我们将在使用者模式(默认值)运行它。

kafkacat -b 192.168.1.240:9092 -t admintome-test

这不应该显示任何东西,因为我们还没有发送任何东西到我们的主题…

要发送内容,我们可以复制任何文本文件到我们当前的目录,并将其发送到我们的卡夫卡主题。在另一个窗口中,运行以下命令。

$ cat README | kafkacat -b 192.168.1.240 -t admintome-test

您应该在第一个窗口中看到输出,该窗口 KafkaCat 仍在使用者模式下运行。

祝贺!您已成功将卡夫卡群集部署到库伯内特斯。

Comments are closed.