我在分布式模式下使用Kafka-connect Helm图表在Google Kubernetes Engine(GKE)上部署了cp-kafka-connect

带有代理和Zookeeper的可运行的Kafka集群已经在同一GKE集群上运行。我知道我可以通过向http://localhost:8083/connectors端点发送发布请求来创建连接器(一旦可用)。
但是,Kafka-connect容器进入RUNNING状态,然后开始加载jar文件,直到所有jar文件加载完毕,上述端点才无法访问。

我正在寻找一种方法来自动手动对pod进行exec,检查端点是否准备就绪,然后发送发布请求。我有一个shell脚本,该脚本具有到此终结点的一堆curl -X POST请求,以创建连接器,并且还具有这些连接器的配置文件,这些文件在独立模式下可以正常工作(使用confluent blog中的Confluent平台显示)。

现在只有两种创建连接器的方法:

  • 以某种方式确定容器实际准备就绪的时间(当端点开始侦听时),然后运行包含curl请求的shell脚本
  • 或像在独立模式下一样使用配置文件(示例:$ <path/to/CLI>/confluent local load connector_name -- -d /connector-config.json)

  • 以上哪种方法更好?

    第二种方法(配置文件)甚至可以在分布式模式下使用吗?
  • 如果是:怎么做?
  • 如果是否:如何成功完成第一种方法中说明的内容?

  • 编辑:
    关于他的github issue(由于下面的@ cricket_007的回答),我添加了以下内容,作为在端点准备好之后创建的容器命令和连接器:
    ...
    command:
      - /bin/bash
      - -c
      - |
        /etc/confluent/docker/run &
        echo "Waiting for Kafka Connect to start listening on kafka-connect  "
        while : ; do
          curl_status=`curl -s -o /dev/null -w %{http_code} http://localhost:8083/connectors`
          echo -e `date` " Kafka Connect listener HTTP state: " $curl_status " (waiting for 200)"
          if [ $curl_status -eq 200 ] ; then
            break
          fi
          sleep 5
        done
        echo -e "\n--\n+> Creating Kafka Connector(s)"
        /tmp/scripts/create-connectors.sh
        sleep infinity
    ...
    
    /tmp/scripts/create-connectors.sh是一个外部安装的脚本,其中包含使用CURL到Kafka-connect API的一堆POST请求。

    最佳答案

    confluent local不与远程Connect群集交互,例如Kubernetes中的一个群集。

    请参考Kafka Connect REST API

    您将像在集群中运行的任何其他RESTful api一样连接到它(例如,通过Nodeport或Ingress / API网关)



    Localhost是您要在其中键入命令的物理计算机,而不是远程GKE集群



    Kubernetes健康检查对此负责

    kubectl get services
    



    这不是真的。您可以在集群中另外运行Landoop的Kafka Connect UI或Confluent Control Center来指向并单击。

    但是,如果您有本地配置文件,则还可以编写代码以与API进行交互

    或尝试看看您是否可以针对此问题进行公关

    https://github.com/confluentinc/cp-docker-images/issues/467

    关于kubernetes - 如何在Kubernetes上为Kafka-connect创建连接器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60015804/

    10-16 16:58