关联 K8s 集群

最近更新时间:2025-05-16 14:47:32

我的收藏

操作场景

北极星提供将 K8s 集群关联到 Polaris 的能力,Polaris Controller 可以同步您 Kubernetes 集群上的 Namespace,Service,Endpoints 等资源到 Polaris 中,从而实现 K8s Service 自动注册到 Polaris ,使用 Polaris API 和多语言 SDK 可以访问,使用 gRPC 和 Spring Cloud 等开源框架也可以访问。主要适用于以下场景:
异构系统与多技术栈场景下,SpringCloud 等框架服务调用 K8s 集群服务。
跨集群场景下的服务调用。
本文介绍通过 TSF 控制台使用 K8s 集群的能力。

操作步骤

创建引擎

1. 登录 TSF 控制台,在左侧菜单栏中选择 Polaris(北极星)
2. 在引擎实例列表页面,单击目标引擎的“ID”,进入基本信息页面。
3. 在顶部页签单击 K8s 集群,单击关联集群
说明:
1. 添加容器集群会安装 Polaris-Controller 组件,请确保您的集群至少有 1C2G 的空闲资源,否则会添加失败。
2. 容器集群中安装 Polaris-Controller 组件后默认支持 K8s Service 服务同步(按需同步)和 Java Agent 自动注入能力。您也可以在控制台选择全量同步使用 k8s 全量同步方式。
集群选择:可以根据自身业务需求选择目标关联的 K8s 集群,支持 TKE (容器集群) / EKS (弹性容器集群)。
K8s Service 同步:也可以根据业务的特点选择服务的同步方式,支持全量同步(集群内全部 service 自动同步至北极星)/按需同步(仅指定的namespace 或者 service 自动同步至北极星)。
Java Agent 接入:容器集群中安装 Polaris-Controller 组件后默认支持 Java Agent 自动注入能力。


原理说明

在 TSF 控制台关联 tke/eks 集群后,会自动在您对应的 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: v1
kind: Service
metadata:
name: details
annotations:
polarismesh.cn/sync: true
... ...
按需同步命名空间下所有的服务:为命名空间打上标签,polaris-controller 会将该命名空间下所创建的所有服务同步到 polarismesh。
apiVersion: v1
kind: Namespace
metadata:
name: default
annotations:
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: v1
kind: Service
metadata:
namespace: development
name: productpage
annotations:
polarismesh.cn/aliasService: Productpage
polarismesh.cn/aliasNamespace: Development
... ...

如何确认polaris-controller版本

点击集群ID,跳转到容器控制台页面,查看polaris-system命名空间下polaris-controller这个statefulset的镜像版本。