腾讯云TKE原生节点完全对接指南:从集群创建到生产级调度与成本优化
引言:为什么需要原生节点
在云原生技术大规模落地的今天,Kubernetes集群的节点管理已成为运维团队的核心挑战之一。传统节点在资源利用率、调度灵活性和运维自动化方面存在诸多瓶颈——CPU实际利用率往往仅维持在10%到15%之间,大量资源处于闲置状态。腾讯云TKE原生节点(TKE Native Node)正是为解决这一问题而推出的全新节点类型,它依托腾讯云千万核容器运维的技术沉淀,为用户提供原生化、高稳定、快响应的K8s节点管理能力。
与普通节点相比,原生节点在管理模式、调度能力、故障自愈和节点管理等多个维度做了全方位增强。它搭载FinOps理念,通过HouseKeeper可视化资源大盘助力提升节点资源利用率;提供智能Request推荐,减少资源闲置;支持Pod原地升降配、内核参数调优、节点故障自愈等普通节点不具备的高级能力。本文将从零开始,系统讲解TKE原生节点的完整对接使用流程。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
一、前置条件:创建TKE标准集群
原生节点无法独立存在,必须依托于TKE标准集群。因此,对接原生节点的第一步是创建一个标准集群。
1.1 集群创建步骤
登录容器服务控制台后,在左侧导航栏中选择“集群”,单击集群列表上方的“新建”按钮。在集群类型中选择“标准集群”,单击创建。创建过程中需要配置以下核心参数:
- 集群名称:自定义,便于后续管理
- Kubernetes版本:建议选择当前最新稳定版本,原生节点对Kubernetes版本有一定要求(如Node-Healing组件要求>=1.18)
- 运行时组件:支持Docker和Containerd,建议选择Containerd
- 容器网络插件:可选择Global Router或VPC-CNI。如需使用Pod独立安全组等高级网络能力,需选择VPC-CNI共享网卡+固定IP模式
- 容器网络CIDR:建议不与集群所在VPC网络冲突,可按1024个Service/集群、128个Pod/节点、504个节点/集群的规模进行规划
1.2 集群创建后的验证
集群创建完成后,在集群列表页中单击集群ID进入集群详情页。此时集群尚无工作节点,需要下一步通过节点池来添加原生节点。
二、创建原生节点池
原生节点仅支持通过节点池进行管理。节点池是TKE引入的集群节点管理概念,借助节点池可以方便快捷地创建、管理和销毁节点,以及实现节点的动态扩缩容。
2.1 通过控制台创建原生节点池
在集群详情页中,选择左侧菜单栏中的“节点管理”,在节点池页面中单击“新建”。在新建页面中,节点类型选择“原生节点”,单击创建。接下来需要配置以下关键参数:
- 节点池名称:自定义,建议按业务或环境命名
- 计费模式:支持按量计费和包年包月两种模式。按量计费适合潮汐型业务或测试环境,包年包月单价更低,适合长期稳定的生产业务
- 机型配置:根据业务需求选择CPU或GPU实例类型。如需使用qGPU能力,需选择支持的GPU机型
- 系统盘与数据盘:配置磁盘类型(如高性能云盘、SSD云盘)、大小和挂载路径。数据盘通常挂载到/var/lib/containerd作为容器运行时存储目录
- 安全组:绑定安全组以控制节点的网络访问策略
- 节点数:初始节点数量
- 自动扩缩容策略:可配置最大节点数和创建策略(如可用区优先)
2.2 通过YAML创建原生节点池
原生节点池也支持通过Kubernetes YAML资源定义进行创建。以下是一个完整的MachineSet YAML示例:
apiVersion: node.tke.cloud.tencent.com/v1beta1
kind: MachineSet
spec:
autoRepair: false # 故障自愈开关
displayName: test
healthCheckPolicyName: # 自愈规则名称
instanceTypes: # 机型规格
- S5.MEDIUM2
replicas: 1 # 节点数
scaling: # 自动扩缩容策略
createPolicy: ZonePriority
maxReplicas: 1
subnetIDs: # 节点池子网
- subnet-nnwwb64w
template:
metadata:
annotations:
node.tke.cloud.tencent.com/machine-cloud-tags: '[{"tagKey":"xxx","tagValue":"xxx"}]'
spec:
displayName: tke-np-mpam3v4b-worker
deletePolicy: Random
metadata:
annotations:
annotation-key1: annotation-value1
labels:
label-test-key: label-test-value
providerSpec:
type: Native
value:
dataDisks: # 数据盘参数
- deleteWithInstance: true
diskID: ""
diskSize: 50
diskType: CloudPremium
fileSystem: ext4
mountTarget: /var/lib/containerd
instanceChargeType: PostpaidByHour # 节点付费模式
keyIDs: # 节点登录SSH参数
- skey-xxx
lifecycle: # 自定义脚本
postInit: echo "after node init"
preInit: echo "before node init"
management: # management参数设置
securityGroupIDs: # 安全组配置
- sg-xxxxx
systemDisk: # 系统盘配置
diskSize: 50
diskType: CloudPremium
runtimeRootDir: /var/lib/containerd
taints: # 污点
- effect: NoExecute
key: taint-key2
value: value2
type: NativeYAML中各字段的详细说明可参考腾讯云官方文档的创建参数说明。
三、安装与配置原生节点专用调度器
原生节点专用调度器是TKE为原生节点提供的核心调度增强组件,支持基于节点真实负载的智能调度、节点规格虚拟放大、水位线控制等高级能力。
3.1 安装原生节点专用调度器
在TKE控制台中,进入TKE Insight > Node Map页面。在Node Map页面中,鼠标悬浮到页面下方某一个Node上,单击详情。在该Node的详情页右上角,打开“原生节点专用调度器”开关即可完成安装。该能力为全局能力,一个集群只需开启一次即可,其他节点详情页里的开关会同步开启或关闭。该组件仅针对原生节点生效。
3.2 设置节点放大系数和水位线
安装完成后,在TKE Insight > Node Map页面中,鼠标悬浮到需要进行节点放大的原生节点上,单击详情。在该原生节点的详情页右上角,单击原生节点专用调度器右侧的编辑。在编辑页面中,可以设置以下核心参数:
- 规格放大:虚拟放大原生节点规格,调度更多的Pod,让当前节点装箱率突破100%。CPU静态放大系数支持输入1~3之间的数字,内存静态放大系数支持输入1~2之间的数字
- 调度时水位控制:设定当前原生节点目标资源利用率,保障稳定性。Pod调度时,默认近5分钟平均利用率和1小时最大利用率高于该水位的节点将不被选中
- 运行时水位控制:节点运行时,近5分钟平均利用率高于该水位的节点可能引发驱逐
调度时水位同时作为驱逐停止水位线和低负载节点水位线。例如,运行时水位为80,调度时水位为60,则节点利用率达到80后开始驱逐,会按照可驱逐的Pod利用率高低依次驱逐,直到水位线降到60以下。
3.3 驱逐机制说明
为避免驱逐关键的业务Pod,该功能默认不驱逐业务Pod。对于可以驱逐的Pod,用户需要在这些Pod所属的workload上做标识:
descheduler.alpha.kubernetes.io/evictable: 'true'驱逐时,为保证Pod在驱逐后有节点可以容纳,调度器默认要求至少有三个原生节点的利用率低于调度时水位线。如果集群中开启水位线的原生节点数量小于三个,或者低于调度时水位线的原生节点少于三个,则驱逐无法执行。
3.4 通过CRD配置调度器参数
除了通过控制台操作外,原生节点专用调度器的参数配置也支持使用YAML配置。每个配置文件都保存在名为clusternoderesourcepolicies的资源对象中。可以创建多个配置文件并应用到不同的节点上。但如果一个节点被多个配置文件声明且参数不同,会导致异常。
调度器里的CPU利用率通过以下方式计算:获取当前的CPU时间(user、nice、system、idle、iowait、irq、softirq、steal、guest、guest_nice),计算总时间和空闲时间增量,最终计算出CPU利用率百分比。
四、原生节点与普通节点的对比
原生节点包含普通节点的全部能力,且做了全方位增强。以下从多个维度进行对比:
- 管理模式:原生节点采用节点管家模式,平台在资源管理和稳定性运维上提供能力辅助客户分析决策;普通节点采用Serverful模式,用户分析、用户决策、用户执行
- 基础设施声明式管理:原生节点支持,普通节点不支持
- Pod原地升降配:原生节点支持,普通节点不支持
- 内核参数调优:原生节点提供自定义配置入口,普通节点不支持
- 节点故障自愈:原生节点具备自研操作系统、K8s环境、运行时级别的故障检测和自愈能力;普通节点仅支持社区NPD(已停止维护)
- 调度器:原生节点配备原生节点专用调度器,支持虚拟放大可调度资源;普通节点使用社区DynamicScheduler、DeScheduler
- Request智能推荐:原生节点支持推荐和一键更新,普通节点不支持
五、网络与存储配置
5.1 网络配置
TKE推荐用户在公有云场景下使用VPC-CNI网络方案。VPC-CNI方案为每个Pod分配独立的VPC IP地址,提供更好的网络性能和安全性。创建原生节点时,需要选择节点所属的子网。单个节点创建仅支持单个子网。
如果需要为原生节点开启公网访问,可以在TKE控制台或通过YAML为节点绑定弹性公网IP。
5.2 存储配置
原生节点的系统盘建议至少为100GB,数据盘建议至少为50GB。数据盘默认不绑定,可根据需要配置。数据盘通常挂载到/var/lib/containerd作为容器运行时存储目录。
在TKE上使用CFS文件存储时,需要注意VPC网络的选择需要与容器集群在相同的VPC下,以保障网络的互通。
六、运维与监控
6.1 节点监控
原生节点支持监控实例相关指标,包括CPU、内存、网络、磁盘、存储、负载均衡和GPU等。在TKE控制台的TKE Insight功能中,可以查看节点的详细监控数据。
6.2 故障自愈
原生节点具备自研的故障检测和自愈能力。当监控到实例运行异常类型的异常事件触发时,平台已在第一时间执行相关维护操作,并尝试对异常实例进行重启以快速恢复实例可用性。
在MachineSet YAML中,可以通过设置autoRepair字段来开启或关闭故障自愈功能。
6.3 常见故障排查
原生节点常见的故障排查场景包括:节点磁盘爆满排障、节点高负载排障、节点内存碎片化排障、集群DNS解析异常排障、集群Kube-Proxy异常排障等。新建原生节点池时默认优先继承集群标签,需确保云标签key的设置不会与集群设置的标签发生冲突。集群标签发生更新时,会同步至原生节点池,进而同步至所有原生节点。
七、成本优化与FinOps实践
7.1 计费模式选择
原生节点支持按量计费和包年包月两种计费模式。包年包月采用预付费方式,单价较低,适合节点资源需求量长期稳定的成熟业务;按量计费采用后付费方式,单价较高但随时可以购买和释放,适合转码、大数据、电商抢购等周期性计算场景或开启自动伸缩的潮汐型在线服务场景。
原生节点的资源费定价和普通节点定价基本一致,包含CPU、内存、系统盘和GPU。增值费定价区分机型种类,按照CPU、内存和GPU的总资源费的一定比例收取,默认溢价比例在5%到20%之间。
7.2 资源利用率提升
原生节点深度整合腾讯自研内核增强与FinOps能力,支持CPU Burst、动态内存压缩、Pod原地升降配及节点规格放大。通过规格放大(CPU放大3倍,内存放大2倍),CPU分配率可以从60%提升至110%,同时节点数下降30%,核数下降30%。通过FinOps框架与系列优化技术,集群整体利用率可提升至65%。
7.3 算力错峰实践
针对智能辅助驾驶等场景,TKE通过“白天推理,晚上训练”的调度重构实现资源的高效复用。在线任务释放资源后,智能调度离线任务进入执行队列,通过算力错峰,离线数据上云后无需等待,利用在线业务空闲期自动批处理,极大提升了资源周转率。
八、生产级部署最佳实践
8.1 节点池规划
为便于管理,建议使用节点池来创建和管理一组具有相同参数设置的原生节点。可以根据业务类型(如在线服务、离线计算、AI训练等)划分不同的节点池,分别配置不同的机型、规格和调度策略。
8.2 调度策略配置
原生节点池新增扩容机型优先级策略,支持设置主机型和备选机型顺序。在开启弹性伸缩后,扩容策略将优先保证主机型资源,仅当主机型售罄时才按序选择备选机型。同时支持与可用区策略(首选可用区优先或多可用区打散)联动。
PlacementPolicy是TKE提供的一种智能调度策略,旨在帮助用户在Kubernetes集群中更灵活地管理Pod的调度行为。当工作负载扩容或重建等需要调度场景时,可以通过PlacementPolicy实现精细化的调度控制。
8.3 安全加固
建议为原生节点绑定安全组以控制网络访问策略。同时,可以通过SSH密钥登录方式加强节点访问安全。在节点初始化阶段,可以通过前置脚本和后置脚本执行自定义的安全加固操作。
九、总结
腾讯云TKE原生节点通过深度融合腾讯自研内核增强与FinOps能力,为企业提供了原生化、高稳定、快响应的K8s节点管理能力。从集群创建、节点池配置、专用调度器部署到生产级运维,本文系统介绍了原生节点的完整对接使用流程。通过合理利用节点放大、水位线控制、智能调度等特性,企业可以显著提升集群资源利用率,降低云资源成本,实现降本增效的目标。
常见问题问答
问1:原生节点和普通节点的主要区别是什么?
原生节点包含普通节点的全部能力,并在管理模式、调度能力、故障自愈和节点管理等多个维度做了全方位增强。原生节点支持节点管家模式、基础设施声明式管理、Pod原地升降配、内核参数调优、节点故障自愈以及原生节点专用调度器等高级能力,这些都是普通节点不具备的。
问2:原生节点专用调度器的节点放大功能有什么风险?
节点放大功能通过虚拟放大原生节点规格来调度更多的Pod,让节点装箱率突破100%。但该功能有一定风险:若节点上调度了过多的Pod,且Pod真正使用的总资源量大于节点规格,会引发Pod的驱逐和重新调度。建议根据实际业务负载谨慎设置放大系数,CPU放大系数建议在1~3之间,内存放大系数建议在1~2之间。
问3:如何让Pod可以被原生节点调度器驱逐?
原生节点调度器默认不驱逐业务Pod。对于可以驱逐的Pod,需要在这些Pod所属的workload(如StatefulSet、Deployment等)上添加可驱逐注解:descheduler.alpha.kubernetes.io/evictable: 'true'。
问4:原生节点支持哪些计费模式?
原生节点支持按量计费和包年包月两种计费模式。包年包月采用预付费方式,单价较低,适合长期稳定的生产业务;按量计费采用后付费方式,按秒计费、按小时结算,适合潮汐型业务或测试环境。
问5:原生节点专用调度器的参数配置是否支持YAML方式?
支持。除了通过控制台操作外,原生节点专用调度器的参数配置也支持使用YAML配置。每个配置文件都保存在名为clusternoderesourcepolicies的资源对象中,可以直接创建或修改该类型的资源对象。
问6:原生节点故障自愈功能如何开启?
在创建原生节点池时,可以通过控制台或YAML配置开启故障自愈功能。在YAML中,通过设置spec.autoRepair字段为true来开启。当节点发生故障时,平台会自动执行维护操作并尝试重启恢复。





