本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
实例选择器
eksctl 支持为托管节点组和自管理节点组指定多种实例类型,但是由于 EC2 实例类型超过 270 种,用户必须花时间弄清楚哪些实例类型最适合他们的节点组。使用竞价型实例就更难了,因为你需要选择一组能很好地与集群自动扩缩器配合使用的实例。
eksctl 现在与EC2 实例选择器
创建集群和节点组
要创建具有单个节点组的集群,该节点组使用的实例类型与传递给 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 nodegroup:eksctl create cluster
--instance-selector-vcpus、--instance-selector-memory、--instance-selector-gpus 和 instance-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 # ...