diff --git a/hack/machine_types/BUILD.bazel b/hack/machine_types/BUILD.bazel index 8c93f7bceb..7cac3d58e1 100644 --- a/hack/machine_types/BUILD.bazel +++ b/hack/machine_types/BUILD.bazel @@ -7,6 +7,7 @@ go_library( visibility = ["//visibility:private"], deps = [ "//upup/pkg/fi/cloudup/awsup:go_default_library", + "//vendor/github.com/aws/amazon-vpc-cni-k8s/pkg/awsutils:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/awserr:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library", diff --git a/hack/machine_types/machine_types.go b/hack/machine_types/machine_types.go index 93fafef09b..5aa3e48679 100644 --- a/hack/machine_types/machine_types.go +++ b/hack/machine_types/machine_types.go @@ -27,6 +27,7 @@ import ( "strconv" "strings" + "github.com/aws/amazon-vpc-cni-k8s/pkg/awsutils" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" "github.com/aws/aws-sdk-go/aws/session" @@ -195,6 +196,14 @@ func run() error { machine.ECU = stringToFloat32(attributes["ecu"]) } + // AWS VPC CNI plugin-specific maximum pod calculation based on: + // https://github.com/aws/amazon-vpc-cni-k8s/blob/f52ad45/README.md + enisPerInstance, enisOK := awsutils.InstanceENIsAvailable[attributes["instanceType"]] + ipsPerENI, ipsOK := awsutils.InstanceIPsAvailable[attributes["instanceType"]] + if enisOK && ipsOK { + machine.MaxPods = enisPerInstance*(int(ipsPerENI)-1) + 2 + } + machines = append(machines, machine) family := strings.Split(attributes["instanceType"], ".")[0] @@ -254,7 +263,8 @@ func run() error { MemoryGB: %v, ECU: %v, Cores: %v, - `, m.Name, m.MemoryGB, ecu, m.Cores) + MaxPods: %v, + `, m.Name, m.MemoryGB, ecu, m.Cores, m.MaxPods) output = output + body // Avoid awkward []int(nil) syntax diff --git a/upup/pkg/fi/cloudup/awsup/machine_types.go b/upup/pkg/fi/cloudup/awsup/machine_types.go index 4ff4546029..c32ff3b3fc 100644 --- a/upup/pkg/fi/cloudup/awsup/machine_types.go +++ b/upup/pkg/fi/cloudup/awsup/machine_types.go @@ -33,6 +33,7 @@ type AWSMachineTypeInfo struct { EphemeralDisks []int Burstable bool GPU bool + MaxPods int } type EphemeralDevice struct {