新建原生节点

最近更新时间:2024-08-23 16:54:21

我的收藏
本文向您介绍如何通过控制台和 YAML 创建原生节点。

前提条件

已创建 TKE 标准集群。如未创建,请参考 快速创建一个标准集群
说明:
原生节点仅支持通过节点池管理。

通过控制台创建

1. 登录 容器服务控制台,选择左侧导航栏中的集群
2. 在集群列表页中,单击集群 ID,进入该集群详情页。
3. 选择左侧菜单栏中的节点管理 > Worker 节点,在节点池中单击新建。
4. 选择节点类型为原生节点,单击创建
5. 新建页面,根据 创建参数说明 提示进行设置,如下图所示:



6. (可选)单击高级设置,查看或配置更多信息,如下图所示:



7. 单击创建节点池即可。

通过 YAML 创建

原生节点池的 kubernetes 资源如下所示,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 #可自定义显示名称
metadata:
annotations:
annotation-key1: annotation-value1 #自定义annotations
labels:
label-test-key: label-test-value #自定义labels
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参数设置,包含kubelet\\kernel\\nameserver\\hostname
securityGroupIDs: #安全组配置
- sg-xxxxx
systemDisk: #系统盘配置
diskSize: 50
diskType: CloudPremium
runtimeRootDir: /var/lib/containerd
taints: #污点 非必填
- effect: NoExecute
key: taint-key2
value: value2
type: Native




创建参数说明

参数所属模块
参数项
YAML 字段
说明
启动配置
节点池类型(必填)
字段名:spec.type
字段值:Native
Native 代表原生节点池。
节点池名称(必填)
字段名:spec.displayname
字段值:demo-machineset(自定义)
自定义,可根据业务需求等信息进行命名,方便后续资源管理。
计费模式(必填)
字段名:spec.template.spec.providerSpec.value.instanceChargeType
字段值:PostpaidByHour(按量)/ PrepaidCharge(包月)
提供按量计费、包年包月两种计费模式,请根据实际需求进行选择。
机型配置(必填)
机型:
字段名:spec.instanceTypes
字段值:S2.MEDIUM4(可参考控制台获取其他机型规格)

系统盘:
字段名:spec.template.spec.providerSpec.value.systemDisk.diskSize/diskType
字段值:
diskSize: 50(支持自定义,大小需为10 的倍数,最小为 50G) diskType: CloudPremium / CloudSSD(系统盘类型,支持高性能 / SSD)
在“机型配置”窗口中参考以下信息按需选择:
可用区:该选项用于过滤所选可用区下可用的实例类型。详情见 原生节点地域与可用区
机型:支持通过 CPU 核数、内存大小及实例类型进行筛选。
系统盘:存储控制、调度节点运行的系统集合,新建大小设置 > 100GB。
数据盘
字段名:spec.template.spec.providerSpec.value.dataDisks
字段值:
diskSize: 同系统盘
diskType: 同系统盘
fileSystem: ext3/ext4/xfs
mountTarget: /var/lib/containerd(挂载路径)
节点上挂载的首块数据盘(仅考虑云硬盘类型)格式化挂载路径默认为 /var/lib/container,此时系统将 “Kubelet/容器/镜像”的存储目录(/var/lib/kubelet、 /var/lib/containerd、 /var/lib/docker)都默认挂载到该路径下。节点上的其他数据盘,您可以自定义该盘的挂载路径。
公网带宽
字段名:spec.template.spec.providerSpec.value.internetAccessible 字段值:详情见 原生节点开启公网访问
公网带宽:开启公网访问需绑定 EIP,详情见 原生节点开启公网访问
主机名
展示字段:metadata.annotation
key: "node.tke.cloud.tencent.com/hostname-pattern"
value: "自定义"
操作系统内部的计算机名,默认为内网IP,节点 hostname 命名和主机名将保持一致。

命名规则:
1. 支持批量连续命名或指定模式串命名,要求 2-40 个字符,仅支持小写字母、数字、连字符 "-" 、点号 ".", 符号不能用于开头或结尾且不能连续使用。
2. 主机名组成形式为:自定义主机名(hostname) + “.节点池id” + ".{R:k}",k 为本次活动内已经创建的实例数量。如:自定义为“work{R:2}”,则批量扩容主机名为“work.节点池id.0”、“work.节点池id.1”以此类推。

注意:当集群“节点hostname命名模式”为手动模式时,节点池创建时才会展示该字段。
ssh 密钥(必填)
字段名:spec.template.spec.providerSpec.value.keyIDs
字段值:skey-asxxxx(ssh 密钥 ID)
需通过 ssh 方式登录节点,若现有的密钥不合适,可以 创建密钥
安全组(必填)
字段名:spec.template.spec.providerSpec.value.securityGroupIDs
字段值:sg-a7msxxx(安全组 ID)
默认为创建集群时所设置的安全组,若现有的安全组不合适,可以 创建安全组
数量(必填)
字段名:spec.replicas
字段值:7(自定义)
对应节点池内维护的期望节点数量,请根据实际需求进行设置。例如,此处数量填写为5,则节点池将创建5台节点维护。
容器网络(必填)
字段名:spec.subnetIDs
字段值:subnet-i2ghxxxx(容器子网 ID)
请根据实际需求选择合适的可用子网。
1. 当您手动调节节点数量时,系统将按照子网列表顺序来尝试创建节点,如果顺序靠前的子网可以创建成功,则总在该子网创建。
2. 若节点池开启了自动伸缩,将根据您配置的扩容策略选择合适的子网进行创建节点。
运维功能
故障自愈
字段名:spec.autoRepair
字段值:true(开启)/ false(关闭)
可选项,推荐开启。该功能可实时检测原生节点上的各种异常情况并提供一定的自愈手段,包含:OS、Runtime、kubelet 异常等。
检查和自愈规则
字段名:spec.healthCheckPolicyName
字段值:test-all(绑定故障自愈 CR 名称)
您可为当前节点池选择不同的故障自愈规则,每个节点池支持绑定一个规则。
自动伸缩
字段名:spec.scaling
开启后 CA 组件对该类节点池进行自动伸缩。
备注:原生节点的自动伸缩功能由容器平台自研实现,普通节点的自动伸缩功能依赖云产品 弹性伸缩
节点数量范围
字段名:spec.scaling.maxReplicas / minReplicas
字段值:
maxReplicas: 7(自定义)
minReplicas: 2(自定义)
节点池内的节点数量受限于该范围内的最小值/最大值,若节点池开启了自动伸缩,原生节点数量将在设定的范围内自动调节。
扩容策略
字段名:spec.scaling.createPolicy
字段值:ZonePriority(首选可用区优先)/ ZoneEquality(多可用区打散)
1. 首选可用区优先:弹性伸缩会在您首选的可用区优先执行扩缩容。若首选可用区无法扩缩容,才会在其他可用区进行扩缩容。
2. 多可用区打散:在伸缩组指定的多可用区(即指定多个子网)之间尽最大努力均匀分配节点实例。只有配置了多个子网时该策略才能生效。

云标签
字段名:node.tke.cloud.tencent.com/machine-cloud-tags
字段值:[{"tagKey":"xxx","tagValue":"xxx"}]
支持通过云标签对节点分账,节点池设置的云标签对池内所有节点生效。
注意:原生节点池会默认继承集群标签,请确保此处云标签 key 的设置不会和集群设置的标签发生冲突。
Labels
字段名:spec.template.spec.metadata.labels
字段值: key1: “value1”(label 的 key/value 为自定义)
节点属性,方便对节点进行筛选和管理,该节点池下所创建的节点均将自动增加设置的 Label。
Taints
字段名:spec.template.spec.taints
字段值:effect: NoSchedule/PreferNoSchedule/NoExecute(填写 taints 类型)
节点属性,通常与 Tolerations 配合使用,确保不符合条件的 Pod 不能调度到该节点上,该节点池下所创建的节点均将自动增加设置的 Taints。
容器目录
字段名:spec.template.spec.runtimeRootDir
字段值:/var/lib/containerd
勾选即可设置容器和镜像存储目录,例如 /var/lib/
Management
字段名:spec.template.spec.providerSpec.value.management.kubeletArgs/kernelArgs/hosts/nameservers
字段值:
详情请参见 Management 参数介绍
支持自定义配置 Kubelet 、内核、Hosts、Nameservers 参数,详情请参见 Management 参数介绍
自定义脚本
字段名:spec.template.spec.providerSpec.value.lifecycle.preInit/postInit
字段值:
preInit: "echo hello"(节点初始化前执行脚本,自定义)
postInit: "echo world"(节点初始化后执行脚本,自定义)
指定自定义数据来配置节点,提供节点初始化前节点初始化后两个设置阶段。需确保脚本的可重入及重试逻辑,脚本及其生成的日志文件可在节点的/usr/local/qcloud/tke/PreHook(PostInit)路径查看。