有奖捉虫:行业应用 & 管理与支持文档专题 HOT

操作场景

TSF 支持 K8S 原生部署方案,当您通过 K8S 部署业务后,使用该功能,您可以实现仅通过页面简单配置或 K8S yaml 的少量修改,将您的应用快速接入 TSF,保留原有 K8S 部署发布全流程,并且您可以使用 TSF 的服务注册发现、服务治理、可观测性等一系列能力。
说明:
请注意,使用此功能需要保证 K8S 版本不低于 1.16。

步骤1:在 TKE 控制台创建集群

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

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

1. 登录 TSF 控制台
2. 在左侧导航栏中,单击 集群
3. 在集群列表页的左上方,单击新建集群
4. 设置集群的基本信息。
集群类型:选择容器集群
集群名称:集群名称,不超过60个字符。
新建类型:选择导入容器服务 TKE 集群
所在可用区:选择容器服务集群所在的可用区。
选择集群:选择要导入的容器集群服务。
标签:用于分类管理资源,可不选。详情参见 标签
备注:集群的描述,不超过200个字符。
数据集:将新建的集群添加到已有数据集中。非必填字段。数据集使用,请参见 数据集管理
?
?
5. 单击提交,在弹窗中选择导入云主机前往导入云主机页面。
6. 从集群所在 VPC 的云主机列表中,选择需要添加到集群的云主机。
7. 选择导入方式,并根据页面提示完成操作。
重装系统:该方式会使用 root 用户安装 agent。
安装 Agent(仅适用于虚拟机集群): 该方式支持使用 root 用户和非 root 用户安装 agent。

步骤3:应用改造

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

步骤4:部署服务到 TSF

您可以在 TSF 控制台上导入 Deployment 到 TSF 来完成部署相关操作,也可以通过 K8S YAML 部署 TSF 服务。
自动安装组件
通过 YAML 配置手动安装
说明
单击开启后,我们将对您的集群进行组件安装,期间不影响集群正常运行,安装组件最少需要64MB内存 和0.1核 CPU。
当您单击导入 TSF 时,我们将为您重启 Deployment,请选择业务低谷期进行操作。
1. 在集群列表页面,单击集群的“ID”,进入云主机列表页面。
2. 在页面上方选择 K8S 原生部署页签,单击方式一中的自动安装
?
3. 在 Deployment 列表页面,选择好命名空间,单击您要导入的 Deployment 操作列的导入 TSF
4. 在弹窗中填写导入的应用信息。
导入后应用名称:填写导入后的应用名称,不超过60字符。
应用类型:选择导入应用类型
应用使用 TSF SDK接入:使用 TSF SDK 接入,支持 TSF 全栈服务治理、应用性能监控、应用配置管理能力。
原生 Spring Cloud 应用:原生 Spring Cloud 应用0代码改造即可接入,支持服务发现、服务治理、应用性能监控能力。
Service Mesh 应用接入:使用 Service Mesh 技术支持全套 TSF 服务治理能力,无需修改代码。
TSF Agent(采集器):我们将为您在容器集(Pod)中安装 TSF Agent 以使?平台提供的服务治理、配置管理、可观测性等能?。将在您?作负载重启后?效。
Agent 占?资源:
request 用于预分配资源,当集群中的节点没有 request 所要求的资源数量时,会导致无法创建容器。
limit 用于设置容器使用资源的最大上限,避免异常情况下节点资源消耗过多。
?
?
5. 单击提交,等待导入完成。
说明:
导入完成后,会自动给用户创建好应用和部署组,重启应用后应用会注册到 TSF 注册中心。
通过 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: default
allowlist 指白名单,默认不开启,只有在 Deployment 上加上相应 label 才会开启。提交 YAML 到 K8S(后续 yaml 的 kubectl 提交过程将省略)。
$ kubectl apply -f ns.yaml
4. 创建一个简单的非 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
required
应用类型。N:普通应用;M:service mesh应用;G:网关应用;NATIVE:原生应用
tsf.tencentcloud.com/application.name
Deployment
optional. 默认是 Deployment name
应用名称
tsf.tencentcloud.com/agent
Namespace/Deployment
optional. 默认是 enable
enable: 部署 agent 容器;disable; disable: 不部署 agent 容器
tsf.tencentcloud.com/agent.cpu-request
Namespace/Deployment
optional. 默认是 TSF 设定的默认值,当前为 100m
150m
tsf.tencentcloud.com/agent.cpu-limit
Namespace/Deployment
optional. 默认是 TSF 设定的默认值,当前为 200m
300m
tsf.tencentcloud.com/agent.mem-request
Namespace/Deployment
optional. 默认是 TSF 设定的默认值,当前为 125Mi
150Mi
tsf.tencentcloud.com/agent.mem-limit
Namespace/Deployment
optional. 默认是 TSF 设定的默认值,当前为 250Mi
300Mi
?


http://www.vxiaotou.com