腾讯云微服务引擎 TSE 北极星网格 注册中心 - 关联 K8s 集群
文档简介:
操作场景:
微服务引擎 TSE 提供将 K8s 集群关联到 Polarismesh 的能力,Polaris Controller 可以同步您 Kubernetes 集群上的 Namespace,Service,Endpoints 等资源到 Polaris 中,从而实现 K8s Service 自动注册到 Polarismesh ,使用 Polarismesh API 和多语言 SDK 可以访问,使用 gRPC 和 Spring Cloud 等开源框架也可以访问。
操作场景
微服务引擎 TSE 提供将 K8s 集群关联到 Polarismesh 的能力,Polaris Controller 可以同步您 Kubernetes 集群上的 Namespace,Service,Endpoints 等资源到 Polaris 中,从而实现 K8s Service 自动注册到 Polarismesh ,使用 Polarismesh API 和多语言 SDK 可以访问,使用 gRPC 和 Spring Cloud 等开源框架也可以访问。主要适用于以下场景:
异构系统与多技术栈场景下,SpringCloud 等框架服务调用 K8s 集群服务。
跨集群场景下的服务调用。
本文介绍通过 TSE 控制台使用 K8s 集群的能力。
操作步骤
创建引擎
1. 登录 TSE 控制台。
2. 在服务治理中心下的 实例列表 页面,单击目标引擎的“ID”,进入基本信息页面。
3. 在顶部页签单击 K8s 集群,单击关联集群。
3.1 可以根据自身业务需求选择目标关联的 K8s 集群,支持 TKE (容器集群) / EKS (弹性容器集群)。
3.2 也可以根据业务的特点选择服务的同步方式,支持全量同步(同步k8s集群中所定义的全部服务)/按需同步(只同步打了polarismesh.cn/sync标签的命名空间或服务)。


原理说明
在 TSE 控制台关联 tke/eks 集群后, TSE 会自动在您对应的 tke/eks 集群中部署 polaris-controller 。具体请参见 **资源清单**。
polaris-controller 默认会同步 K8s 集群所有的 namespace,service 和 endpoints 。具体请参见 **polaris-controller 同步行为**。
您可以在 K8s 的 service 指定注解,操作 polaris-controller 同步的行为。具体指引和示例请参见 **polaris-controller 支持的注解**。
资源清单
在您的 tke/eks 集群创建的 K8s 资源清单如下:
资源类型
|
资源名
|
资源用途
|
namespace
|
polaris-system
|
polaris-controller 和其相关配置都在这个命名空间下
|
deployment
|
polaris-controller
|
提供同步服务的工作负载
|
configmap
|
injector-mesh, polaris-sidecar-injector
|
polaris-controller 使用的配置文件
|
serviceAccount
|
polaris-controller
|
提供访问 K8s 资源需要的权限
|
clusterRole
|
polaris-controller
|
提供访问 K8s 资源需要的权限
|
clusterRoleBinding
|
polaris-controller
|
提供访问 K8s 资源需要的权限
|
mutatingWebhookConfiguration
|
polaris-sidecar-injector
|
提供自动注入能力
|
可以使用下面图片中的命令查看到上述的资源。

polaris-controller 同步行为
polaris-controller 默认会同步 K8s 集群所有的 namespace,service 和 endpoints 的行为。
资源类型
|
资源行为
|
namespace
|
创建 namespace 时,会在 polarismesh 创建一个同名的命名空间。
删除 namespace 时,不会移除 polarismesh 的同名命名空间。
|
service
|
创建 service 时,不论创建的 service 的类型,都会在 polarismesh 对应的命名空间下创建一个同名的服务。
删除 service 时,不会移除 polarismesh 对应命名空间下的服务,会移除 polarismesh 中对应服务的实例(只移除本 K8s 集群同步到 polarismesh 对应服务下的实例)。
|
endpoints
|
某个 service 的 endpoints 创建时,会把 endpoints 列表中 IP 和 port 每个组合,作为 polarismesh 对应服务下的一个服务实例,同步到 polarismesh 。如果 IP 在 endpoints 的就绪地址列表中,则 polarismesh 服务实例状态为健康,如在未就绪地址列表中,则 polarismesh 状态为不健康。
某个 service 的 endpoints 地址列表变化时,会动态的同步到 polarismesh 。地址列表增加,则在 polarismesh 服务下注册新实例;地址列表减少,则反注册 polarismesh 服务下对应的实例。
某个 service 的 endpoints 被移除时,本 K8s 集群同步到 polarismesh 对应服务下的实例都会从 polarismesh 的服务中移除。
|
polaris-controller 支持的注解
您可以在 k8s 的 service 指定注解,操作 polaris-controller 同步的行为,当前支持以下注解。
注解名称
|
注解说明
|
polarismesh.cn/sync
|
是否同步这个服务到 polarismesh。true 同步,false 不同步,默认不同步
|
polarismesh.cn/aliasService
|
把 k8s service 同步到 polarismesh 时,同时创建的服务别名的名字
|
polarismesh.cn/aliasNamespace
|
创建的别名所在的命名空间,配合 polarismesh.cn/aliasService 使用
|
如何按需同步
polaris-controller 默认会同步 K8s 集群所有的 service。某些场景下,您可能只想同步部分 service 到 polarismesh,这时可以将同步方式选择为(按需同步),同时使用 polarismesh.cn/sync 注解来指定需要同步的服务。
按需同步单个服务:下面的 service 创建时,polaris-controller 会将该服务同步到 polarismesh。
apiVersion: v1kind: Servicemetadata:name: detailsannotations:polarismesh.cn/sync: true... ...
按需同步命名空间下所有的服务:为命名空间打上标签,polaris-controller 会将该命名空间下所创建的所有服务同步到 polarismesh。
apiVersion: v1kind: Namespacemetadata:name: defaultannotations:polarismesh.cn/sync: "true"... ...
创建别名示例
polaris-controller 默认会以 service 名字,创建一个对应的 polarismesh 服务。可能有以下情况,需要创建服务别名:
您不想用 service 名作为 polarismesh 服务的名字。例如您希望 polarismesh 的服务名是大写,但是 K8s 的 service 名限制只能小写。这时可以使用别名注解指定一个大写的 polarismesh 服务名。
您希望将某个 namespace 下的某个 service 暴露到另外命名空间中。这时可以使用别名注解指定另一个命名空间。
下面示例的 service 创建时,polaris-controller 会在 polarismesh 的 development 命名空间下创建一个名为 productpage 的服务。同时也会在 Development 命名空间下创建一个名为 Productpage 的服务别名。
apiVersion: v1kind: Servicemetadata:namespace: developmentname: productpageannotations:polarismesh.cn/aliasService: Productpagepolarismesh.cn/aliasNamespace: Development... ...