我正在分布式模式下使用 cp-kafka-connect Helm chart 在 Google Kubernetes Engine (GKE) 上部署 Kafka-connect。
一个工作的Kafka集群与代理和动物园管理员已经在同一个GKE集群上运行。我知道我可以通过发送帖子请求到http://localhost:8083/connectors
endpoint来创建连接器,一旦它可用。但是,Kafka连接容器进入运行状态,然后开始加载jar文件,直到所有的jar文件都被加载,上面提到的endpoint是不可达的。
我正在寻找一种方法来自动化手动< code > exec pod的步骤,检查endpoint是否准备好,然后发送post请求。我有一个shell脚本,它有一堆对这个endpoint的< code>curl -X POST请求来创建连接器,并且也有这些连接器的配置文件,它们在独立模式下工作良好(在这个汇合博客中使用汇合平台展示)。
现在只有两种方法来创建连接器:
$
以上哪种方法更好?
第二种方法(配置文件)在分布式模式下是否可行?
如果是:如何做到这一点?
- 如果否:如何成功地完成第一种方法中解释的内容?
编辑:关于他的github问题(感谢下面@cricket_007的回答),我在endpoint准备就绪后创建了容器命令和连接器,因此添加了以下内容:
...
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 请求。
融合本地
不与远程Connect集群交互,例如Kubernetes中的集群。
请参考Kafka Connect REST API
您可以像在集群中运行的任何其他 RESTful API 一样连接到它(例如,通过 Nodeport 或入口/API 网关)
上述endpoint无法访问。
本地主机是您输入命令的物理机器,而不是远程GKE集群
以某种方式确定容器何时真正准备好
Kubernetes健康检查对此负责
kubectl get services
只有两种方法可以创建连接器
那不是真的。您可以在集群中额外运行 Landoop 的 Kafka Connect UI 或 Confluent Control Center 进行指向和单击。
但是如果您有本地配置文件,您也可以编写代码来与API交互
或者试试看能不能为这期做个公关
https://github.com/confluentinc/cp-docker-images/issues/467
这是我的appsettings.json 这是我的应用部署 这是我为Mongob服务 当我想连接到数据库时,这不起作用,抛出一个错误超时,什么是发送连接字符串到应用程序的正确方法。yaml文件?我应该设置aspnetcore环境变量吗?我应该换些什么吗?json配置文件?抱歉缺乏知识
库伯内特斯top(kubectl top)命令显示的内存使用情况与pod中运行Linuxtop命令不同。 我创建了 k8s 部署,其中 YAML 包含以下内存限制: 以下命令的输出如下所示: 运行linux top命令: 注意“free -g”还显示使用了11Gb。 问题是这与“kubectl顶部”相矛盾,后者仅显示使用了1205 mb。
null
我怎样才能使用入口呢?我尝试使用NodePort和--Target etPort=1001,我在servicePort中添加了80在。 kubectl公开部署测试--Target-port=1001--type=NodePort 我得到了错误 找不到后端-404 我使用的是正确的方法还是需要遵循其他方法?
具体来说,当我按照谷歌网站上的指示在GKE上设置nginx ingress时,为什么最终会有两个外部IP地址? 这两个IP地址用于LoadBalancer类型的入口资源和服务资源: 以下是我的想法: 这基本上就是我链接到的教程页面上的图表。因此,我希望负载平衡器是L4类型的,并且有一个外部IP(并且不需要花费任何金钱来使用!)。我希望入口(尽管其名称)没有外部IP,因为我用注释标记了它 谷歌应该承
我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他