K8S内微服务之间访问方式

对于部署于K8S中的微服务,一般大家都会思考如何将服务暴露到公网,让外部用户访问,这种场景一般有三种方式:NodePort,ClusterIP + ingress, Loadbalancer。今天我们不讨论这三种外部访问的方法,而是说一说k8s内各个微服务间的访问方式。

在一篇博客中曾经看到,可以在pod中通过环境变量获取到对应service的IP和Port。这个是k8s内部逻辑,在同一个namespace下,如果有service被创建,对于部署在该namespace下的所有Pod都会有对应service的host和port的全局变量生成,这样pod可以访问到该service。但是这样的做法有个弊端,就是如果你只是想在Pod启动的时候取到某个service的host和port,那么Pod的启动必须放在service配置成功之后,这样非常不方便。

经过尝试,其实k8s给每个内部微服务提供了一个内部使用的host,就是servicename.namespace,注意两个单词之间有一个点。也就是说,如果你想访问部署在A namespace下的B service 的暴露端口C Port,你就可以在代码中直接访问http://B.A:C。如果是部署到默认namespace下的服务,A为“default”。

希望这个技巧可以帮到大家,大家如果觉得有用,记得点赞和关注哦~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

友情链接更多精彩内容