138. Kubernetes 中的功能区发现
调用微服务的 Spring CloudClient 端应用程序应该对依靠 Client 端负载平衡功能感兴趣,以便自动发现它可以在哪个端点到达给定服务。此机制已在spring-cloud-kubernetes-ribbon项目中实现,其中 KubernetesClient 端将填充包含有关此类端点信息的Ribbon ServerList
。
该实现是以下启动器的一部分,可以通过将其依赖项添加到 pom 文件中来使用该实现:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
<version>${latest.version}</version>
</dependency>
当填充端点列表时,KubernetesClient 端将搜索与使用 Ribbon RibbonComments 定义的服务名称匹配的,位于当前名称空间/项目中的已注册端点:
@RibbonClient(name = "name-service")
您可以通过使用以下格式在application.properties
中(通过应用程序专用的ConfigMap
)提供属性来配置 Ribbon 的行为:<name of your service>.ribbon.<Ribbon configuration key>
其中:
-
<name of your service>
对应于您通过功能区访问的服务名称,该名称是使用@RibbonClient
Comments 配置的(例如,上例中的name-service
) -
<Ribbon configuration key>
是功能区的 CommonClientConfigKey 类定义的功能区配置密钥之一
此外,spring-cloud-kubernetes-ribbon
项目还定义了两个附加配置键,以进一步控制 Ribbon 与 Kubernetes 的交互方式。特别是,如果端点定义了多个端口,则默认行为是使用找到的第一个端口。若要更具体地选择在多端口服务中使用哪个端口,请使用PortName
键。如果您想指定应在哪个 Kubernetes 命名空间中查找目标服务,请使用KubernetesNamespace
键,在这两种情况下都请记住为这些键添加服务名和ribbon
前缀,如上所述。
使用此模块进行功能区发现的示例有:
注意 :可以通过在应用程序属性文件spring.cloud.kubernetes.ribbon.enabled=false
中设置此键来禁用功能区发现 Client 端。