同一Kubernetes集群内两个API相互调用应使用什么地址?ClusterIP是否可用?
集群内服务调用最优方案
同一个Kubernetes集群内部的Pod互相访问服务,优先使用服务名+端口的形式,依托集群内置的CoreDNS做服务发现,稳定性最高:
- 若从
dh-service对应的Pod调用api-service的接口,POST地址格式为:http://api-service:15012/{你的实际接口路径} - 若从
api-service对应的Pod调用dh-service的接口,POST地址格式为:http://dh-service:15012/{你的实际接口路径}
注意:如果两个服务部署在不同的命名空间下,需要在服务名后补充目标服务所在的命名空间,格式为
http://<服务名>.<目标命名空间>:15012/{接口路径}。
ClusterIP可用性说明
直接使用ClusterIP也可以正常完成调用,但非常不推荐:
ClusterIP是服务创建时动态分配的虚拟IP,一旦服务被删除重建,ClusterIP会自动重新分配,硬编码ClusterIP的调用地址会直接失效,后续维护成本远高于使用固定的服务名。
Ingress返回404的原因
Ingress是专门用于将集群内服务暴露给集群外部访问的组件,走Ingress调用需要严格匹配你预先配置的Ingress规则中的域名、路径前缀、转发逻辑等配置,且集群内部走Ingress访问还会额外绕路,完全没有必要。
内容的提问来源于stack exchange,提问作者Mr.Gomer
相关产品推荐
相关产品推荐

