diff --git a/nodeup/pkg/model/kubelet.go b/nodeup/pkg/model/kubelet.go index 88c28db5f3..58b74283e1 100644 --- a/nodeup/pkg/model/kubelet.go +++ b/nodeup/pkg/model/kubelet.go @@ -20,7 +20,6 @@ import ( "fmt" "path" "path/filepath" - "strings" "k8s.io/kops/pkg/model/components" @@ -440,7 +439,7 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro instanceTypeName, err := metadata.GetMetadata("instance-type") if err != nil { // Otherwise, fall back to the Instance Group spec. - instanceTypeName = strings.Split(b.InstanceGroup.Spec.MachineType, ",")[0] + instanceTypeName = *b.NodeupConfig.DefaultMachineType } region, err := awsup.FindRegion(b.Cluster) diff --git a/pkg/apis/nodeup/config.go b/pkg/apis/nodeup/config.go index 924e44cd1a..758bac4dfc 100644 --- a/pkg/apis/nodeup/config.go +++ b/pkg/apis/nodeup/config.go @@ -17,6 +17,8 @@ limitations under the License. package nodeup import ( + "strings" + "k8s.io/kops/pkg/apis/kops" "k8s.io/kops/pkg/nodelabels" "k8s.io/kops/upup/pkg/fi" @@ -51,6 +53,8 @@ type Config struct { // Manifests for running etcd EtcdManifests []string `json:"etcdManifests,omitempty"` + // DefaultMachineType is the first-listed instance machine type, used if querying instance metadata fails. + DefaultMachineType *string `json:",omitempty"` // StaticManifests describes generic static manifests // Using this allows us to keep complex logic out of nodeup StaticManifests []*StaticManifest `json:"staticManifests,omitempty"` @@ -119,5 +123,9 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) *Config config.KubeletConfig.Taints = append(config.KubeletConfig.Taints, instanceGroup.Spec.Taints...) + if cluster.Spec.Networking != nil && cluster.Spec.Networking.AmazonVPC != nil { + config.DefaultMachineType = fi.String(strings.Split(instanceGroup.Spec.MachineType, ",")[0]) + } + return &config }