amazon-web-services - kubernetes将主机dns名称获取到容器中以进行kafka通告主机

标签 amazon-web-services apache-kafka kubernetes

我想在kubernetes上部署kafka。

因为我将以高带宽从Internet到kafka进行流传输,所以我想使用主机端口并将主机“dnsName:hostPort”通告给zookeeper,以便所有流量都直接流向kafka代理(而不是使用nodeport和loadbalancer流量到达某个随机节点,该节点将其重定向,从而造成不必要的流量)。

我已经在亚马逊上设置了我的kubernetes集群。使用kubectl describe node ${nodeId},我可以获取节点的internalIp,externalIp,内部和外部Dns名称。

我想将externalDns名称传递给kafka代理,以便它可以将其用作播发主机。

如何将这些信息传递到容器?理想情况下,我可以从部署yaml中做到这一点,但我也欢迎其他解决方案。

最佳答案

How can I pass that information to the container? Ideally I could do this from the deployment yaml but I'm also open to other solutions.



我要尝试的第一件事是envFrom: fieldRef:,看看它是否会让您进入PodSpecstatus:字段来获取nodeName。我深深地了解这不是您询问的ExternalDnsName,但是如果fieldRef有效,它的键入可能会少很多,因此是一个不错的折衷。

但是,请牢记“我也愿意接受其他解决方案”:不要忘记-除非另有说明-每个Pod都可以与kubernetes API交互,并且具有正确的RBAC权限,它可以请求您正在寻找的信息。您可以将其作为command:替代,在启动kafka代理之前进行设置工作,也可以在init container中进行设置,将外部地址写入文件系统的共享位(使用volume: emptyDir: {}或类似文件),然后再进行其他操作胶水代码,将值(value)渗入您的kafka经纪人。

我100%确信我前面提到的envFrom: fieldRef:构造可以获取Pod的metadata.namemetadata.namespace,这时Pod可以向kubernetes API索取自己的PodSpec,从上述nodeName字段中提取status:,然后询问用于Node信息的kubernetes API,您将拥有kubernetes知道的有关该Node的所有信息。

关于amazon-web-services - kubernetes将主机dns名称获取到容器中以进行kafka通告主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51404015/

相关文章:

node.js - 无服务器不包括我的 node_modules

python - 使用 boto 在 DynamoDB 中获取多值数据

amazon-web-services - 错误: Unexpected server response: 502 on trying to connect to a lambda function through Amazon API gateway Websocket API

apache-kafka - Kafka Streams 计算不同的值

apache-kafka - 从消费者开始时从主题中获取最新值,然后正常继续

docker - 配置 kubernetes 从注册服务中拉取

go - 如何知道可以从Kubernetes API Server分配哪个节点端口?

mysql - 备份 MySQL 亚马逊 RDS

apache-kafka - Kafka 流 Ksql Json

Groovy 脚本在 jenkins 中应用 kubernetes 云配置