Kubernetes Can';不能在孵化器掌舵图中更改卡夫卡经纪人id?

Kubernetes Can';不能在孵化器掌舵图中更改卡夫卡经纪人id?,kubernetes,apache-kafka,google-kubernetes-engine,apache-zookeeper,kubernetes-helm,Kubernetes,Apache Kafka,Google Kubernetes Engine,Apache Zookeeper,Kubernetes Helm,我有一个Zookeeper服务器(比如说xx.xx.xx.xxx:2181)分别运行在一个GCP计算实例VM上 我有3个GKE集群,它们都位于不同的区域,我正在尝试安装Kafka代理节点,以便所有节点都连接到一个Zookeeper服务器(xx.xx.xx.xxx:2181) 我在VM上安装了Zookeeper服务器,Zookeeper属性如下所示: dataDir=/tmp/data

我有一个Zookeeper服务器(比如说
xx.xx.xx.xxx:2181
)分别运行在一个GCP计算实例VM上

我有3个GKE集群,它们都位于不同的区域,我正在尝试安装Kafka代理节点,以便所有节点都连接到一个Zookeeper服务器(
xx.xx.xx.xxx:2181

我在VM上安装了Zookeeper服务器,Zookeeper属性如下所示:

dataDir=/tmp/data                                                                                                                                                                                                                                                                                                                                                                                                 
clientPort=2181
maxClientCnxns=0
initLimit=5
syncLimit=2
tickTime=2000

# list of servers
server.1=0.0.0.0:2888:3888
...
[2019-10-30 14:32:30,930] INFO Accepted socket connection from /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2019-10-30 14:32:30,936] INFO Client attempting to establish new session at /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:30,938] INFO Established session 0x100009621af0057 with negotiated timeout 6000 for client /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:32,335] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0xc zxid:0x422 txntype:-1 reqpath:n/a Error Path:/config/users Error:KeeperErrorCode = NodeExists for /config/users (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:34,472] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0x14 zxid:0x424 txntype:-1 reqpath:n/a Error Path:/brokers/ids/0 Error:KeeperErrorCode = NodeExists for /brokers/ids/0 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,126] INFO Processed session termination for sessionid: 0x100009621af0057 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,127] INFO Closed socket connection for client /xx.xx.xx.xxx:54978 which had sessionid 0x100009621af0057 (org.apache.zookeeper.server.NIOServerCnxn)
[2019-10-30 14:36:49,123] INFO Expiring session 0x100009621af003b, timeout of 6000ms exceeded (org.apache.zookeeper.server.ZooKeeperServer)
...
...
[2019-10-30 19:56:24,614] INFO [SocketServer brokerId=0] Shutdown completed (kafka.network.SocketServer)
...
[2019-10-30 19:56:24,627] INFO [KafkaServer id=0] shutting down (kafka.server.KafkaServer)
...
我使用它在GKE集群上部署代理

根据,我正在尝试使用以下命令安装:

helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator

helm install --name my-kafka \
  --set replicas=1,zookeeper.enabled=false,configurationOverrides."broker\.id"=1,configurationOverrides."zookeeper\.connect"="xx.xx.xx.xxx:2181" \
  incubator/kafka
错误 当我在所有三个GKE集群上使用上述任何一种方式进行部署时,只有一个代理连接到Zookeeper服务器,而另外两个POD只是无限地重新启动

当我检查Zookeeper日志(在VM上)时,它看起来如下所示:

dataDir=/tmp/data                                                                                                                                                                                                                                                                                                                                                                                                 
clientPort=2181
maxClientCnxns=0
initLimit=5
syncLimit=2
tickTime=2000

# list of servers
server.1=0.0.0.0:2888:3888
...
[2019-10-30 14:32:30,930] INFO Accepted socket connection from /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2019-10-30 14:32:30,936] INFO Client attempting to establish new session at /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:30,938] INFO Established session 0x100009621af0057 with negotiated timeout 6000 for client /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:32,335] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0xc zxid:0x422 txntype:-1 reqpath:n/a Error Path:/config/users Error:KeeperErrorCode = NodeExists for /config/users (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:34,472] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0x14 zxid:0x424 txntype:-1 reqpath:n/a Error Path:/brokers/ids/0 Error:KeeperErrorCode = NodeExists for /brokers/ids/0 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,126] INFO Processed session termination for sessionid: 0x100009621af0057 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,127] INFO Closed socket connection for client /xx.xx.xx.xxx:54978 which had sessionid 0x100009621af0057 (org.apache.zookeeper.server.NIOServerCnxn)
[2019-10-30 14:36:49,123] INFO Expiring session 0x100009621af003b, timeout of 6000ms exceeded (org.apache.zookeeper.server.ZooKeeperServer)
...
...
[2019-10-30 19:56:24,614] INFO [SocketServer brokerId=0] Shutdown completed (kafka.network.SocketServer)
...
[2019-10-30 19:56:24,627] INFO [KafkaServer id=0] shutting down (kafka.server.KafkaServer)
...
我确信我已经创建了防火墙规则来打开必要的端口,这不是问题,因为其中一个代理节点能够连接(最先到达的节点)

在我看来,这似乎是因为某种原因,
borkerID
没有被改变,这就是Zookeeper拒绝连接的原因。 我这样说是因为
kubectl记录pod/my-kafka-n
输出如下:

dataDir=/tmp/data                                                                                                                                                                                                                                                                                                                                                                                                 
clientPort=2181
maxClientCnxns=0
initLimit=5
syncLimit=2
tickTime=2000

# list of servers
server.1=0.0.0.0:2888:3888
...
[2019-10-30 14:32:30,930] INFO Accepted socket connection from /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2019-10-30 14:32:30,936] INFO Client attempting to establish new session at /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:30,938] INFO Established session 0x100009621af0057 with negotiated timeout 6000 for client /xx.xx.xx.xxx:54978 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-10-30 14:32:32,335] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0xc zxid:0x422 txntype:-1 reqpath:n/a Error Path:/config/users Error:KeeperErrorCode = NodeExists for /config/users (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:34,472] INFO Got user-level KeeperException when processing sessionid:0x100009621af0057 type:create cxid:0x14 zxid:0x424 txntype:-1 reqpath:n/a Error Path:/brokers/ids/0 Error:KeeperErrorCode = NodeExists for /brokers/ids/0 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,126] INFO Processed session termination for sessionid: 0x100009621af0057 (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-10-30 14:32:35,127] INFO Closed socket connection for client /xx.xx.xx.xxx:54978 which had sessionid 0x100009621af0057 (org.apache.zookeeper.server.NIOServerCnxn)
[2019-10-30 14:36:49,123] INFO Expiring session 0x100009621af003b, timeout of 6000ms exceeded (org.apache.zookeeper.server.ZooKeeperServer)
...
...
[2019-10-30 19:56:24,614] INFO [SocketServer brokerId=0] Shutdown completed (kafka.network.SocketServer)
...
[2019-10-30 19:56:24,627] INFO [KafkaServer id=0] shutting down (kafka.server.KafkaServer)
...
正如我们在上面看到的,对于所有3个集群中的所有pod,都说
brokerId=0

但是,当我执行
kubectl exec-ti pod/my-kafka-n--env|grep BROKER
时,我可以看到环境变量
kafka_BROKER\u ID
在我设置的不同代理中被更改为
1
2
3

我做错了什么?更改kafka代理id或使所有代理连接到一个Zookeeper实例的正确方法是什么

是否让所有代理连接到一个Zookeeper实例


通过
configurationOverrides
选项,您似乎可以这样做。这将使用相同的配置部署所有吊舱

也就是说,每个pod的代理ID不应该相同。如果您检查statefulset YAML,似乎


旁注

3个GKE集群,所有集群都位于不同的区域,我正试图在这些区域上安装Kafka broker节点,以便所有节点都连接到一个Zookeeper服务器

我不清楚如何在一个API调用中部署到3个独立的集群。但是,卡夫卡、动物园管理员或库伯内特斯社区不推荐这种架构,除非这些地区“地理位置接近”

是否让所有代理连接到一个Zookeeper实例


通过
configurationOverrides
选项,您似乎可以这样做。这将使用相同的配置部署所有吊舱

也就是说,每个pod的代理ID不应该相同。如果您检查statefulset YAML,似乎


旁注

3个GKE集群,所有集群都位于不同的区域,我正试图在这些区域上安装Kafka broker节点,以便所有节点都连接到一个Zookeeper服务器


我不清楚如何在一个API调用中部署到3个独立的集群。但是,Kafka、Zookeeper或Kubernetes社区不推荐这种架构,除非这些区域“地理位置接近”

您在说明或图表变量中看到代理ID是可覆盖的吗?即使您尝试设置它,也会尝试为每个代理设置相同的值。此外,单个Kubernetes或Kafka集群应延伸区域。。。您是指可用性区域吗?
configurationOverrides
变量的默认值为
{“confluent.support.metricsenable”:false}
,正如我们在可配置参数中看到的,该变量的描述类似于字典格式中的卡夫卡覆盖。单击“配置设置”将我们带到kafka broker配置页面,该页面既有
zookeepeer.connect
又有
broker.id
。需要拉伸区域。分区会非常简单,我知道这是使用多分区GKE集群的问题。关于更改代理ID,在我的假设中最重要的事情是,当我们将pod副本增加到2个或更多时,所有代理都连接到一个zookeeper。所以这意味着brokerid正在改变,对吗?我的回答是否正确?1)在文档中,
如果未设置,将生成唯一的代理id
2),您不应该在外部设置,否则。3) 我没有在k8s上使用卡夫卡的经验,但我会首先考虑使用Strimzi,而不是孵化器图表。您在说明或图表变量中看到代理ID是可重写的吗?即使您尝试设置它,也会尝试为每个代理设置相同的值。此外,单个Kubernetes或Kafka集群应延伸区域。。。您是指可用性区域吗?
configurationOverrides
变量的默认值为
{“confluent.support.metricsenable”:false}
,正如我们在可配置参数中看到的,该变量的描述类似于字典格式中的卡夫卡覆盖。单击“配置设置”将我们带到kafka broker配置页面,该页面既有
zookeepeer.connect
又有
broker.id
。需要拉伸区域。分区会非常简单,我知道这是使用多分区GKE集群的问题。关于更改代理ID,在我的假设中最重要的事情是,当我们将pod副本增加到2个或更多时,所有代理都连接到一个zookeeper。所以这意味着brokerid正在改变,对吗?我的回答是否正确?1)在文档中,
如果未设置,将生成唯一的代理id
2),您不应该在外部设置,否则。3) 我没有在k8s上使用卡夫卡的经验,但我会首先考虑使用Strimzi而不是孵化器图表