本文向您介绍如何通过控制台和 YAML 创建原生节点。
前提条件
已登录 容器服务控制台。
已创建 TKE 标准集群。如未创建,请参考 快速创建一个标准集群。
说明:
原生节点仅支持通过节点池管理。
通过控制台创建
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 在集群列表页中,单击集群 ID,进入该集群详情页。
3. 选择左侧菜单栏中的节点管理 > Worker 节点,在节点池中单击新建。
4. 选择节点类型为原生节点,单击创建。
5. 在新建页面,根据 创建参数说明 提示进行设置,如下图所示:
6. (可选)单击高级设置,查看或配置更多信息,如下图所示:
7. 单击创建节点池即可。
通过 YAML 创建
apiVersion: node.tke.cloud.tencent.com/v1beta1kind: MachineSetspec:autoRepair: false #故障自愈开关displayName: testhealthCheckPolicyName: #自愈规则名称instanceTypes: #机型规格- S5.MEDIUM2replicas: 1 #节点数scaling: #自动扩缩容策略createPolicy: ZonePrioritymaxReplicas: 1subnetIDs: #节点池子网- subnet-nnwwb64wtemplate: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 #自定义annotationslabels:label-test-key: label-test-value #自定义labelsproviderSpec:type: Nativevalue:dataDisks: #数据盘参数- deleteWithInstance: truediskID: ""diskSize: 50diskType: CloudPremiumfileSystem: ext4mountTarget: /var/lib/containerdinstanceChargeType: PostpaidByHour #节点付费模式keyIDs: #节点登录SSH参数- skey-xxxlifecycle: #自定义脚本postInit: echo "after node init"preInit: echo "before node init"management: #management参数设置,包含kubelet\\kernel\\nameserver\\hostnamesecurityGroupIDs: #安全组配置- sg-xxxxxsystemDisk: #系统盘配置diskSize: 50diskType: CloudPremiumruntimeRootDir: /var/lib/containerdtaints: #污点 非必填- effect: NoExecutekey: taint-key2value: value2type: 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)都默认挂载到该路径下。节点上的其他数据盘,您可以自定义该盘的挂载路径。 |
| 公网带宽 | ||
| 主机名 | 展示字段: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) | |
| 安全组(必填) | 字段名: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 字段值: | |
| 自定义脚本 | 字段名:spec.template.spec.providerSpec.value.lifecycle.preInit/postInit 字段值: preInit: "echo hello"(节点初始化前执行脚本,自定义) postInit: "echo world"(节点初始化后执行脚本,自定义) | 指定自定义数据来配置节点,提供节点初始化前和节点初始化后两个设置阶段。需确保脚本的可重入及重试逻辑,脚本及其生成的日志文件可在节点的/usr/local/qcloud/tke/PreHook(PostInit)路径查看。 |