在 minikube 上部署 Kafka
Kafka deployment on minikube
嗨,我是 kubernets 的新手,我正在使用 minikube 单节点集群进行本地开发和测试。
Host: Ubuntu 16.04 LTS.
Minikube: Virtual box running minikube cluster
我的要求是我需要在 minikube 上部署 kafka 和 zookeeper,并且应该用于生产或消费消息。
我关注 this link 并成功将其部署在 minikube 上,详情如下
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-service 10.0.0.15 <pending> 9092:30244/TCP 46m
kubernetes 10.0.0.1 <none> 443/TCP 53m
zoo1 10.0.0.43 <none> 2181/TCP,2888/TCP,3888/TCP 50m
zoo2 10.0.0.226 <none> 2181/TCP,2888/TCP,3888/TCP 50m
zoo3 10.0.0.6 <none> 2181/TCP,2888/TCP,3888/TCP 50m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kafka-deployment-3583985961-f2301 1/1 Running 0 48m
zookeeper-deployment-1-1598963595-vgx1l 1/1 Running 0 52m
zookeeper-deployment-2-2038841231-tdsff 1/1 Running 0 52m
zookeeper-deployment-3-2478718867-5vjcj 1/1 Running 0 52m
$ kubectl describe service kafka-service
Name: kafka-service
Namespace: default
Labels: app=kafka
Annotations: <none>
Selector: app=kafka
Type: LoadBalancer
IP: 10.0.0.15
Port: kafka-port 9092/TCP
NodePort: kafka-port 30244/TCP
Endpoints: 172.17.0.7:9092
Session Affinity: None
Events: <none>
并且我已将 KAFKA_ADVERTISED_HOST_NAME 设置为 minikube ip(192.168.99.100)。
现在对于消息生成器,我正在使用 $cat textfile.log | kafkacat -b $(minikube ip):30244 -t mytopic
它不会发布消息
% Auto-selecting Producer mode (use -P or -C to override)
% Delivery failed for message: Local: Message timed out
谁能帮忙发布和消费消息。
您使用了类型为 LoadBalancer 的服务,该服务用于云提供商(您可以看到该服务正在等待外部 IP 地址..挂起状态...这永远不会发生)。在您的情况下,您应该尝试使用 NodePort。
离开 ,您在此处的评论是使用 type=Nodeport
的 Kafka 服务的非常基本的示例代码。
apiVersion: v1
kind: Service
metadata:
name: kafka-service
labels:
name: kafka
spec:
ports:
- port: 9092
name: kafka-port
protocol: TCP
selector:
app: kafka
type: NodePort
我知道这已经很老了 post。您是否能够在 minikube 中解决 运行 kafka + zookeeper?我能够使用 minikube v0.17.1 成功地 运行 一个简单的单集群 kafka 和 zookeeper 部署,并分别使用 kafkacat 生产者和消费者生产和消费消息。我能够在 uBuntu 和 Mac OSX 上成功 运行 这些。部署和服务 yaml 如下:
zookeeper-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: zookeeper
name: zookeeper
spec:
replicas: 1
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- image: wurstmeister/zookeeper
imagePullPolicy: IfNotPresent
name: zookeeper
ports:
- containerPort: 2181
zookeeper-service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: zookeeper-service
name: zookeeper-service
spec:
type: NodePort
ports:
- name: zookeeper-port
port: 2181
nodePort: 30181
targetPort: 2181
selector:
app: zookeeper
kafka-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: kafka
name: kafka
spec:
replicas: 1
template:
metadata:
labels:
app: kafka
spec:
containers:
- env:
- name: KAFKA_ADVERTISED_HOST_NAME
value: "192.168.99.100"
- name: KAFKA_ADVERTISED_PORT
value: "30092"
- name: KAFKA_BROKER_ID
value: "1"
- name: KAFKA_ZOOKEEPER_CONNECT
value: 192.168.99.100:30181
- name: KAFKA_CREATE_TOPICS
value: "test-topic:1:1"
image: wurstmeister/kafka
imagePullPolicy: IfNotPresent
name: kafka
ports:
- containerPort: 9092
kafka-service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: kafka-service
name: kafka-service
spec:
type: NodePort
ports:
- name: kafka-port
port: 9092
nodePort: 30092
targetPort: 9092
selector:
app: kafka
您可以通过安装 kafkacat 客户端和 运行在单独的终端上执行以下命令来测试您的部署 windows:
echo "Am I receiving this message?" | kafkacat -P -b 192.168.99.100:30092 -t test-topic
kafkacat -C -b 192.168.99.100:30092 -t test-topic
% Reached end of topic test-topic [0] at offset 0
Am I receiving this message?
我能够在 minikube 版本 v0.17.1 和 v0.19.0 上成功 运行。如果你想在 minikube 版本 v0.21.1 和 v0.23.0 上 运行 这个,请参考我在这里对 post 的回复:Kafka inaccessible once inside Kubernetes/Minikube
谢谢。
我按照下图进行了关注。
$ git clone https://github.com/d1egoaz/minikube-kafka-cluster
$ cd minikube-kafka-cluster
$ kubectl apply -f 00-namespace/
$ kubectl apply -f 01-zookeeper/
$ kubectl apply -f 02-kafka/
$ kubectl apply -f 03-yahoo-kafka-manager/
$ kubectl get svc -n kafka-ca1 (get the port of kafka manager like 31445)
$ minikube ip
在浏览器中输入http://minikube-ip:port得到kafka manager的ui页面。
来源https://technology.amis.nl/2019/03/24/running-apache-kafka-on-minikube/
嗨,我是 kubernets 的新手,我正在使用 minikube 单节点集群进行本地开发和测试。
Host: Ubuntu 16.04 LTS.
Minikube: Virtual box running minikube cluster
我的要求是我需要在 minikube 上部署 kafka 和 zookeeper,并且应该用于生产或消费消息。 我关注 this link 并成功将其部署在 minikube 上,详情如下
$ kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kafka-service 10.0.0.15 <pending> 9092:30244/TCP 46m
kubernetes 10.0.0.1 <none> 443/TCP 53m
zoo1 10.0.0.43 <none> 2181/TCP,2888/TCP,3888/TCP 50m
zoo2 10.0.0.226 <none> 2181/TCP,2888/TCP,3888/TCP 50m
zoo3 10.0.0.6 <none> 2181/TCP,2888/TCP,3888/TCP 50m
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
kafka-deployment-3583985961-f2301 1/1 Running 0 48m
zookeeper-deployment-1-1598963595-vgx1l 1/1 Running 0 52m
zookeeper-deployment-2-2038841231-tdsff 1/1 Running 0 52m
zookeeper-deployment-3-2478718867-5vjcj 1/1 Running 0 52m
$ kubectl describe service kafka-service
Name: kafka-service
Namespace: default
Labels: app=kafka
Annotations: <none>
Selector: app=kafka
Type: LoadBalancer
IP: 10.0.0.15
Port: kafka-port 9092/TCP
NodePort: kafka-port 30244/TCP
Endpoints: 172.17.0.7:9092
Session Affinity: None
Events: <none>
并且我已将 KAFKA_ADVERTISED_HOST_NAME 设置为 minikube ip(192.168.99.100)。
现在对于消息生成器,我正在使用 $cat textfile.log | kafkacat -b $(minikube ip):30244 -t mytopic
它不会发布消息
% Auto-selecting Producer mode (use -P or -C to override)
% Delivery failed for message: Local: Message timed out
谁能帮忙发布和消费消息。
您使用了类型为 LoadBalancer 的服务,该服务用于云提供商(您可以看到该服务正在等待外部 IP 地址..挂起状态...这永远不会发生)。在您的情况下,您应该尝试使用 NodePort。
离开 type=Nodeport
的 Kafka 服务的非常基本的示例代码。
apiVersion: v1
kind: Service
metadata:
name: kafka-service
labels:
name: kafka
spec:
ports:
- port: 9092
name: kafka-port
protocol: TCP
selector:
app: kafka
type: NodePort
我知道这已经很老了 post。您是否能够在 minikube 中解决 运行 kafka + zookeeper?我能够使用 minikube v0.17.1 成功地 运行 一个简单的单集群 kafka 和 zookeeper 部署,并分别使用 kafkacat 生产者和消费者生产和消费消息。我能够在 uBuntu 和 Mac OSX 上成功 运行 这些。部署和服务 yaml 如下:
zookeeper-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: zookeeper
name: zookeeper
spec:
replicas: 1
template:
metadata:
labels:
app: zookeeper
spec:
containers:
- image: wurstmeister/zookeeper
imagePullPolicy: IfNotPresent
name: zookeeper
ports:
- containerPort: 2181
zookeeper-service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: zookeeper-service
name: zookeeper-service
spec:
type: NodePort
ports:
- name: zookeeper-port
port: 2181
nodePort: 30181
targetPort: 2181
selector:
app: zookeeper
kafka-deployment.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: kafka
name: kafka
spec:
replicas: 1
template:
metadata:
labels:
app: kafka
spec:
containers:
- env:
- name: KAFKA_ADVERTISED_HOST_NAME
value: "192.168.99.100"
- name: KAFKA_ADVERTISED_PORT
value: "30092"
- name: KAFKA_BROKER_ID
value: "1"
- name: KAFKA_ZOOKEEPER_CONNECT
value: 192.168.99.100:30181
- name: KAFKA_CREATE_TOPICS
value: "test-topic:1:1"
image: wurstmeister/kafka
imagePullPolicy: IfNotPresent
name: kafka
ports:
- containerPort: 9092
kafka-service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: kafka-service
name: kafka-service
spec:
type: NodePort
ports:
- name: kafka-port
port: 9092
nodePort: 30092
targetPort: 9092
selector:
app: kafka
您可以通过安装 kafkacat 客户端和 运行在单独的终端上执行以下命令来测试您的部署 windows:
echo "Am I receiving this message?" | kafkacat -P -b 192.168.99.100:30092 -t test-topic
kafkacat -C -b 192.168.99.100:30092 -t test-topic
% Reached end of topic test-topic [0] at offset 0
Am I receiving this message?
我能够在 minikube 版本 v0.17.1 和 v0.19.0 上成功 运行。如果你想在 minikube 版本 v0.21.1 和 v0.23.0 上 运行 这个,请参考我在这里对 post 的回复:Kafka inaccessible once inside Kubernetes/Minikube
谢谢。
我按照下图进行了关注。
$ git clone https://github.com/d1egoaz/minikube-kafka-cluster
$ cd minikube-kafka-cluster
$ kubectl apply -f 00-namespace/
$ kubectl apply -f 01-zookeeper/
$ kubectl apply -f 02-kafka/
$ kubectl apply -f 03-yahoo-kafka-manager/
$ kubectl get svc -n kafka-ca1 (get the port of kafka manager like 31445)
$ minikube ip
在浏览器中输入http://minikube-ip:port得到kafka manager的ui页面。
来源https://technology.amis.nl/2019/03/24/running-apache-kafka-on-minikube/