一、操作场景
注意:说明:
注意: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。 |