TKE 标准集群指南

最佳实践

API 文档

有奖征文|投稿上云技术实践,赢取价值5000元大奖> HOT

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

前提条件

说明:

原生节点仅支持通过节点池管理。

通过控制台创建

  1. 登录 容器服务控制台,选择左侧导航栏中的集群
  2. 在集群列表页中,单击集群 ID,进入该集群详情页。
  3. 选择左侧菜单栏中的节点管理 > 节点池,进入“节点池列表”页面。
  4. 单击新建节点池,进入“新建节点池”页面,参考 创建参数说明 提示进行设置,如下图所示:
  5. (可选)单击更多设置,查看或配置更多信息,如下图所示:
  6. 单击创建节点池即可。

通过 YAML 创建

原生节点池的 kubernetes 资源如下所示,YAML 字段可以参考 创建参数说明

apiVersion: node.tke.cloud.tencent.com/v1beta1
kind: MachineSet
spec:
  type: Native
  displayName: mstest
  replicas: 2
  autoRepair: true
  deletePolicy: Random
  healthCheckPolicyName: test-all
  instanceTypes:
  - C3.LARGE8
  subnetIDs:
  - subnet-xxxxxxxx
  - subnet-yyyyyyyy
  scaling:
    createPolicy: ZonePriority
    maxReplicas: 100
  template:
    spec:
      displayName: mtest
      runtimeRootDir: /var/lib/containerd
      unschedulable: false
      metadata:
        labels:
          key1: "val1"
          key2: "val2"
      providerSpec:
        type: Native
        value:
          instanceChargeType: PostpaidByHour
          lifecycle:
            preInit: "echo hello"
            postInit: "echo world"
          management:
            hosts:
            - Hostnames:
              - lkongtest
              IP: 22.22.22.22
            nameservers:
            - 183.60.83.19
            - 183.60.82.98
            - 8.8.8.8
          metadata:
            creationTimestamp: null
          securityGroupIDs:
          - sg-xxxxxxxx
          systemDisk:
            diskSize: 50
            diskType: CloudPremium

创建参数说明

参数所属模块 参数项 YAML 字段 说明
启动配置 节点池类型 字段名:spec.type
字段值:Native
Native 代表原生节点池。
节点池名称 字段名:metadata.name
字段值: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.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 名称)
您可为当前节点池选择不同的故障自愈规则,每个节点池支持绑定一个规则。
自动升级 (alpha 版本) - 可选项,该功能目前内测中。
平台支持在运维窗口内提供自动升级功能来简化繁琐的版本运维操作,升级项包含:Kuberbetes、运行时、操作系统内核版本上的迭代和维护,并结合腾讯安全情报及时更新安全漏洞。
升级项 - 系统将根据您选择的升级项进行版本维护,不同升级项对应单独的升级包,版本升级前将至少提前一周在控制台和文档提供版本更新说明。
运维窗口 - 系统将在您设置的运维窗口内进行自动升级。
最大升级节点数 - 在运维时间窗口内,第一批升级的节点数为1,后续可升级节点数以2的幂数进行增长,可同时升级的节点数目不会超过您设置的最大升级节点数。
自动伸缩 字段名:spec.scaling 开启后 CA 组件对该类节点池进行自动伸缩。
备注:原生节点的自动伸缩功能由容器平台自研实现,普通节点的自动伸缩功能依赖云产品 弹性伸缩
节点数量范围 字段名:spec.scaling.maxReplicas / minReplicas
字段值:
maxReplicas: 7(自定义)
minReplicas: 2(自定义)
节点池内的节点数量受限于该范围内的最小值/最大值,若节点池开启了自动伸缩,原生节点数量将在设定的范围内自动调节。
扩容策略 字段名:spec.scaling.createPolicy
字段值:ZonePriority(首选可用区优先)/ ZoneEquality(多可用区打散)
1. 首选可用区优先:弹性伸缩会在您首选的可用区优先执行扩缩容。若首选可用区无法扩缩容,才会在其他可用区进行扩缩容。
2. 多可用区打散:在伸缩组指定的多可用区(即指定多个子网)之间尽最大努力均匀分配节点实例。只有配置了多个子网时该策略才能生效。
高级参数 Lables 字段名:spec.template.spec.metadata.labels
字段值: key1: “value1”(lable 的 key/value 为自定义)
节点属性,方便对节点进行筛选和管理,该节点池下所创建的节点均将自动增加设置的 Label。
Taints 字段名:spec.template.spec.metadata.taints
字段值:effect: NoSchedule/PreferNoSchedule/NoExecute(填写 taints 类型)
节点属性,通常与 Tolerations 配合使用,确保不符合条件的 Pod 不能调度到该节点上,该节点池下所创建的节点均将自动增加设置的 Taints。
容器目录 字段名:spec.template.spec.runtimeRootDir
字段值:/data/containerd(自定义)
勾选即可设置容器和镜像存储目录,例如 /var/lib/
kubelet 自定义参数 该字段为白名单控制,可通过工单/售后申请开放 白名单控制,支持配置 kubelet 常见参数。
Management 字段名:spec.template.spec.providerSpec.value.management.hosts/nameservers/KernelArgs
字段值:
hosts: Hostnames: [ 'test' ], IP: '22.22.22.22'
nameservers: [ '183.60.83.19', '183.60.82.98']
KernelArgs: 该字段为白名单控制,您可以 提交工单 来寻求帮助。
支持配置 Nameservers\Hosts\KernelArgs 类型参数。
自定义脚本 字段名:spec.template.spec.providerSpec.value.lifecycle.preInit/postInit
字段值:
preInit: "echo hello"(节点初始化前执行脚本,自定义)
postInit: "echo world"(节点初始化后执行脚本,自定义)
指定自定义数据来配置节点,提供 节点初始化前 / 节点初始化后 两个设置阶段。需确保脚本的可重入及重试逻辑,脚本及其生成的日志文件可在节点的 /usr/local/qcloud/tke/userscript 路径查看。
目录