Spring Cloud提供了专门的spring-cloud-kubernetes项目与k8s集成,尽管k8s提供了服务注册和发现等功能与Spring cloud是竞争的,甚至k8s加装服务网格Istio以后超过Spring cloud,但是在Spring cloud提供与代码编程无缝结合的强大灵活方式也许更具有竞争力。这个集成项目主要有以下功能:
1. K8s的发现客户端
为Kubernetes提供Discovery Client的实现。这让你按名称查询Kubernetes端点。Spring Boot运作K8s的pod中,其提供的微服务通常是由Kubernetes API暴露的端点列表,使用此发现功能能获取到K8s负载平衡后的端点列表
Spring boot提供application.properties|yaml配置,k8s根据这个配置运行环境,通过“KubernetesClient自动配置”功能能修改Spring boot的这些yaml配置
2. PropertySource
k8s是提供ConfigMap来加入外部的参数,使用本项目,使Kubernetes ConfigMap在Spring boot应用程序启动时就可用,当观察到Spring上下文任何变化,都会引起ConfigMap刷新重装。
另外该项目还提供了在k8s中调用Ribbon负载平衡功能来获得服务实例的方式。