在这个终极指南中,我将为您提供一个简单的分步教程,关于在库伯内特斯安装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 仍在使用者模式下运行。
祝贺!您已成功将卡夫卡群集部署到库伯内特斯。