【发布时间】:2020-05-05 03:45:09
【问题描述】:
为了解决我的 EKS 集群中的默认 AWS VPC CNI 最大 Pod 数量节点限制(Max Pods = 实例类型支持的最大网络接口数)*(每个接口的 IPv4 地址)- 即 t3.medium 中的 17 个)我开始使用编织 CNI 插件来克服这个限制。
这带来了一个警告,如果您有一个应用程序或容器在覆盖网络中运行,并且 Kubernetes 主节点/API 需要与之通信,它将无法工作。例如,ApiService v1beta1.metrics.k8s.io 尝试连接到覆盖网络中运行的 metrics-server pod,但不会成功。
一个建议的解决方案是运行metrics-server 和hostNetwork: true,它工作得很好。
当我们决定使用 custom-metrics 和 prometheus-adapter 时,我的问题就开始了,这样我们就可以从 Kafka 消费者组滞后指标中获得消费者 pod 的水平自动缩放。
要让 ApiService v1beta1.custom.metrics.k8s.io 与 prometheus-adapter pod 交谈,我们还必须设置 hostNetwork: true 但这一次 prometheus-adapter 无法再访问在覆盖网络中运行的 Prometheus - 我们无法将所有内容移动到主机网络!
我在这里有点死胡同。我想我可以使用一些“工具”将我需要的指标从覆盖网络 Prometheus 转发到主机网络中的另一个 Prometheus,然后由 prometheus-adapter 使用?
【问题讨论】:
-
您是否尝试将 DNSPolicy 更改为
ClusterFirstWithHostNet?这样它就可以在覆盖网络中并且可以连接到主机网络。 -
您的意思是在 prometheus-adapter(在主机网络上运行)或 prometheus 它自身(在覆盖上运行)上将 DNSPolicy 更改为 ClusterFirstWithHostNet?
-
ClusterFirstWithHostNet应该在 hostNetwork=true 等 prometheus-adapter 时应用 -
非常感谢,但我想这并不能解决我的问题,因为我需要从主机网络 (prometheus-adapter) 访问覆盖网络 (prometheus) 中的 pod。
-
有没有办法从主机网络中的另一个 pod 访问覆盖网络中的 pod?
标签: kubernetes prometheus amazon-eks cni