From 0ded8158f849e88dd752b961c6ba9569cfd6ea84 Mon Sep 17 00:00:00 2001 From: Ellis Tarn Date: Tue, 8 Aug 2023 11:25:08 -0700 Subject: [PATCH 1/4] chore: Info -> Debug for pricing updates (#4400) --- pkg/providers/pricing/pricing.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/providers/pricing/pricing.go b/pkg/providers/pricing/pricing.go index 8d509bc2d611..83669fb90fdf 100644 --- a/pkg/providers/pricing/pricing.go +++ b/pkg/providers/pricing/pricing.go @@ -219,7 +219,7 @@ func (p *Provider) UpdateOnDemandPricing(ctx context.Context) error { }).Set(price) } if p.cm.HasChanged("on-demand-prices", p.onDemandPrices) { - logging.FromContext(ctx).With("instance-type-count", len(p.onDemandPrices)).Infof("updated on-demand pricing") + logging.FromContext(ctx).With("instance-type-count", len(p.onDemandPrices)).Debugf("updated on-demand pricing") } return nil } @@ -379,7 +379,7 @@ func (p *Provider) UpdateSpotPricing(ctx context.Context) error { if p.cm.HasChanged("spot-prices", p.spotPrices) { logging.FromContext(ctx).With( "instance-type-count", len(p.onDemandPrices), - "offering-count", totalOfferings).Infof("updated spot pricing with instance types and offerings") + "offering-count", totalOfferings).Debugf("updated spot pricing with instance types and offerings") } return nil } From e658971027b2acfbdcb94b01adc3a4945e377f0c Mon Sep 17 00:00:00 2001 From: Amanuel Engeda <74629455+engedaam@users.noreply.github.com> Date: Tue, 8 Aug 2023 18:07:05 -0700 Subject: [PATCH 2/4] chore: Update Cloudprovider interface with driftReason (#4397) --- go.mod | 2 +- go.sum | 4 +- pkg/cloudprovider/cloudprovider.go | 14 +++--- pkg/cloudprovider/drift.go | 73 +++++++++++++++++++----------- pkg/cloudprovider/suite_test.go | 34 +++++++------- pkg/fake/cloudprovider.go | 6 +-- 6 files changed, 77 insertions(+), 56 deletions(-) diff --git a/go.mod b/go.mod index 28e42086d23a..8fff4d38f325 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/PuerkitoBio/goquery v1.8.1 github.com/avast/retry-go v3.0.0+incompatible github.com/aws/aws-sdk-go v1.44.294 - github.com/aws/karpenter-core v0.29.2-0.20230803235302-95bd9f61a18b + github.com/aws/karpenter-core v0.29.2-0.20230809005636-36c54adb96d7 github.com/go-playground/validator/v10 v10.13.0 github.com/imdario/mergo v0.3.16 github.com/mitchellh/hashstructure/v2 v2.0.2 diff --git a/go.sum b/go.sum index 8eabb69f0b6a..3191a8ef2bd8 100644 --- a/go.sum +++ b/go.sum @@ -53,8 +53,8 @@ github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHS github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= github.com/aws/aws-sdk-go v1.44.294 h1:3x7GaEth+pDU9HwFcAU0awZlEix5CEdyIZvV08SlHa8= github.com/aws/aws-sdk-go v1.44.294/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/karpenter-core v0.29.2-0.20230803235302-95bd9f61a18b h1:88YeEA65jQNCj4/AdH0qixJeuGuIOi5QxOzsRCXsJQA= -github.com/aws/karpenter-core v0.29.2-0.20230803235302-95bd9f61a18b/go.mod h1:+C8X0N378fQ/+YmopvRHflj2JFrVP8sPs9xL7v4A6eM= +github.com/aws/karpenter-core v0.29.2-0.20230809005636-36c54adb96d7 h1:912c/OMnMEke0HIevsDHAIMwbsgrXUyJg3YmP3x5iTA= +github.com/aws/karpenter-core v0.29.2-0.20230809005636-36c54adb96d7/go.mod h1:+C8X0N378fQ/+YmopvRHflj2JFrVP8sPs9xL7v4A6eM= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= diff --git a/pkg/cloudprovider/cloudprovider.go b/pkg/cloudprovider/cloudprovider.go index 82c7f31d1790..ea174aba6af9 100644 --- a/pkg/cloudprovider/cloudprovider.go +++ b/pkg/cloudprovider/cloudprovider.go @@ -189,24 +189,24 @@ func (c *CloudProvider) Delete(ctx context.Context, machine *v1alpha5.Machine) e return c.instanceProvider.Delete(ctx, id) } -func (c *CloudProvider) IsMachineDrifted(ctx context.Context, machine *v1alpha5.Machine) (bool, error) { +func (c *CloudProvider) IsMachineDrifted(ctx context.Context, machine *v1alpha5.Machine) (cloudprovider.DriftReason, error) { // Not needed when GetInstanceTypes removes provisioner dependency provisioner := &v1alpha5.Provisioner{} if err := c.kubeClient.Get(ctx, types.NamespacedName{Name: machine.Labels[v1alpha5.ProvisionerNameLabelKey]}, provisioner); err != nil { - return false, client.IgnoreNotFound(fmt.Errorf("getting provisioner, %w", err)) + return "", client.IgnoreNotFound(fmt.Errorf("getting provisioner, %w", err)) } if provisioner.Spec.ProviderRef == nil { - return false, nil + return "", nil } nodeTemplate, err := c.resolveNodeTemplate(ctx, nil, provisioner.Spec.ProviderRef) if err != nil { - return false, client.IgnoreNotFound(fmt.Errorf("resolving node template, %w", err)) + return "", client.IgnoreNotFound(fmt.Errorf("resolving node template, %w", err)) } - drifted, err := c.isNodeTemplateDrifted(ctx, machine, provisioner, nodeTemplate) + driftReason, err := c.isNodeTemplateDrifted(ctx, machine, provisioner, nodeTemplate) if err != nil { - return false, err + return "", err } - return drifted, nil + return driftReason, nil } // Name returns the CloudProvider implementation name. diff --git a/pkg/cloudprovider/drift.go b/pkg/cloudprovider/drift.go index 02afdf7a401f..15e55a8a530d 100644 --- a/pkg/cloudprovider/drift.go +++ b/pkg/cloudprovider/drift.go @@ -30,90 +30,111 @@ import ( "github.com/aws/karpenter/pkg/utils" ) -func (c *CloudProvider) isNodeTemplateDrifted(ctx context.Context, machine *v1alpha5.Machine, provisioner *v1alpha5.Provisioner, nodeTemplate *v1alpha1.AWSNodeTemplate) (bool, error) { +const ( + AMIDrift cloudprovider.DriftReason = "AMIDrift" + SubnetDrift cloudprovider.DriftReason = "SubnetDrift" + SecurityGroupDrift cloudprovider.DriftReason = "SecurityGroupDrift" + NodeTemplateStaticDrift cloudprovider.DriftReason = "NodeTemplateStaticDrift" +) + +func (c *CloudProvider) isNodeTemplateDrifted(ctx context.Context, machine *v1alpha5.Machine, provisioner *v1alpha5.Provisioner, nodeTemplate *v1alpha1.AWSNodeTemplate) (cloudprovider.DriftReason, error) { instance, err := c.getInstance(ctx, machine.Status.ProviderID) if err != nil { - return false, err + return "", err } amiDrifted, err := c.isAMIDrifted(ctx, machine, provisioner, instance, nodeTemplate) if err != nil { - return false, fmt.Errorf("calculating ami drift, %w", err) + return "", fmt.Errorf("calculating ami drift, %w", err) } securitygroupDrifted, err := c.areSecurityGroupsDrifted(instance, nodeTemplate) if err != nil { - return false, fmt.Errorf("calculating securitygroup drift, %w", err) + return "", fmt.Errorf("calculating securitygroup drift, %w", err) } subnetDrifted, err := c.isSubnetDrifted(instance, nodeTemplate) if err != nil { - return false, fmt.Errorf("calculating subnet drift, %w", err) + return "", fmt.Errorf("calculating subnet drift, %w", err) } - - return amiDrifted || securitygroupDrifted || subnetDrifted || c.areStaticFieldsDrifted(machine, nodeTemplate), nil + drifted := lo.FindOrElse([]cloudprovider.DriftReason{amiDrifted, securitygroupDrifted, subnetDrifted, c.areStaticFieldsDrifted(machine, nodeTemplate)}, "", func(i cloudprovider.DriftReason) bool { + return string(i) != "" + }) + return drifted, nil } func (c *CloudProvider) isAMIDrifted(ctx context.Context, machine *v1alpha5.Machine, provisioner *v1alpha5.Provisioner, - instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (bool, error) { + instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (cloudprovider.DriftReason, error) { instanceTypes, err := c.GetInstanceTypes(ctx, provisioner) if err != nil { - return false, fmt.Errorf("getting instanceTypes, %w", err) + return "", fmt.Errorf("getting instanceTypes, %w", err) } nodeInstanceType, found := lo.Find(instanceTypes, func(instType *cloudprovider.InstanceType) bool { return instType.Name == machine.Labels[v1.LabelInstanceTypeStable] }) if !found { - return false, fmt.Errorf(`finding node instance type "%s"`, machine.Labels[v1.LabelInstanceTypeStable]) + return "", fmt.Errorf(`finding node instance type "%s"`, machine.Labels[v1.LabelInstanceTypeStable]) } if nodeTemplate.Spec.LaunchTemplateName != nil { - return false, nil + return "", nil } amis, err := c.amiProvider.Get(ctx, nodeTemplate, &amifamily.Options{}) if err != nil { - return false, fmt.Errorf("getting amis, %w", err) + return "", fmt.Errorf("getting amis, %w", err) } if len(amis) == 0 { - return false, fmt.Errorf("no amis exist given constraints") + return "", fmt.Errorf("no amis exist given constraints") } mappedAMIs := amifamily.MapInstanceTypes(amis, []*cloudprovider.InstanceType{nodeInstanceType}) if len(mappedAMIs) == 0 { - return false, fmt.Errorf("no instance types satisfy requirements of amis %v,", amis) + return "", fmt.Errorf("no instance types satisfy requirements of amis %v,", amis) + } + if !lo.Contains(lo.Keys(mappedAMIs), instance.ImageID) { + return AMIDrift, nil } - return !lo.Contains(lo.Keys(mappedAMIs), instance.ImageID), nil + return "", nil } -func (c *CloudProvider) isSubnetDrifted(instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (bool, error) { +func (c *CloudProvider) isSubnetDrifted(instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (cloudprovider.DriftReason, error) { // If the node template status does not have subnets, wait for the subnets to be populated before continuing if nodeTemplate.Status.Subnets == nil { - return false, fmt.Errorf("AWSNodeTemplate has no subnets") + return "", fmt.Errorf("AWSNodeTemplate has no subnets") } _, found := lo.Find(nodeTemplate.Status.Subnets, func(subnet v1alpha1.Subnet) bool { return subnet.ID == instance.SubnetID }) - return !found, nil + if !found { + return SubnetDrift, nil + } + return "", nil } // Checks if the security groups are drifted, by comparing the AWSNodeTemplate.Status.SecurityGroups // to the ec2 instance security groups -func (c *CloudProvider) areSecurityGroupsDrifted(ec2Instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (bool, error) { +func (c *CloudProvider) areSecurityGroupsDrifted(ec2Instance *instance.Instance, nodeTemplate *v1alpha1.AWSNodeTemplate) (cloudprovider.DriftReason, error) { // nodeTemplate.Spec.SecurityGroupSelector can be nil if the user is using a launchTemplateName to define SecurityGroups // Karpenter will not drift on changes to securitygroup in the launchTemplateName if nodeTemplate.Spec.LaunchTemplateName != nil { - return false, nil + return "", nil } securityGroupIds := sets.New(lo.Map(nodeTemplate.Status.SecurityGroups, func(sg v1alpha1.SecurityGroup, _ int) string { return sg.ID })...) if len(securityGroupIds) == 0 { - return false, fmt.Errorf("no security groups exist in the AWSNodeTemplate Status") + return "", fmt.Errorf("no security groups exist in the AWSNodeTemplate Status") + } + + if !securityGroupIds.Equal(sets.New(ec2Instance.SecurityGroupIDs...)) { + return SecurityGroupDrift, nil } - return !securityGroupIds.Equal(sets.New(ec2Instance.SecurityGroupIDs...)), nil + return "", nil } -func (c *CloudProvider) areStaticFieldsDrifted(machine *v1alpha5.Machine, nodeTemplate *v1alpha1.AWSNodeTemplate) bool { +func (c *CloudProvider) areStaticFieldsDrifted(machine *v1alpha5.Machine, nodeTemplate *v1alpha1.AWSNodeTemplate) cloudprovider.DriftReason { nodeTemplateHash, foundHashNodeTemplate := nodeTemplate.ObjectMeta.Annotations[v1alpha1.AnnotationNodeTemplateHash] machineHash, foundHashMachine := machine.ObjectMeta.Annotations[v1alpha1.AnnotationNodeTemplateHash] if !foundHashNodeTemplate || !foundHashMachine { - return false + return "" } - - return nodeTemplateHash != machineHash + if nodeTemplateHash != machineHash { + return NodeTemplateStaticDrift + } + return "" } func (c *CloudProvider) getInstance(ctx context.Context, providerID string) (*instance.Instance, error) { diff --git a/pkg/cloudprovider/suite_test.go b/pkg/cloudprovider/suite_test.go index c806db39a257..8983f4434542 100644 --- a/pkg/cloudprovider/suite_test.go +++ b/pkg/cloudprovider/suite_test.go @@ -307,33 +307,33 @@ var _ = Describe("CloudProvider", func() { ExpectDeleted(ctx, env.Client, nodeTemplate) drifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(drifted).To(BeFalse()) + Expect(drifted).To(BeEmpty()) }) It("should return false if providerRef is not defined", func() { provisioner.Spec.ProviderRef = nil ExpectApplied(ctx, env.Client, provisioner) drifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(drifted).To(BeFalse()) + Expect(drifted).To(BeEmpty()) }) It("should not fail if provisioner does not exist", func() { ExpectDeleted(ctx, env.Client, provisioner) drifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(drifted).To(BeFalse()) + Expect(drifted).To(BeEmpty()) }) It("should return drifted if the AMI is not valid", func() { // Instance is a reference to what we return in the GetInstances call instance.ImageId = aws.String(fake.ImageID()) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.AMIDrift)) }) It("should return drifted if the subnet is not valid", func() { instance.SubnetId = aws.String(fake.SubnetID()) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.SubnetDrift)) }) It("should return an error if AWSNodeTemplate subnets are empty", func() { nodeTemplate.Status.Subnets = []v1alpha1.Subnet{} @@ -344,7 +344,7 @@ var _ = Describe("CloudProvider", func() { It("should not return drifted if the machine is valid", func() { isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }) It("should return an error if the AWSNodeTemplate securitygroup are empty", func() { nodeTemplate.Status.SecurityGroups = []v1alpha1.SecurityGroup{} @@ -359,14 +359,14 @@ var _ = Describe("CloudProvider", func() { instance.SecurityGroups = []*ec2.GroupIdentifier{{GroupId: aws.String(fake.SecurityGroupID())}} isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.SecurityGroupDrift)) }) It("should return drifted if there are more instance securitygroups are present than AWSNodeTemplate Status", func() { // Instance is a reference to what we return in the GetInstances call instance.SecurityGroups = []*ec2.GroupIdentifier{{GroupId: aws.String(fake.SecurityGroupID())}, {GroupId: aws.String(validSecurityGroup)}} isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.SecurityGroupDrift)) }) It("should return drifted if more AWSNodeTemplate securitygroups are present than instance securitygroups", func() { nodeTemplate.Status.SecurityGroups = []v1alpha1.SecurityGroup{ @@ -382,7 +382,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, nodeTemplate) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.SecurityGroupDrift)) }) It("should not return drifted if launchTemplateName is defined", func() { nodeTemplate.Spec.LaunchTemplateName = aws.String("validLaunchTemplateName") @@ -390,12 +390,12 @@ var _ = Describe("CloudProvider", func() { nodeTemplate.Status.SecurityGroups = nil isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }) It("should not return drifted if the securitygroups match", func() { isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).ToNot(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }) It("should error if the machine doesn't have the instance-type label", func() { machine.Labels = map[string]string{ @@ -408,7 +408,7 @@ var _ = Describe("CloudProvider", func() { machine.Status = v1alpha5.MachineStatus{} isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).To(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }) It("should error drift if the underlying machine does not exist", func() { awsEnv.EC2API.DescribeInstancesBehavior.Output.Set(&ec2.DescribeInstancesOutput{ @@ -431,7 +431,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, provisioner, nodeTemplate) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).NotTo(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) updatedAWSNodeTemplate := test.AWSNodeTemplate(*nodeTemplate.Spec.DeepCopy(), awsnodetemplatespec) updatedAWSNodeTemplate.ObjectMeta = nodeTemplate.ObjectMeta @@ -441,7 +441,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, updatedAWSNodeTemplate) isDrifted, err = cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).NotTo(HaveOccurred()) - Expect(isDrifted).To(BeTrue()) + Expect(isDrifted).To(Equal(cloudprovider.NodeTemplateStaticDrift)) }, Entry("InstanceProfile Drift", v1alpha1.AWSNodeTemplateSpec{AWS: v1alpha1.AWS{InstanceProfile: aws.String("profile-2")}}), Entry("UserData Drift", v1alpha1.AWSNodeTemplateSpec{UserData: aws.String("userdata-test-2")}), @@ -457,7 +457,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, provisioner, nodeTemplate) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).NotTo(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) updatedAWSNodeTemplate := test.AWSNodeTemplate(*nodeTemplate.Spec.DeepCopy(), awsnodetemplatespec) updatedAWSNodeTemplate.ObjectMeta = nodeTemplate.ObjectMeta @@ -467,7 +467,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, updatedAWSNodeTemplate) isDrifted, err = cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).NotTo(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }, Entry("AMISelector Drift", v1alpha1.AWSNodeTemplateSpec{AMISelector: map[string]string{"aws::ids": validAMI}}), Entry("SubnetSelector Drift", v1alpha1.AWSNodeTemplateSpec{AWS: v1alpha1.AWS{SubnetSelector: map[string]string{"aws-ids": "subnet-test1"}}}), @@ -481,7 +481,7 @@ var _ = Describe("CloudProvider", func() { ExpectApplied(ctx, env.Client, provisioner, nodeTemplate) isDrifted, err := cloudProvider.IsMachineDrifted(ctx, machine) Expect(err).NotTo(HaveOccurred()) - Expect(isDrifted).To(BeFalse()) + Expect(isDrifted).To(BeEmpty()) }) }) }) diff --git a/pkg/fake/cloudprovider.go b/pkg/fake/cloudprovider.go index 51b12e5b77da..75e9b568e7cc 100644 --- a/pkg/fake/cloudprovider.go +++ b/pkg/fake/cloudprovider.go @@ -57,14 +57,14 @@ func (c *CloudProvider) GetInstanceTypes(_ context.Context, _ *v1alpha5.Provisio }, nil } -func (c *CloudProvider) IsMachineDrifted(_ context.Context, machine *v1alpha5.Machine) (bool, error) { +func (c *CloudProvider) IsMachineDrifted(_ context.Context, machine *v1alpha5.Machine) (corecloudprovider.DriftReason, error) { nodeAMI := machine.Labels[v1alpha1.LabelInstanceAMIID] for _, ami := range c.ValidAMIs { if nodeAMI == ami { - return false, nil + return "", nil } } - return true, nil + return "drifted", nil } func (c *CloudProvider) Get(context.Context, string) (*v1alpha5.Machine, error) { From 4caa48d9b8fd98e30a40ab4bbb3b38b27ab59870 Mon Sep 17 00:00:00 2001 From: Todd Neal Date: Tue, 8 Aug 2023 08:59:55 -0500 Subject: [PATCH 3/4] update codegen with the new VPC limits for the m7i family This would happen automatically, but doing it now to ensure its in the next release. --- .../instancetype/zz_generated.vpclimits.go | 707 +++++++++++++++++- pkg/providers/pricing/zz_generated.pricing.go | 22 +- 2 files changed, 706 insertions(+), 23 deletions(-) diff --git a/pkg/providers/instancetype/zz_generated.vpclimits.go b/pkg/providers/instancetype/zz_generated.vpclimits.go index 45a4ca33657e..fafcb19bef0d 100644 --- a/pkg/providers/instancetype/zz_generated.vpclimits.go +++ b/pkg/providers/instancetype/zz_generated.vpclimits.go @@ -17,7 +17,7 @@ // so we can get this information at runtime. // Code generated by go generate; DO NOT EDIT. -// This file was generated at 2023-06-05T23:49:46Z +// This file was generated at 2023-07-28T19:26:14Z // WARNING: please add @ellistarn, @bwagner5, or @jonathan-innis from aws/karpenter to reviewers // if you are updating this file since Karpenter is depending on this file to calculate max pods. @@ -2080,6 +2080,246 @@ var Limits = map[string]*VPCLimits{ Hypervisor: "nitro", IsBareMetal: false, }, + "c7gd.12xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.16xlarge": { + Interface: 15, + IPv4PerInterface: 50, + IsTrunkingCompatible: true, + BranchInterface: 107, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 15, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.2xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 38, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.4xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.8xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.large": { + Interface: 3, + IPv4PerInterface: 10, + IsTrunkingCompatible: true, + BranchInterface: 9, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 3, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.medium": { + Interface: 2, + IPv4PerInterface: 4, + IsTrunkingCompatible: true, + BranchInterface: 4, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gd.xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 18, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.12xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.16xlarge": { + Interface: 15, + IPv4PerInterface: 50, + IsTrunkingCompatible: true, + BranchInterface: 107, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 15, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.2xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 38, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.4xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.8xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.large": { + Interface: 3, + IPv4PerInterface: 10, + IsTrunkingCompatible: true, + BranchInterface: 9, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 3, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.medium": { + Interface: 2, + IPv4PerInterface: 4, + IsTrunkingCompatible: true, + BranchInterface: 4, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "c7gn.xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 18, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, "d2.2xlarge": { Interface: 4, IPv4PerInterface: 15, @@ -2793,7 +3033,7 @@ var Limits = map[string]*VPCLimits{ DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { - MaximumNetworkInterfaces: 4, + MaximumNetworkInterfaces: 8, NetworkCardIndex: 0, }, }, @@ -2838,7 +3078,7 @@ var Limits = map[string]*VPCLimits{ DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { - MaximumNetworkInterfaces: 3, + MaximumNetworkInterfaces: 4, NetworkCardIndex: 0, }, }, @@ -3288,7 +3528,7 @@ var Limits = map[string]*VPCLimits{ DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { - MaximumNetworkInterfaces: 8, + MaximumNetworkInterfaces: 15, NetworkCardIndex: 0, }, }, @@ -5970,11 +6210,11 @@ var Limits = map[string]*VPCLimits{ Hypervisor: "nitro", IsBareMetal: false, }, - "mac1.metal": { + "m7gd.12xlarge": { Interface: 8, IPv4PerInterface: 30, IsTrunkingCompatible: true, - BranchInterface: 6, + BranchInterface: 54, DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { @@ -5982,30 +6222,150 @@ var Limits = map[string]*VPCLimits{ NetworkCardIndex: 0, }, }, - Hypervisor: "", - IsBareMetal: true, + Hypervisor: "nitro", + IsBareMetal: false, }, - "mac2.metal": { - Interface: 8, - IPv4PerInterface: 30, + "m7gd.16xlarge": { + Interface: 15, + IPv4PerInterface: 50, IsTrunkingCompatible: true, - BranchInterface: 6, + BranchInterface: 107, DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { - MaximumNetworkInterfaces: 8, + MaximumNetworkInterfaces: 15, NetworkCardIndex: 0, }, }, - Hypervisor: "", - IsBareMetal: true, + Hypervisor: "nitro", + IsBareMetal: false, }, - "p2.16xlarge": { - Interface: 8, - IPv4PerInterface: 30, - IsTrunkingCompatible: false, - BranchInterface: 0, - DefaultNetworkCardIndex: 0, + "m7gd.2xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 38, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "m7gd.4xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "m7gd.8xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "m7gd.large": { + Interface: 3, + IPv4PerInterface: 10, + IsTrunkingCompatible: true, + BranchInterface: 9, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 3, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "m7gd.medium": { + Interface: 2, + IPv4PerInterface: 4, + IsTrunkingCompatible: true, + BranchInterface: 4, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "m7gd.xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 18, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "mac1.metal": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 6, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "", + IsBareMetal: true, + }, + "mac2.metal": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 6, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "", + IsBareMetal: true, + }, + "p2.16xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: false, + BranchInterface: 0, + DefaultNetworkCardIndex: 0, NetworkCards: []NetworkCard{ { MaximumNetworkInterfaces: 8, @@ -6135,6 +6495,176 @@ var Limits = map[string]*VPCLimits{ Hypervisor: "nitro", IsBareMetal: false, }, + "p5.48xlarge": { + Interface: 64, + IPv4PerInterface: 50, + IsTrunkingCompatible: true, + BranchInterface: 120, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 0, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 1, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 2, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 3, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 4, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 5, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 6, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 7, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 8, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 9, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 10, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 11, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 12, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 13, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 14, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 15, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 16, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 17, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 18, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 19, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 20, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 21, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 22, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 23, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 24, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 25, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 26, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 27, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 28, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 29, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 30, + }, + + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 31, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, "r3.2xlarge": { Interface: 4, IPv4PerInterface: 15, @@ -8405,6 +8935,126 @@ var Limits = map[string]*VPCLimits{ Hypervisor: "nitro", IsBareMetal: false, }, + "r7gd.12xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.16xlarge": { + Interface: 15, + IPv4PerInterface: 50, + IsTrunkingCompatible: true, + BranchInterface: 107, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 15, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.2xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 38, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.4xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.8xlarge": { + Interface: 8, + IPv4PerInterface: 30, + IsTrunkingCompatible: true, + BranchInterface: 54, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 8, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.large": { + Interface: 3, + IPv4PerInterface: 10, + IsTrunkingCompatible: true, + BranchInterface: 9, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 3, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.medium": { + Interface: 2, + IPv4PerInterface: 4, + IsTrunkingCompatible: true, + BranchInterface: 4, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 2, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, + "r7gd.xlarge": { + Interface: 4, + IPv4PerInterface: 15, + IsTrunkingCompatible: true, + BranchInterface: 18, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 4, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, "t1.micro": { Interface: 2, IPv4PerInterface: 2, @@ -9025,6 +9675,21 @@ var Limits = map[string]*VPCLimits{ Hypervisor: "nitro", IsBareMetal: false, }, + "u-24tb1.112xlarge": { + Interface: 15, + IPv4PerInterface: 50, + IsTrunkingCompatible: false, + BranchInterface: 0, + DefaultNetworkCardIndex: 0, + NetworkCards: []NetworkCard{ + { + MaximumNetworkInterfaces: 15, + NetworkCardIndex: 0, + }, + }, + Hypervisor: "nitro", + IsBareMetal: false, + }, "u-3tb1.56xlarge": { Interface: 8, IPv4PerInterface: 30, diff --git a/pkg/providers/pricing/zz_generated.pricing.go b/pkg/providers/pricing/zz_generated.pricing.go index c151d856ddd2..b99918d1997c 100644 --- a/pkg/providers/pricing/zz_generated.pricing.go +++ b/pkg/providers/pricing/zz_generated.pricing.go @@ -18,9 +18,9 @@ package pricing import "time" -// generated at 2023-07-24T13:07:32Z for us-east-1 +// generated at 2023-08-08T13:58:38Z for us-east-1 -var initialPriceUpdate, _ = time.Parse(time.RFC3339, "2023-07-24T13:07:32Z") +var initialPriceUpdate, _ = time.Parse(time.RFC3339, "2023-08-08T13:58:38Z") var initialOnDemandPrices = map[string]map[string]float64{} func init() { @@ -85,6 +85,9 @@ func init() { "c7g.12xlarge": 1.740000, "c7g.16xlarge": 2.320000, "c7g.2xlarge": 0.290000, "c7g.4xlarge": 0.580000, "c7g.8xlarge": 1.160000, "c7g.large": 0.072500, "c7g.medium": 0.036300, "c7g.metal": 2.320000, "c7g.xlarge": 0.145000, + // c7gd family + "c7gd.12xlarge": 2.177300, "c7gd.16xlarge": 2.903000, "c7gd.2xlarge": 0.362900, "c7gd.4xlarge": 0.725800, + "c7gd.8xlarge": 1.451500, "c7gd.large": 0.090700, "c7gd.medium": 0.045400, "c7gd.xlarge": 0.181400, // c7gn family "c7gn.12xlarge": 2.995200, "c7gn.16xlarge": 3.993600, "c7gn.2xlarge": 0.499200, "c7gn.4xlarge": 0.998400, "c7gn.8xlarge": 1.996800, "c7gn.large": 0.124800, "c7gn.medium": 0.062400, "c7gn.xlarge": 0.249600, @@ -213,6 +216,16 @@ func init() { "m7g.12xlarge": 1.958400, "m7g.16xlarge": 2.611200, "m7g.2xlarge": 0.326400, "m7g.4xlarge": 0.652800, "m7g.8xlarge": 1.305600, "m7g.large": 0.081600, "m7g.medium": 0.040800, "m7g.metal": 2.611200, "m7g.xlarge": 0.163200, + // m7gd family + "m7gd.12xlarge": 2.562800, "m7gd.16xlarge": 3.417100, "m7gd.2xlarge": 0.427100, "m7gd.4xlarge": 0.854300, + "m7gd.8xlarge": 1.708600, "m7gd.large": 0.106800, "m7gd.medium": 0.053400, "m7gd.xlarge": 0.213600, + // m7i-flex family + "m7i-flex.2xlarge": 0.383040, "m7i-flex.4xlarge": 0.766080, "m7i-flex.8xlarge": 1.532160, + "m7i-flex.large": 0.095760, "m7i-flex.xlarge": 0.191520, + // m7i family + "m7i.12xlarge": 2.419200, "m7i.16xlarge": 3.225600, "m7i.24xlarge": 4.838400, "m7i.2xlarge": 0.403200, + "m7i.48xlarge": 9.676800, "m7i.4xlarge": 0.806400, "m7i.8xlarge": 1.612800, "m7i.large": 0.100800, + "m7i.xlarge": 0.201600, // p2 family "p2.16xlarge": 14.400000, "p2.8xlarge": 7.200000, "p2.xlarge": 0.900000, // p3 family @@ -223,6 +236,8 @@ func init() { "p4d.24xlarge": 32.772600, // p4de family "p4de.24xlarge": 40.965750, + // p5 family + "p5.48xlarge": 98.320000, // r3 family "r3.2xlarge": 0.665000, "r3.4xlarge": 1.330000, "r3.8xlarge": 2.660000, "r3.large": 0.166000, "r3.xlarge": 0.333000, @@ -287,6 +302,9 @@ func init() { "r7g.12xlarge": 2.570400, "r7g.16xlarge": 3.427200, "r7g.2xlarge": 0.428400, "r7g.4xlarge": 0.856800, "r7g.8xlarge": 1.713600, "r7g.large": 0.107100, "r7g.medium": 0.053600, "r7g.metal": 3.427200, "r7g.xlarge": 0.214200, + // r7gd family + "r7gd.12xlarge": 3.265900, "r7gd.16xlarge": 4.354600, "r7gd.2xlarge": 0.544300, "r7gd.4xlarge": 1.088600, + "r7gd.8xlarge": 2.177300, "r7gd.large": 0.136100, "r7gd.medium": 0.068000, "r7gd.xlarge": 0.272200, // t1 family "t1.micro": 0.020000, // t2 family From 05435d8ef21c782ca98b1cc3dc00eb8914058d0a Mon Sep 17 00:00:00 2001 From: Todd Neal Date: Tue, 8 Aug 2023 15:26:42 -0500 Subject: [PATCH 4/4] update instance types doc --- .../en/preview/concepts/instance-types.md | 1054 ++++++++++++++++- 1 file changed, 1010 insertions(+), 44 deletions(-) diff --git a/website/content/en/preview/concepts/instance-types.md b/website/content/en/preview/concepts/instance-types.md index c2fc2e001778..d7be73cd6ede 100644 --- a/website/content/en/preview/concepts/instance-types.md +++ b/website/content/en/preview/concepts/instance-types.md @@ -3428,6 +3428,207 @@ below are the resources available with some assumptions and after the instance o |memory|112720Mi| |pods|737| |vpc.amazonaws.com/pod-eni|107| +## c7gd Family +### `c7gd.medium` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|1| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|59| + |karpenter.k8s.aws/instance-memory|2048| + |karpenter.k8s.aws/instance-pods|8| + |karpenter.k8s.aws/instance-size|medium| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.medium| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|940m| + |ephemeral-storage|17Gi| + |memory|1392Mi| + |pods|8| + |vpc.amazonaws.com/pod-eni|4| +### `c7gd.large` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|2| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|118| + |karpenter.k8s.aws/instance-memory|4096| + |karpenter.k8s.aws/instance-pods|29| + |karpenter.k8s.aws/instance-size|large| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.large| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|1930m| + |ephemeral-storage|17Gi| + |memory|3055Mi| + |pods|29| + |vpc.amazonaws.com/pod-eni|9| +### `c7gd.xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|237| + |karpenter.k8s.aws/instance-memory|8192| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|6525Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|18| +### `c7gd.2xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|8| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|474| + |karpenter.k8s.aws/instance-memory|16384| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|2xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.2xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|7910m| + |ephemeral-storage|17Gi| + |memory|14103Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|38| +### `c7gd.4xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|16| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|950| + |karpenter.k8s.aws/instance-memory|32768| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|4xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.4xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|15890m| + |ephemeral-storage|17Gi| + |memory|27322Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `c7gd.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|1900| + |karpenter.k8s.aws/instance-memory|65536| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|57632Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `c7gd.12xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|48| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|2850| + |karpenter.k8s.aws/instance-memory|98304| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|12xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.12xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|47810m| + |ephemeral-storage|17Gi| + |memory|87943Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `c7gd.16xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|c| + |karpenter.k8s.aws/instance-cpu|64| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|c7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|3800| + |karpenter.k8s.aws/instance-memory|131072| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|16xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|c7gd.16xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|63770m| + |ephemeral-storage|17Gi| + |memory|112720Mi| + |pods|737| + |vpc.amazonaws.com/pod-eni|107| ## c7gn Family ### `c7gn.medium` #### Labels @@ -3453,6 +3654,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|1392Mi| |pods|8| + |vpc.amazonaws.com/pod-eni|4| ### `c7gn.large` #### Labels | Label | Value | @@ -3477,6 +3679,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|3055Mi| |pods|29| + |vpc.amazonaws.com/pod-eni|9| ### `c7gn.xlarge` #### Labels | Label | Value | @@ -3501,6 +3704,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|6525Mi| |pods|58| + |vpc.amazonaws.com/pod-eni|18| ### `c7gn.2xlarge` #### Labels | Label | Value | @@ -3525,6 +3729,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|14103Mi| |pods|58| + |vpc.amazonaws.com/pod-eni|38| ### `c7gn.4xlarge` #### Labels | Label | Value | @@ -3549,6 +3754,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|27322Mi| |pods|234| + |vpc.amazonaws.com/pod-eni|54| ### `c7gn.8xlarge` #### Labels | Label | Value | @@ -3573,6 +3779,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|57632Mi| |pods|234| + |vpc.amazonaws.com/pod-eni|54| ### `c7gn.12xlarge` #### Labels | Label | Value | @@ -3597,6 +3804,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|87943Mi| |pods|234| + |vpc.amazonaws.com/pod-eni|54| ### `c7gn.16xlarge` #### Labels | Label | Value | @@ -3621,6 +3829,7 @@ below are the resources available with some assumptions and after the instance o |ephemeral-storage|17Gi| |memory|112720Mi| |pods|737| + |vpc.amazonaws.com/pod-eni|107| ## d2 Family ### `d2.xlarge` #### Labels @@ -10529,69 +10738,594 @@ below are the resources available with some assumptions and after the instance o |memory|233962Mi| |pods|737| |vpc.amazonaws.com/pod-eni|107| -## p2 Family -### `p2.xlarge` +## m7gd Family +### `m7gd.medium` #### Labels | Label | Value | |--|--| - |karpenter.k8s.aws/instance-category|p| - |karpenter.k8s.aws/instance-cpu|4| - |karpenter.k8s.aws/instance-encryption-in-transit-supported|false| - |karpenter.k8s.aws/instance-family|p2| - |karpenter.k8s.aws/instance-generation|2| - |karpenter.k8s.aws/instance-gpu-count|1| - |karpenter.k8s.aws/instance-gpu-manufacturer|nvidia| - |karpenter.k8s.aws/instance-gpu-memory|12288| - |karpenter.k8s.aws/instance-gpu-name|k80| - |karpenter.k8s.aws/instance-hypervisor|xen| - |karpenter.k8s.aws/instance-memory|62464| - |karpenter.k8s.aws/instance-pods|58| - |karpenter.k8s.aws/instance-size|xlarge| - |kubernetes.io/arch|amd64| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|1| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|59| + |karpenter.k8s.aws/instance-memory|4096| + |karpenter.k8s.aws/instance-pods|8| + |karpenter.k8s.aws/instance-size|medium| + |kubernetes.io/arch|arm64| |kubernetes.io/os|linux| - |node.kubernetes.io/instance-type|p2.xlarge| + |node.kubernetes.io/instance-type|m7gd.medium| #### Resources | Resource | Quantity | |--|--| - |cpu|3920m| + |cpu|940m| |ephemeral-storage|17Gi| - |memory|56786Mi| - |nvidia.com/gpu|1| - |pods|58| -### `p2.8xlarge` + |memory|3286Mi| + |pods|8| + |vpc.amazonaws.com/pod-eni|4| +### `m7gd.large` #### Labels | Label | Value | |--|--| - |karpenter.k8s.aws/instance-category|p| - |karpenter.k8s.aws/instance-cpu|32| - |karpenter.k8s.aws/instance-encryption-in-transit-supported|false| - |karpenter.k8s.aws/instance-family|p2| - |karpenter.k8s.aws/instance-generation|2| - |karpenter.k8s.aws/instance-gpu-count|8| - |karpenter.k8s.aws/instance-gpu-manufacturer|nvidia| - |karpenter.k8s.aws/instance-gpu-memory|12288| - |karpenter.k8s.aws/instance-gpu-name|k80| - |karpenter.k8s.aws/instance-hypervisor|xen| - |karpenter.k8s.aws/instance-memory|499712| - |karpenter.k8s.aws/instance-pods|234| - |karpenter.k8s.aws/instance-size|8xlarge| - |kubernetes.io/arch|amd64| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|2| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|118| + |karpenter.k8s.aws/instance-memory|8192| + |karpenter.k8s.aws/instance-pods|29| + |karpenter.k8s.aws/instance-size|large| + |kubernetes.io/arch|arm64| |kubernetes.io/os|linux| - |node.kubernetes.io/instance-type|p2.8xlarge| + |node.kubernetes.io/instance-type|m7gd.large| #### Resources | Resource | Quantity | |--|--| - |cpu|31850m| + |cpu|1930m| |ephemeral-storage|17Gi| - |memory|459304Mi| - |nvidia.com/gpu|8| - |pods|234| -### `p2.16xlarge` + |memory|6844Mi| + |pods|29| + |vpc.amazonaws.com/pod-eni|9| +### `m7gd.xlarge` #### Labels | Label | Value | |--|--| - |karpenter.k8s.aws/instance-category|p| - |karpenter.k8s.aws/instance-cpu|64| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|237| + |karpenter.k8s.aws/instance-memory|16384| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|14103Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|18| +### `m7gd.2xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|8| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|474| + |karpenter.k8s.aws/instance-memory|32768| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|2xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.2xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|7910m| + |ephemeral-storage|17Gi| + |memory|29258Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|38| +### `m7gd.4xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|16| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|950| + |karpenter.k8s.aws/instance-memory|65536| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|4xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.4xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|15890m| + |ephemeral-storage|17Gi| + |memory|57632Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `m7gd.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|1900| + |karpenter.k8s.aws/instance-memory|131072| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|118253Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `m7gd.12xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|48| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|2850| + |karpenter.k8s.aws/instance-memory|196608| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|12xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.12xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|47810m| + |ephemeral-storage|17Gi| + |memory|178874Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `m7gd.16xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|64| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|3800| + |karpenter.k8s.aws/instance-memory|262144| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|16xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7gd.16xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|63770m| + |ephemeral-storage|17Gi| + |memory|233962Mi| + |pods|737| + |vpc.amazonaws.com/pod-eni|107| +## m7i Family +### `m7i.large` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|2| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|8192| + |karpenter.k8s.aws/instance-pods|29| + |karpenter.k8s.aws/instance-size|large| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.large| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|1930m| + |ephemeral-storage|17Gi| + |memory|6903Mi| + |pods|29| +### `m7i.xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|16384| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|14162Mi| + |pods|58| +### `m7i.2xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|8| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|32768| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|2xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.2xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|7910m| + |ephemeral-storage|17Gi| + |memory|29317Mi| + |pods|58| +### `m7i.4xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|16| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|65536| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|4xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.4xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|15890m| + |ephemeral-storage|17Gi| + |memory|57691Mi| + |pods|234| +### `m7i.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|131072| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|118312Mi| + |pods|234| +### `m7i.12xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|48| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|196608| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|12xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.12xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|47810m| + |ephemeral-storage|17Gi| + |memory|178933Mi| + |pods|234| +### `m7i.16xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|64| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|262144| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|16xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.16xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|63770m| + |ephemeral-storage|17Gi| + |memory|234021Mi| + |pods|737| +### `m7i.24xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|96| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|393216| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|24xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.24xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|95690m| + |ephemeral-storage|17Gi| + |memory|355262Mi| + |pods|737| +### `m7i.48xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|192| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|786432| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|48xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i.48xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|191450m| + |ephemeral-storage|17Gi| + |memory|718987Mi| + |pods|737| +## m7i-flex Family +### `m7i-flex.large` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|2| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i-flex| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|8192| + |karpenter.k8s.aws/instance-pods|29| + |karpenter.k8s.aws/instance-size|large| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i-flex.large| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|1930m| + |ephemeral-storage|17Gi| + |memory|6903Mi| + |pods|29| +### `m7i-flex.xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i-flex| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|16384| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i-flex.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|14162Mi| + |pods|58| +### `m7i-flex.2xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|8| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i-flex| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|32768| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|2xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i-flex.2xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|7910m| + |ephemeral-storage|17Gi| + |memory|29317Mi| + |pods|58| +### `m7i-flex.4xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|16| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i-flex| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|65536| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|4xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i-flex.4xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|15890m| + |ephemeral-storage|17Gi| + |memory|57691Mi| + |pods|234| +### `m7i-flex.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|m| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|m7i-flex| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-memory|131072| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|m7i-flex.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|118312Mi| + |pods|234| +## p2 Family +### `p2.xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|p| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|false| + |karpenter.k8s.aws/instance-family|p2| + |karpenter.k8s.aws/instance-generation|2| + |karpenter.k8s.aws/instance-gpu-count|1| + |karpenter.k8s.aws/instance-gpu-manufacturer|nvidia| + |karpenter.k8s.aws/instance-gpu-memory|12288| + |karpenter.k8s.aws/instance-gpu-name|k80| + |karpenter.k8s.aws/instance-hypervisor|xen| + |karpenter.k8s.aws/instance-memory|62464| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|p2.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|56786Mi| + |nvidia.com/gpu|1| + |pods|58| +### `p2.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|p| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|false| + |karpenter.k8s.aws/instance-family|p2| + |karpenter.k8s.aws/instance-generation|2| + |karpenter.k8s.aws/instance-gpu-count|8| + |karpenter.k8s.aws/instance-gpu-manufacturer|nvidia| + |karpenter.k8s.aws/instance-gpu-memory|12288| + |karpenter.k8s.aws/instance-gpu-name|k80| + |karpenter.k8s.aws/instance-hypervisor|xen| + |karpenter.k8s.aws/instance-memory|499712| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|p2.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|459304Mi| + |nvidia.com/gpu|8| + |pods|234| +### `p2.16xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|p| + |karpenter.k8s.aws/instance-cpu|64| |karpenter.k8s.aws/instance-encryption-in-transit-supported|false| |karpenter.k8s.aws/instance-family|p2| |karpenter.k8s.aws/instance-generation|2| @@ -10766,6 +11500,37 @@ below are the resources available with some assumptions and after the instance o |nvidia.com/gpu|8| |pods|737| |vpc.amazonaws.com/pod-eni|62| +## p5 Family +### `p5.48xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|p| + |karpenter.k8s.aws/instance-cpu|192| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|p5| + |karpenter.k8s.aws/instance-generation|5| + |karpenter.k8s.aws/instance-gpu-count|8| + |karpenter.k8s.aws/instance-gpu-manufacturer|nvidia| + |karpenter.k8s.aws/instance-gpu-memory|81920| + |karpenter.k8s.aws/instance-gpu-name|h100| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|30400| + |karpenter.k8s.aws/instance-memory|2097152| + |karpenter.k8s.aws/instance-pods|100| + |karpenter.k8s.aws/instance-size|48xlarge| + |kubernetes.io/arch|amd64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|p5.48xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|191450m| + |ephemeral-storage|17Gi| + |memory|1938410Mi| + |nvidia.com/gpu|8| + |pods|100| + |vpc.amazonaws.com/pod-eni|120| ## r3 Family ### `r3.large` #### Labels @@ -14577,6 +15342,207 @@ below are the resources available with some assumptions and after the instance o |memory|476445Mi| |pods|737| |vpc.amazonaws.com/pod-eni|107| +## r7gd Family +### `r7gd.medium` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|1| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|59| + |karpenter.k8s.aws/instance-memory|8192| + |karpenter.k8s.aws/instance-pods|8| + |karpenter.k8s.aws/instance-size|medium| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.medium| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|940m| + |ephemeral-storage|17Gi| + |memory|7075Mi| + |pods|8| + |vpc.amazonaws.com/pod-eni|4| +### `r7gd.large` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|2| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|118| + |karpenter.k8s.aws/instance-memory|16384| + |karpenter.k8s.aws/instance-pods|29| + |karpenter.k8s.aws/instance-size|large| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.large| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|1930m| + |ephemeral-storage|17Gi| + |memory|14422Mi| + |pods|29| + |vpc.amazonaws.com/pod-eni|9| +### `r7gd.xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|4| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|237| + |karpenter.k8s.aws/instance-memory|32768| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|3920m| + |ephemeral-storage|17Gi| + |memory|29258Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|18| +### `r7gd.2xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|8| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|474| + |karpenter.k8s.aws/instance-memory|65536| + |karpenter.k8s.aws/instance-pods|58| + |karpenter.k8s.aws/instance-size|2xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.2xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|7910m| + |ephemeral-storage|17Gi| + |memory|59568Mi| + |pods|58| + |vpc.amazonaws.com/pod-eni|38| +### `r7gd.4xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|16| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|950| + |karpenter.k8s.aws/instance-memory|131072| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|4xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.4xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|15890m| + |ephemeral-storage|17Gi| + |memory|118253Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `r7gd.8xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|32| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|1900| + |karpenter.k8s.aws/instance-memory|196608| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|8xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.8xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|31850m| + |ephemeral-storage|17Gi| + |memory|178874Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `r7gd.12xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|48| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|2850| + |karpenter.k8s.aws/instance-memory|262144| + |karpenter.k8s.aws/instance-pods|234| + |karpenter.k8s.aws/instance-size|12xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.12xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|47810m| + |ephemeral-storage|17Gi| + |memory|239495Mi| + |pods|234| + |vpc.amazonaws.com/pod-eni|54| +### `r7gd.16xlarge` +#### Labels + | Label | Value | + |--|--| + |karpenter.k8s.aws/instance-category|r| + |karpenter.k8s.aws/instance-cpu|64| + |karpenter.k8s.aws/instance-encryption-in-transit-supported|true| + |karpenter.k8s.aws/instance-family|r7gd| + |karpenter.k8s.aws/instance-generation|7| + |karpenter.k8s.aws/instance-hypervisor|nitro| + |karpenter.k8s.aws/instance-local-nvme|3800| + |karpenter.k8s.aws/instance-memory|524288| + |karpenter.k8s.aws/instance-pods|737| + |karpenter.k8s.aws/instance-size|16xlarge| + |kubernetes.io/arch|arm64| + |kubernetes.io/os|linux| + |node.kubernetes.io/instance-type|r7gd.16xlarge| +#### Resources + | Resource | Quantity | + |--|--| + |cpu|63770m| + |ephemeral-storage|17Gi| + |memory|476445Mi| + |pods|737| + |vpc.amazonaws.com/pod-eni|107| ## t1 Family ### `t1.micro` #### Labels