微服务平台 TSF K8S 原生部署

TSF 支持 K8S 原生部署方案,当你通过 K8S 部署业务后,使用该功能,可以以实现仅通过页面简单配置或 K8S YAML 的少量修改,将你的应用快速接入 TSF,保留原有 K8S 部署发布全流程,并且可以以使用 TSF 的服务注册发现、服务治理、可观测性等一系列能力。

相关产品
微服务平台 TSF 产品页,含版本规格、价格与购买入口。

一、操作场景

注意:说明:

注意:1. 使用此功能需要保证 K8S 版本不低于 1.16。

注意:2. 当前能力仅支持注册配置治理中心为 TSF Consul 的情景。

二、步骤1:在容器服务控制台创建集群

参见 创建集群 和 Deployment 管理 在容器服务控制台创建集群和 Deployment 并正常运行。

三、步骤2:导入容器服务集群到 TSF

1. 登录 腾讯微服务平台控制台。

2. 在左侧导航栏中,选择资源管理,选择容器集群,进入集群列表 。

3. 在集群列表页的左上方,单击导入容器集群。

4. 设置集群的基本信息。

·导入类型:单击选择已有集群。

·所在可用区:选择容器服务集群所在的可用区。

·选择集群:选择要导入的容器集群服务。

·标签:用于分类管理资源,可不选。详情参见 标签。

·备注:集群的描述,不超过200个字符。

·数据集:将新建的集群 添加到已有数据集中。非必填字段。数据集使用,请参见 数据集管理。

5. 单击提交,在弹窗中选择导入云主机前往导入云主机页面。

6. 从集群所在 VPC 的云主机列表中,选择需要添加到集群的云主机。

7. 选择导入方式,并根据页面提示完成操作。

·重装系统:该方式会使用 root 用户安装 agent。

·安装 Agent(仅适用于虚拟机集群): 该方式支持使用 root 用户和非 root 用户安装 agent。

四、步骤3:应用改造

参见开发指南对你的应用进行改造:

·应用使用 TSF SDK接入

·原生 Spring Cloud 应用

·Service Mesh 应用接入

五、步骤4:部署服务到 TSF

你可以在腾讯微服务平台控制台上导入 Deployment 到 TSF 来完成部署相关操作,也可以通过 K8S YAML 部署 TSF 服务。

自动安装组件通过 YAML 配置手动安装

注意:说明:

注意:单击开启后,我们将对你的集群进行组件安装,期间不影响集群正常运行,安装组件最少需要64MB内存 和0.1核 CPU。

注意:当你单击导入 TSF 时,我们将为你重启 Deployment,请选择业务低谷期进行操作。

1. 进入 腾讯微服务平台控制台,选择资源管理 > 容器集群,在集群列表页面,单击集群的“ID”,进入集群详情页面。

2. 选择 K8S 原生部署页签,单击方式一中的自动安装。

3. 在 Deployment 列表页面,选择好K8s命名空间,单击你要导入的 Deployment 操作列的导入 TSF。

4. 在弹窗中填写导入的应用信息。

·导入后应用名称:填写导入后的应用名称,不超过60字符。

·开发语言:选择开发语言。

·开发框架:选择对应的开发框架。

·注册配置治理:默认开启。

·实例类别:选择独享实例或共享实例。

·接入方式:如实例类型为共享实例,选择接入注册配置中心的方式,支持SDK/框架接入、Mesh接入和无侵入接入。

·TSF Agent(采集器):我们将为你在容器集(Pod)中安装 TSF Agent 以使用平台提供的服务治理、配置管理、可观测性等能⼒。将在你⼯作负载重启后⽣效。

·Agent 占用资源:

·request 用于预分配资源,当集群中的节点没有 request 所要求的资源数量时,会导致无法创建容器。

·limit 用于设置容器使用资源的最大上限,避免异常情况下节点资源消耗过多。

5. 单击确定,等待导入完成。

注意:说明:

注意:导入完成后,会自动给用户创建好应用和部署组,重启应用后应用会注册到对应的注册中心。

注意:通过 K8S 原生部署导入 Deployment 后, 不支持在 TSF 自动创建的部署组页面进行增删改操作,建议继续在TKE 页面进行操作。

注意:对于在 TKE 页面创建的命名空间,开启 K8S 原生部署后,也不支持在该命名空间下新建部署组。

注意:通过原生部署创建的部署组,所关联 K8S Deployment 被删除后,会同步删除 TSF 部署组,但会保留创建的应用与命名空间。

接下来将演示如何通过 K8S YAML 来部署 TSF 服务,例如 kubectl。1. 在集群列表页面,单击集群的“ID”,进入云主机列表页面。2. 在页面上方选择 K8S 原生部署页签,单击方式二中的生成配置。3. 给需要部署 TSF 应用的命名空间加上 label tsf.tencentcloud.com/inject。 # ns.yaml apiVersion: v1 kind: Namespace metadata: labels: # new tsf.tencentcloud.com/inject: allowlist name: defaultallowlist 指白名单,默认不开启,只有在 Deployment 上加上相应 label 才会开启。提交 YAML 到 K8S(后续 yaml 的 kubectl 提交过程将省略)。 $ kubectl apply -f ns.yaml4. 创建一个简单的非 TSF Deployment。 apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: test-light-provider name: test-light-provider namespace: default spec: replicas: 1 selector: matchLabels: k8s-app: test-light-provider template: metadata: labels: k8s-app: test-light-provider spec: containers: – name: app # TODO: 修改为真实的 TSF 应用的镜像 image: ccr.ccs.tencentyun.com/xxx imagePullSecrets: – name: qcloudregistrykey此时并不会有相应的部署组和应用创建出来,Deployment 和 Pod 也没有注入 TSF 的信息。5. 修改创建好的 Deployment,加上一个 label tsf.tencentcloud.com/inject: enable 和一个 annotation tsf.tencentcloud.com/application.type: "N"。 apiVersion: apps/v1 kind: Deployment metadata: labels: k8s-app: test-light-provider # new tsf.tencentcloud.com/inject: enable annotations: # new tsf.tencentcloud.com/application.type: "N" # 应用名,默认是 Deployment name tsf.tencentcloud.com/application.name: "test-light-provider" name: test-light-provider …6. 提交 YAML 到 K8S,等待 Deployment 更新成功。

六、Label 和 Annotation 的使用方法

K8S 原生部署通过 label 和 annotation 来控制部署的行为,具体规则如下。

七、Labels

key 范围 值和效果
tsf.tencentcloud.com/inject Namespace allowlist: 此 namespace 下采用白名单机制,Deployment 默认不导入 TSF。enable: 此 namespace 下采用黑名单机制,默认导入。
tsf.tencentcloud.com/inject Deployment enable: 当 namespace 是白名单时,表示导入。disable: 当 namespace 是黑名单时,表示不导入。

八、Annotation

注意:说明:

注意:Namespace 的 annotation 表示该 namespace 下所有 Deployment 的默认值,如果 Deployment 没有设置某个选项,会使用 namespace 上设置的。如果 Namespace 和 Deployment 都没有设置,如果该 annotation 是选填,会使用默认值;但如果 annotation 是必填,则会报错。

key 范围 是否必填 值和效果
tsf.tencentcloud.com/application.type Namespace/Deployment 必填 应用类型。N:普通应用。M:service mesh 应用。G:网关应用。NATIVE:原生应用。
tsf.tencentcloud.com/application.name Deployment 选填。默认是 Deployment name 应用名称。
tsf.tencentcloud.com/agent Namespace/Deployment 选填。默认是 enable enable: 部署 agent 容器;disable: 不部署 agent 容器。
tsf.tencentcloud.com/agent.cpu-request Namespace/Deployment 选填。默认是 TSF 设定的默认值,当前为 100m。 例如 100m。
tsf.tencentcloud.com/agent.cpu-limit Namespace/Deployment 选填。默认是 TSF 设定的默认值,当前为 200m。 例如 200m。
tsf.tencentcloud.com/agent.mem-request Namespace/Deployment 选填。默认是 TSF 设定的默认值,当前为 125Mi。 例如 125Mi。
tsf.tencentcloud.com/agent.mem-limit Namespace/Deployment 选填。默认是 TSF 设定的默认值,当前为 250Mi。 例如 250Mi。
赞 (0)
上一篇 4天前
下一篇 4天前