我开发了两个网络应用程序(我们称之为A和B)并将它们部署到k8s。 Web应用程序A是指由Web应用程序B生成的图像。在以前的环境中,B具有固定的IP和端口,这使得更容易到达B上托管的图像。
在K8S环境中,我使用服务类型 - NodePort。在这种情况下,每次部署时都会随机生成端口。
问题是是否有办法从A Pod以编程方式获取B服务的节点端口。或者是否可以修复一个服务的节点端口?
答案 0 :(得分:2)
您的问题有三个答案:
首先,不应仅仅因为重新部署 return result.replaceAll(" ", " ").replaceAll("\n", "<br/>");
s而摧毁Service
。 Pod
旨在成为长期合同,对服务Service
的位置(或计数)进行抽象
第二,如果您希望让网络应用A使用已知的Pod
,则可以在NodePort
的{{3}}字段中添加值在ports:
内映射,假设尚未分配,kubernetes将遵循您的判断
第三个答案是,在群集中运行的每个Service
都会自动获得一个API令牌,用于与kubernetes API进行通信(它位于Pod
或类似),因此您可以从在Pods中为您提供服务的nodePort