如何在 Kubernetes 中以编程方式获取服务的 NodePort?



我开发了两个Web应用程序(我们称之为A和B(并将它们部署到k8s。Web 应用 A 是指 Web 应用 B 生成的图像。在以前的环境中,B 具有固定的 IP 和端口,这使得访问 B 上托管的图像非常容易。

在 K8S 环境中,我使用服务类型 - NodePort。在这种情况下,每次部署时都会随机生成端口。

问题是是否有办法以编程方式从 A Pod 获取 B 服务的节点端口。或者是否可以修复一个服务的节点端口?

您的问题有三个答案:

首先,人们不应该仅仅因为Pod背后的被重新部署而摧毁ServiceService旨在成为长期协定,用于抽象服务Pod的位置(或计数(

第二个是,如果你确实希望 web-app A 使用一个已知的NodePort,你可以在Service内部的 nodePort: 字段中放置一个值ports:映射,假设它还没有被分配,kubernetes 会听从你的判断

。第三个答案是,集群内运行的每个Pod都会自动获得一个 API 令牌,用于与 kubernetes API 进行通信(它存在于/run/secrets/kubernetes.io或类似版本中(,因此您可以从 Pod 中请求 API 为您提供服务的 nodePort 的当前值。

最新更新