实例选择器 - Eksctl 用户指南

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

实例选择器

eksctl 支持为托管节点组和自管理节点组指定多种实例类型,但是由于 EC2 实例类型超过 270 种,用户必须花时间弄清楚哪些实例类型最适合他们的节点组。使用竞价型实例就更难了,因为你需要选择一组能很好地与集群自动扩缩器配合使用的实例。

eksctl 现在与EC2 实例选择器集成,该选择器通过根据资源标准(v、内存CPUs、# GPUs 和 CPU 架构)生成实例类型列表来解决这个问题。通过实例选择器标准后,eksctl 会创建一个节点组,其实例类型设置为符合所提供标准的实例类型。

创建集群和节点组

要创建具有单个节点组的集群,该节点组使用的实例类型与传递给 eksctl 的实例选择器资源标准相匹配,请运行

eksctl create cluster --instance-selector-vcpus=2 --instance-selector-memory=4

这将创建一个集群和一个托管节点组,instanceTypes字段设置为[c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium](返回的实例类型集可能会发生变化)。

对于非托管节点组,将设置以下instancesDistribution.instanceTypes字段:

eksctl create cluster --managed=false --instance-selector-vcpus=2 --instance-selector-memory=4

实例选择器标准也可以在以下位置指定 ClusterConfig:

# instance-selector-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster region: us-west-2 nodeGroups: - name: ng instanceSelector: vCPUs: 2 memory: "4" # 4 GiB, unit defaults to GiB managedNodeGroups: - name: mng instanceSelector: vCPUs: 2 memory: 2GiB # cpuArchitecture: x86_64 # default value
eksctl create cluster -f instance-selector-cluster.yaml

和支持以下实例选择器 CLI 选项eksctl create nodegroupeksctl create cluster

--instance-selector-vcpus--instance-selector-memory--instance-selector-gpusinstance-selector-cpu-architecture

可以在此处找到示例文件。

试跑

试运行功能允许您在继续创建节点组之前检查和更改与实例选择器匹配的实例。

eksctl create cluster --name development --instance-selector-vcpus=2 --instance-selector-memory=4 --dry-run apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig # ... managedNodeGroups: - amiFamily: AmazonLinux2 instanceSelector: memory: "4" vCPUs: 2 instanceTypes: - c5.large - c5a.large - c5ad.large - c5d.large - t2.medium - t3.medium - t3a.medium ... # other config

然后 ClusterConfig 可以将生成的数据传递给eksctl create cluster

eksctl create cluster -f generated-cluster.yaml

代表 CLI 选项的instanceSelector字段也将添加到 ClusterConfig 文件中,以供查看和记录之用。省略--dry-run时,该字段将被忽略并使用该instanceTypes字段,否则对的任何更改都将被 ek instanceTypes sctl 覆盖。

通过传递 ClusterConfig 文件时--dry-run,eksctl 将在扩展每个节点组的实例选择器资源标准后,输出一个包含相同节点组集的 ClusterConfig 文件。

# instance-selector-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster region: us-west-2 nodeGroups: - name: ng instanceSelector: vCPUs: 2 memory: 4 # 4 GiB, unit defaults to GiB managedNodeGroups: - name: mng instanceSelector: vCPUs: 2 memory: 2GiB # cpuArchitecture: x86_64 # default value
eksctl create cluster -f instance-selector-cluster.yaml --dry-run apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig # ... managedNodeGroups: - amiFamily: AmazonLinux2 # ... instanceSelector: cpuArchitecture: x86_64 memory: 2GiB vCPUs: 2 instanceTypes: - t3.small - t3a.small nodeGroups: - amiFamily: AmazonLinux2 # ... instanceSelector: memory: "4" vCPUs: 2 instanceType: mixed instancesDistribution: capacityRebalance: false instanceTypes: - c5.large - c5a.large - c5ad.large - c5d.large - t2.medium - t3.medium - t3a.medium # ...