在Kubernetes上使用Strimzi部署远程调试自定义Kafka连接器



我想远程调试我的自定义连接器,这是我在Kubernetes上部署Strimzi Kafka操作员的一部分。

在本地(例如,使用docker映像(,这可以通过添加JAVA_TOOL_OPTIONS作为具有以下值的环境参数来完成:-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n,并在docker运行命令中暴露5005端口。

然而,在k8s中,我还应该将端口5005添加到部署中,这样我就可以使用nodeport(或其他东西(在集群之外公开部署的调试端口(5005((这样我的IDE就可以连接到它(。

但是,我没有能力更改已创建的KafkaConnect部署的暴露端口(毕竟,您只能应用KafkaConnection自定义资源,并且部署是作为其一部分创建的(。

有没有远程调试此连接器的解决方法?或者斯特里姆齐有什么配置值?

一旦停止strimzi协调,就可以像通常进行远程调试一样进行。

完成后,删除strimzi.io/ause-recommission:"真";从Kafka Connect资源,这将把集群恢复到原始状态

  1. 调整Kafka Connect资源1.1向Kafka Connect资源添加新的环境变量
    -name:JAVA_TOOL_OPTIONS
    值:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
    1.2应用更改并等待部署结束
    1.3添加新的注释
    strimzi.io/ause-recommission:"真">
    1.4应用更改
  2. 更新Kafka Connect部署并添加新端口(与JAVA_TOOL_OPTIONS中的端口匹配(
    • 名称:调试
      容器端口:5005
      协议:TCP
  3. 创建一个NodePort服务,将Kafka Connect的端口5005映射到某个NodePort(比如35005(
  4. 添加远程调试配置3.1主机应该是k8s节点之一
    3.2端口与您在NodePort中定义的端口相同(在我们的示例中为35005(
    3.3应用

现在您可以使用创建的配置进行调试。

最新更新