我正在努力生产卡夫卡经纪人,它正在库伯奈特推出的集装箱内运行。我在和KAFKA_ADVERTISED_LISTENERES和KAFKA_LISTERNERS一起玩。
我尝试设置这两个env变量KAFKA_ADVERTISED_LISTENERES = PLAINTEXT://<host-ip>:9092和KAFKA_LISTERNERS = PLAINTEXT://0.0.0.0:9092,并使用docker运行。我可以从主机外的一个应用程序中产生。
但是在Kubernetes.yml文件中设置这两个env变量,我会得到No broker list available异常。
我在这里错过了什么?
更新:
kafka-pod.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
namespace: casb-deployment
name: kafkaservice
spec:
replicas: 1
template:
metadata:
labels:
app: kafkaservice
spec:
hostname: kafkaservice
#hostNetwork: true # to access docker out side of host container
containers:
- name: kafkaservice
imagePullPolicy: IfNotPresent
image: wurstmeister/kafka:1.1.0
env: # for production
- name: KAFKA_ADVERTISED_LISTENERES
value: "PLAINTEXT://<host-ip>:9092"
- name: KAFKA_LISTERNERS
value: "PLAINTEXT://0.0.0.0:9092"
- name: KAFKA_CREATE_TOPICS
value: "Topic1:1:1,Topic2:1:1"
- name: KAFKA_MESSAGE_TIMESTAMP_TYPE
value: "LogAppendTime"
- name: KAFKA_LOG_MESSAGE_TIMESTAMP_TYPE
value: "LogAppendTime"
- name: KAFKA_ZOOKEEPER_CONNECT
value: "zookeeper:2181"
ports:
- name: port9092
containerPort: 9092
---
apiVersion: v1
kind: Service
metadata:
namespace: casb-deployment
name: kafkaservice
labels:
app: kafkaservice
spec:
selector:
app: kafkaservice
ports:
- name: port9092
port: 9092
targetPort: 9092
protocol: TCP发布于 2018-07-02 20:04:45
我假设您有一个Kubernetes服务,它的选择器将入口流链接到您的Kafka代理,即公开nodePort (而不是clusterIP)。https://kubernetes.io/docs/concepts/services-networking/service/
因此,库伯奈特舱应该可以通过localhost:<nodePort>到达。
您还可以在Kubernetes集群前面设置一个负载均衡器,然后您只需公开k8s荚,即允许外部入口。
然后,下一步就是利用一些DNS记录,这样基于坞组合的容器产生的出站请求将转到DNS,然后通过负载均衡器返回到Kubernetes集群。
https://stackoverflow.com/questions/51136526
复制相似问题