Repository: kubernetes/minikube
Pull request #15390 (2022-11-21 23:27:32)

Create kubeadm constants entry for all versions
**Problem:**
Kubernetes bumped the version of `etcd` in versions `v1.25.4`, `v1.24.8`, and `v1.23.14`. This is the first time we've experienced Kubernetes bumping an image version in the middle of a minor release, but based on [Two possible data inconsistency issues in etcd v3.4.[20-21] and v3.5](https://groups.google.com/a/kubernetes.io/g/dev/c/sEVopPxKPDo/m/9ME3CzicBwAJ) this likely won't be the last.

This created a problem for minikube as we've set the image versions per minor version, but with the version bump mentioned above this will no longer work.

**Solution:**
I have updated the kubeadm constants logic to generate an entry for all versions to resolve this. This will result in many more entries, but this file is completely generated so this shouldn't be an issue. I updated the logic to pull the version from Kuberenetes GitHub releases page as the existing logic only checked newest, stable, and oldest, which wouldn't work for this new flow.

**Post merge tasks:**

- [ ] Delete `v1.26.0-rc.0`, `v1.25.4`, `v1.24.8`, and `v1.23.14` preloads and regenerate them


Patch:
diff --git a/go.mod b/go.mod
index 149d160c8..7a8a0e190 100644
--- a/go.mod
+++ b/go.mod
@@ -89,7 +89,7 @@ require (
 	k8s.io/cluster-bootstrap v0.0.0
 	k8s.io/component-base v0.25.4
 	k8s.io/klog/v2 v2.80.1
-	k8s.io/kubectl v0.25.4
+	k8s.io/kubectl v0.25.3
 	k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed
 	libvirt.org/go/libvirt v1.8009.0
 	sigs.k8s.io/sig-storage-lib-external-provisioner/v6 v6.3.0
diff --git a/go.sum b/go.sum
index 58a383306..f0ef6ee18 100644
--- a/go.sum
+++ b/go.sum
@@ -1764,8 +1764,8 @@ k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAG
 k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA=
 k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU=
-k8s.io/kubectl v0.25.4 h1:O3OA1z4V1ZyvxCvScjq0pxAP7ABgznr8UvnVObgI6Dc=
-k8s.io/kubectl v0.25.4/go.mod h1:CKMrQ67Bn2YCP26tZStPQGq62zr9pvzEf65A0navm8k=
+k8s.io/kubectl v0.25.3 h1:HnWJziEtmsm4JaJiKT33kG0kadx68MXxUE8UEbXnN4U=
+k8s.io/kubectl v0.25.3/go.mod h1:glU7PiVj/R6Ud4A9FJdTcJjyzOtCJyc0eO7Mrbh3jlI=
 k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk=
 k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
diff --git a/hack/update/kubeadm_constants/update_kubeadm_constants.go b/hack/update/kubeadm_constants/update_kubeadm_constants.go
index 88be4b444..cadb7fdba 100644
--- a/hack/update/kubeadm_constants/update_kubeadm_constants.go
+++ b/hack/update/kubeadm_constants/update_kubeadm_constants.go
@@ -19,8 +19,6 @@ package main
 import (
 	"bytes"
 	"context"
-	"errors"
-	"flag"
 	"fmt"
 	"io"
 	"net/http"
@@ -30,6 +28,7 @@ import (
 	"text/template"
 	"time"
 
+	"github.com/google/go-github/v43/github"
 	"golang.org/x/mod/semver"
 	"k8s.io/klog/v2"
 	"k8s.io/minikube/hack/update"
@@ -57,28 +56,39 @@ type Data struct {
 }
 
 func main() {
+	minver := constants.OldestKubernetesVersion
 
-	inputVersion := flag.Lookup("kubernetes-version").Value.String()
+	releases := []string{}
 
-	imageVersions := make([]string, 0)
+	ghc := github.NewClient(nil)
 
-	// set a context with defined timeout
-	ctx, cancel := context.WithTimeout(context.Background(), cxTimeout)
-	defer cancel()
-	if inputVersion == "latest" {
-		stableImageVersion, latestImageVersion, edgeImageVersion, err := getK8sVersions(ctx, "kubernetes", "kubernetes")
+	opts := &github.ListOptions{PerPage: 100}
+	for {
+		rls, resp, err := ghc.Repositories.ListReleases(context.Background(), "kubernetes", "kubernetes", opts)
 		if err != nil {
 			klog.Fatal(err)
 		}
-		uniqueMM := filterLatestUniqueMM([]string{stableImageVersion, latestImageVersion, edgeImageVersion})
-		imageVersions = append(imageVersions, uniqueMM...)
-	} else if semver.IsValid(inputVersion) {
-		imageVersions = append(imageVersions, inputVersion)
-	} else {
-		klog.Fatal(errors.New("invalid version"))
+		for _, rl := range rls {
+			ver := rl.GetTagName()
+			if !semver.IsValid(ver) {
+				continue
+			}
+			// skip out-of-range versions
+			if minver != "" && semver.Compare(minver, ver) == 1 {
+				continue
+			}
+			releases = append([]string{ver}, releases...)
+		}
+		if resp.NextPage == 0 {
+			break
+		}
+		opts.Page = resp.NextPage
 	}
 
-	for _, imageVersion := range imageVersions {
+	for _, imageVersion := range releases {
+		if _, ok := constants.KubeadmImages[imageVersion]; ok {
+			continue
+		}
 		imageMapString, err := getKubeadmImagesMapString(imageVersion)
 		if err != nil {
 			klog.Fatalln(err)
@@ -91,39 +101,13 @@ func main() {
 			},
 		}
 
-		majorMinorVersion := semver.MajorMinor(imageVersion)
-
-		if _, ok := constants.KubeadmImages[majorMinorVersion]; !ok {
-			data = Data{ImageMap: imageMapString}
-			schema[minikubeConstantsFilePath].Replace[`KubeadmImages = .*`] =
-				`KubeadmImages = map[string]map[string]string{ {{.ImageMap}}`
-		} else {
-			data = Data{ImageMap: strings.TrimLeft(imageMapString, "\n")}
-			versionIdentifier := fmt.Sprintf(`"%s": {[^}]+},`, majorMinorVersion)
-			schema[minikubeConstantsFilePath].Replace[versionIdentifier] = "{{.ImageMap}}"
-		}
-
+		data = Data{ImageMap: imageMapString}
+		schema[minikubeConstantsFilePath].Replace[`KubeadmImages = .*`] =
+			`KubeadmImages = map[string]map[string]string{ {{.ImageMap}}`
 		update.Apply(schema, data)
 	}
 }
 
-func filterLatestUniqueMM(versions []string) []string {
-	if len(versions) < 2 {
-		return versions
-	}
-	semver.Sort(versions)
-	uniqueMMVersions := []string{}
-	last := versions[0]
-	for _, ver := range versions {
-		if semver.MajorMinor(last) != semver.MajorMinor(ver) {
-			uniqueMMVersions = append(uniqueMMVersions, last)
-		}
-		last = ver
-	}
-	uniqueMMVersions = append(uniqueMMVersions, last)
-	return uniqueMMVersions
-}
-
 func getKubeadmImagesMapString(version string) (string, error) {
 	url := fmt.Sprintf(kubeadmReleaseURL, version)
 	fileName := fmt.Sprintf(kubeadmBinaryName, version)
@@ -149,8 +133,7 @@ func getKubeadmImagesMapString(version string) (string, error) {
 
 func formatKubeadmImageList(version, data string) (string, error) {
 	templateData := make(map[string]map[string]string)
-	majorMinorVersion := semver.MajorMinor(version)
-	templateData[majorMinorVersion] = make(map[string]string)
+	templateData[version] = make(map[string]string)
 	lines := strings.Split(data, "\n")
 	for _, line := range lines {
 		imageTag := strings.Split(line, ":")
@@ -161,7 +144,7 @@ func formatKubeadmImageList(version, data string) (string, error) {
 		imageName := strings.Split(imageTag[0], "/")
 		imageTag[0] = strings.Join(imageName[1:], "/")
 		if !isKubeImage(imageTag[0]) {
-			templateData[majorMinorVersion][imageTag[0]] = imageTag[1]
+			templateData[version][imageTag[0]] = imageTag[1]
 		}
 	}
 
@@ -221,18 +204,3 @@ func executeCommand(command string, args ...string) (string, error) {
 	}
 	return string(output), nil
 }
-
-// getK8sVersion returns Kubernetes versions.
-func getK8sVersions(ctx context.Context, owner, repo string) (stable, latest, edge string, err error) {
-	// get Kubernetes versions from GitHub Releases
-	stable, latest, edge, err = update.GHReleases(ctx, owner, repo)
-	if err != nil {
-		return "", "", "", err
-	}
-
-	if !semver.IsValid(stable) || !semver.IsValid(latest) || !semver.IsValid(edge) {
-		return "", "", "", fmt.Errorf("invalid release obtained stable : %s, latest : %s, edge: %s", stable, latest, edge)
-	}
-
-	return stable, latest, edge, nil
-}
diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go
index 7b8c2dcc0..4237d4cac 100644
--- a/pkg/minikube/bootstrapper/images/images.go
+++ b/pkg/minikube/bootstrapper/images/images.go
@@ -44,15 +44,8 @@ func Pause(v semver.Version, mirror string) string {
 	// Should match `PauseVersion` in:
 	// https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go
 	// https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants_unix.go
-	pv := "3.6"
 	imageName := "pause"
-	majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor)
-
-	if pVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok {
-		pv = pVersion
-	} else {
-		pv = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), pv)
-	}
+	pv := imageVersion(v, mirror, imageName, "3.6")
 
 	return fmt.Sprintf("%s:%s", path.Join(kubernetesRepo(mirror, v), imageName), pv)
 }
@@ -118,17 +111,10 @@ func coreDNS(v semver.Version, mirror string) string {
 	// https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go
 
 	imageName := "coredns/coredns"
-	cv := "v1.8.6"
 	if semver.MustParseRange("<1.21.0-alpha.1")(v) {
 		imageName = "coredns"
 	}
-
-	majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor)
-	if cVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok {
-		cv = cVersion
-	} else {
-		cv = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), cv)
-	}
+	cv := imageVersion(v, mirror, imageName, "v1.8.6")
 
 	if mirror == constants.AliyunMirror {
 		imageName = "coredns"
@@ -142,18 +128,20 @@ func etcd(v semver.Version, mirror string) string {
 	// Note: changing this logic requires bumping the preload version
 	// Should match `DefaultEtcdVersion` in:
 	// https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/constants/constants.go
-	ev := "3.5.0-0"
 	imageName := "etcd"
-	majorMinorVersion := fmt.Sprintf("v%d.%d", v.Major, v.Minor)
-	if eVersion, ok := constants.KubeadmImages[majorMinorVersion][imageName]; ok {
-		ev = eVersion
-	} else {
-		ev = findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), ev)
-	}
+	ev := imageVersion(v, mirror, imageName, "3.5.0-0")
 
 	return fmt.Sprintf("%s:%s", path.Join(kubernetesRepo(mirror, v), imageName), ev)
 }
 
+func imageVersion(v semver.Version, mirror, imageName, defaultVersion string) string {
+	versionString := fmt.Sprintf("v%s", v.String())
+	if ver, ok := constants.KubeadmImages[versionString][imageName]; ok {
+		return ver
+	}
+	return findLatestTagFromRepository(fmt.Sprintf(tagURLTemplate, kubernetesRepo(mirror, v), imageName), defaultVersion)
+}
+
 // auxiliary returns images that are helpful for running minikube
 func auxiliary(mirror string) []string {
 	// Note: changing this list requires bumping the preload version
diff --git a/pkg/minikube/constants/constants_kubeadm_images.go b/pkg/minikube/constants/constants_kubeadm_images.go
index 3dbed2fcc..7d38daf2d 100644
--- a/pkg/minikube/constants/constants_kubeadm_images.go
+++ b/pkg/minikube/constants/constants_kubeadm_images.go
@@ -18,85 +18,1095 @@ package constants
 
 var (
 	KubeadmImages = map[string]map[string]string{
-		"v1.26": {
+		"v1.26.0-rc.0": {
 			"coredns/coredns": "v1.9.3",
 			"etcd":            "3.5.5-0",
+			"pause":           "3.9",
+		},
+		"v1.26.0-beta.0": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.8",
+		},
+		"v1.25.4": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.8",
+		},
+		"v1.24.8": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.7",
+		},
+		"v1.23.14": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.6",
+		},
+		"v1.22.16": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.26.0-alpha.3": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.8",
+		},
+		"v1.25.3": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.24.7": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.13": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.26.0-alpha.2": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.8",
+		},
+		"v1.25.2": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.24.6": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.12": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.15": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.26.0-alpha.1": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.5-0",
+			"pause":           "3.8",
+		},
+		"v1.25.1": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.24.5": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.11": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.14": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.25.0": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.24.4": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.10": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.13": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.25.0-rc.1": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.25.0-rc.0": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.8",
+		},
+		"v1.25.0-beta.0": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
 			"pause":           "3.8",
 		},
-		"v1.25": {
-			"coredns/coredns": "v1.9.3",
-			"etcd":            "3.5.4-0",
-			"pause":           "3.8",
+		"v1.25.0-alpha.3": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.7",
+		},
+		"v1.24.3": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.9": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.12": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.25.0-alpha.2": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.7",
+		},
+		"v1.23.8": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.11": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.25.0-alpha.1": {
+			"coredns/coredns": "v1.9.3",
+			"etcd":            "3.5.4-0",
+			"pause":           "3.7",
+		},
+		"v1.24.2": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.21.14": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.24.1": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.7": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.10": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.13": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.24.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.24.0-rc.1": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.24.0-rc.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.3-0",
+			"pause":           "3.7",
+		},
+		"v1.23.6": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.9": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.12": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.24.0-beta.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.7",
+		},
+		"v1.24.0-alpha.4": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.5": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.8": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.11": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.23.4": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.7": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.10": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.24.0-alpha.3": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.24.0-alpha.2": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.3": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.2": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.6": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.9": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.15": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.23.1": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.5": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.8": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.14": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.24.0-alpha.1": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.0-rc.1": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.0-rc.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.23.0-beta.0": {
+			"coredns/coredns": "v1.8.6",
+			"etcd":            "3.5.1-0",
+			"pause":           "3.6",
+		},
+		"v1.22.4": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.7": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.13": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.23.0-alpha.4": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.6",
+		},
+		"v1.22.3": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.6": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.12": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.16": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.23.0-alpha.3": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.6",
+		},
+		"v1.22.2": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.5": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.11": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.15": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.23.0-alpha.2": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.6",
+		},
+		"v1.23.0-alpha.1": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.22.1": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.4": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.10": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.14": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.22.0": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.22.0-rc.0": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.3": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.9": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.13": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.22.0-beta.2": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.22.0-beta.1": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-0",
+			"pause":           "3.5",
+		},
+		"v1.22.0-beta.0": {
+			"coredns/coredns": "v1.8.4",
+			"etcd":            "3.5.0-rc.0-0",
+			"pause":           "3.5",
+		},
+		"v1.21.2": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.8": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.12": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.20": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.22.0-alpha.3": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-3",
+			"pause":           "3.5",
+		},
+		"v1.22.0-alpha.2": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-3",
+			"pause":           "3.4.1",
+		},
+		"v1.21.1": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.7": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.11": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.19": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.22.0-alpha.1": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.6": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.10": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.18": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.21.0": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.21.0-rc.0": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.5": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.9": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.17": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.21.0-beta.1": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.21.0-beta.0": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.20.4": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.20.3": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.8": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.16": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.21.0-alpha.3": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.4.1",
+		},
+		"v1.21.0-alpha.2": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.2",
+		},
+		"v1.21.0-alpha.1": {
+			"coredns/coredns": "v1.8.0",
+			"etcd":            "3.4.13-0",
+			"pause":           "3.2",
+		},
+		"v1.20.2": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.7": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.15": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.17": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.20.1": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.19.6": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.14": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.16": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.19.5": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.13": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.15": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.20.0": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.20.0-rc.0": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.20.0-beta.2": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.12": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.19.4": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.17.14": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.20.0-beta.1": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.20.0-beta.0": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.20.0-alpha.3": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
+		},
+		"v1.18.10": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.13": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.19.3": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
 		},
-		"v1.24": {
-			"coredns/coredns": "v1.8.6",
-			"etcd":            "3.5.3-0",
-			"pause":           "3.7",
+		"v1.20.0-alpha.2": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
 		},
-		"v1.23": {
-			"coredns/coredns": "v1.8.6",
-			"etcd":            "3.5.1-0",
-			"pause":           "3.6",
+		"v1.20.0-alpha.1": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
 		},
-		"v1.22": {
-			"coredns/coredns": "v1.8.4",
-			"etcd":            "3.5.0-0",
-			"pause":           "3.5",
+		"v1.19.2": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.13-0",
+			"pause":   "3.2",
 		},
-		"v1.21": {
-			"coredns/coredns": "v1.8.0",
-			"etcd":            "3.4.13-0",
-			"pause":           "3.4.1",
+		"v1.18.9": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
 		},
-		"v1.20": {
+		"v1.17.12": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.19.1": {
 			"coredns": "1.7.0",
 			"etcd":    "3.4.13-0",
 			"pause":   "3.2",
 		},
-		"v1.19": {
+		"v1.16.15": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.19.0": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.9-1",
+			"pause":   "3.2",
+		},
+		"v1.18.8": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.11": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.14": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.19.0-rc.4": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.9-1",
+			"pause":   "3.2",
+		},
+		"v1.19.0-rc.3": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.9-1",
+			"pause":   "3.2",
+		},
+		"v1.19.0-rc.2": {
 			"coredns": "1.7.0",
 			"etcd":    "3.4.9-1",
 			"pause":   "3.2",
 		},
-		"v1.18": {
+		"v1.18.6": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.9": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.13": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.19.0-rc.1": {
+			"coredns": "1.7.0",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.18.5": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.8": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.12": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.18.5-rc.1": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.8-rc.1": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.12-rc.1": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.18.4": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.7": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.11": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.19.0-beta.2": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.19.0-beta.1": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.18.3": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.6": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.10": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.19.0-beta.0": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.19.0-alpha.3": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.19.0-alpha.2": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.7-0",
+			"pause":   "3.2",
+		},
+		"v1.18.2": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.5": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.9": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.18.1": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.19.0-alpha.1": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.18.0": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.18.0-rc.1": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.17.4": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.8": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.18.0-beta.2": {
+			"coredns": "1.6.7",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.2",
+		},
+		"v1.18.0-beta.1": {
 			"coredns": "1.6.7",
 			"etcd":    "3.4.3-0",
 			"pause":   "3.2",
 		},
-		"v1.17": {
+		"v1.18.0-alpha.5": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.3": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.7": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.18.0-alpha.3": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.18.0-alpha.2": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.2": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.6": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.16.5": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.17.1": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.18.0-alpha.1": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.16.4": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0-rc.2": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0-rc.1": {
+			"coredns": "1.6.5",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0-beta.2": {
 			"coredns": "1.6.5",
 			"etcd":    "3.4.3-0",
 			"pause":   "3.1",
 		},
-		"v1.16": {
+		"v1.16.3": {
 			"coredns": "1.6.2",
 			"etcd":    "3.3.15-0",
 			"pause":   "3.1",
 		},
-		"v1.15": {
-			"coredns": "1.3.1",
-			"etcd":    "3.3.10",
+		"v1.17.0-beta.1": {
+			"coredns": "1.6.2",
+			"etcd":    "3.4.3-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0-alpha.3": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.17-0",
+			"pause":   "3.1",
+		},
+		"v1.17.0-alpha.2": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
 			"pause":   "3.1",
 		},
-		"v1.14": {
-			"coredns": "1.3.1",
-			"etcd":    "3.3.10",
+		"v1.16.2": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
 			"pause":   "3.1",
 		},
-		"v1.13": {
-			"coredns": "1.2.6",
-			"etcd":    "3.2.24",
+		"v1.17.0-alpha.1": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
 			"pause":   "3.1",
 		},
-		"v1.12": {
-			"coredns": "1.2.2",
-			"etcd":    "3.2.24",
+		"v1.16.1": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
 			"pause":   "3.1",
 		},
-		"v1.11": {
-			"coredns":     "1.1.3",
-			"etcd-amd64":  "3.2.18",
-			"pause-amd64": "3.1",
+		"v1.16.0": {
+			"coredns": "1.6.2",
+			"etcd":    "3.3.15-0",
+			"pause":   "3.1",
 		},
 	}
 )


Test patch:
diff --git a/pkg/minikube/bootstrapper/images/kubeadm_test.go b/pkg/minikube/bootstrapper/images/kubeadm_test.go
index eba62f256..cac1bc267 100644
--- a/pkg/minikube/bootstrapper/images/kubeadm_test.go
+++ b/pkg/minikube/bootstrapper/images/kubeadm_test.go
@@ -34,83 +34,83 @@ func TestKubeadmImages(t *testing.T) {
 		{"invalid", "", true, nil},
 		{"v0.0.1", "", true, nil}, // too old
 		{"v2.0.0", "", true, nil}, // too new
+		{"v1.26.0-rc.0", "", false, []string{
+			"registry.k8s.io/kube-apiserver:v1.26.0-rc.0",
+			"registry.k8s.io/kube-controller-manager:v1.26.0-rc.0",
+			"registry.k8s.io/kube-scheduler:v1.26.0-rc.0",
+			"registry.k8s.io/kube-proxy:v1.26.0-rc.0",
+			"registry.k8s.io/coredns/coredns:v1.9.3",
+			"registry.k8s.io/etcd:3.5.5-0",
+			"registry.k8s.io/pause:3.9",
+			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
+		}},
+		{"v1.25.4", "", false, []string{
+			"registry.k8s.io/kube-apiserver:v1.25.4",
+			"registry.k8s.io/kube-controller-manager:v1.25.4",
+			"registry.k8s.io/kube-scheduler:v1.25.4",
+			"registry.k8s.io/kube-proxy:v1.25.4",
+			"registry.k8s.io/coredns/coredns:v1.9.3",
+			"registry.k8s.io/etcd:3.5.5-0",
+			"registry.k8s.io/pause:3.8",
+			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
+		}},
 		{"v1.25.0", "", false, []string{
-			"registry.k8s.io/kube-apiserver:v1.25.0",
-			"registry.k8s.io/kube-controller-manager:v1.25.0",
-			"registry.k8s.io/kube-scheduler:v1.25.0",
 			"registry.k8s.io/kube-proxy:v1.25.0",
+			"registry.k8s.io/kube-scheduler:v1.25.0",
+			"registry.k8s.io/kube-controller-manager:v1.25.0",
+			"registry.k8s.io/kube-apiserver:v1.25.0",
 			"registry.k8s.io/coredns/coredns:v1.9.3",
 			"registry.k8s.io/etcd:3.5.4-0",
 			"registry.k8s.io/pause:3.8",
 			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
 		}},
+		{"v1.25.0", "mirror.k8s.io", false, []string{
+			"mirror.k8s.io/kube-proxy:v1.25.0",
+			"mirror.k8s.io/kube-scheduler:v1.25.0",
+			"mirror.k8s.io/kube-controller-manager:v1.25.0",
+			"mirror.k8s.io/kube-apiserver:v1.25.0",
+			"mirror.k8s.io/coredns/coredns:v1.9.3",
+			"mirror.k8s.io/etcd:3.5.4-0",
+			"mirror.k8s.io/pause:3.8",
+			"mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
+		}},
 		{"v1.24.0", "", false, []string{
-			"k8s.gcr.io/kube-apiserver:v1.24.0",
-			"k8s.gcr.io/kube-controller-manager:v1.24.0",
-			"k8s.gcr.io/kube-scheduler:v1.24.0",
 			"k8s.gcr.io/kube-proxy:v1.24.0",
+			"k8s.gcr.io/kube-scheduler:v1.24.0",
+			"k8s.gcr.io/kube-controller-manager:v1.24.0",
+			"k8s.gcr.io/kube-apiserver:v1.24.0",
 			"k8s.gcr.io/coredns/coredns:v1.8.6",
 			"k8s.gcr.io/etcd:3.5.3-0",
 			"k8s.gcr.io/pause:3.7",
 			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
 		}},
-		{"v1.17.0", "", false, []string{
-			"k8s.gcr.io/kube-proxy:v1.17.0",
-			"k8s.gcr.io/kube-scheduler:v1.17.0",
-			"k8s.gcr.io/kube-controller-manager:v1.17.0",
-			"k8s.gcr.io/kube-apiserver:v1.17.0",
-			"k8s.gcr.io/coredns:1.6.5",
-			"k8s.gcr.io/etcd:3.4.3-0",
-			"k8s.gcr.io/pause:3.1",
-			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
-		}},
-		{"v1.16.1", "mirror.k8s.io", false, []string{
-			"mirror.k8s.io/kube-proxy:v1.16.1",
-			"mirror.k8s.io/kube-scheduler:v1.16.1",
-			"mirror.k8s.io/kube-controller-manager:v1.16.1",
-			"mirror.k8s.io/kube-apiserver:v1.16.1",
-			"mirror.k8s.io/coredns:1.6.2",
-			"mirror.k8s.io/etcd:3.3.15-0",
-			"mirror.k8s.io/pause:3.1",
-			"mirror.k8s.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
-		}},
-		{"v1.15.0", "", false, []string{
-			"k8s.gcr.io/kube-proxy:v1.15.0",
-			"k8s.gcr.io/kube-scheduler:v1.15.0",
-			"k8s.gcr.io/kube-controller-manager:v1.15.0",
-			"k8s.gcr.io/kube-apiserver:v1.15.0",
-			"k8s.gcr.io/coredns:1.3.1",
-			"k8s.gcr.io/etcd:3.3.10",
-			"k8s.gcr.io/pause:3.1",
-			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
-		}},
-		{"v1.14.0", "", false, []string{
-			"k8s.gcr.io/kube-proxy:v1.14.0",
-			"k8s.gcr.io/kube-scheduler:v1.14.0",
-			"k8s.gcr.io/kube-controller-manager:v1.14.0",
-			"k8s.gcr.io/kube-apiserver:v1.14.0",
-			"k8s.gcr.io/coredns:1.3.1",
-			"k8s.gcr.io/etcd:3.3.10",
-			"k8s.gcr.io/pause:3.1",
+		{"v1.23.0", "", false, []string{
+			"k8s.gcr.io/kube-proxy:v1.23.0",
+			"k8s.gcr.io/kube-scheduler:v1.23.0",
+			"k8s.gcr.io/kube-controller-manager:v1.23.0",
+			"k8s.gcr.io/kube-apiserver:v1.23.0",
+			"k8s.gcr.io/coredns/coredns:v1.8.6",
+			"k8s.gcr.io/etcd:3.5.1-0",
+			"k8s.gcr.io/pause:3.6",
 			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
 		}},
-		{"v1.13.0", "", false, []string{
-			"k8s.gcr.io/kube-proxy:v1.13.0",
-			"k8s.gcr.io/kube-scheduler:v1.13.0",
-			"k8s.gcr.io/kube-controller-manager:v1.13.0",
-			"k8s.gcr.io/kube-apiserver:v1.13.0",
-			"k8s.gcr.io/coredns:1.2.6",
-			"k8s.gcr.io/etcd:3.2.24",
-			"k8s.gcr.io/pause:3.1",
+		{"v1.22.0", "", false, []string{
+			"k8s.gcr.io/kube-proxy:v1.22.0",
+			"k8s.gcr.io/kube-scheduler:v1.22.0",
+			"k8s.gcr.io/kube-controller-manager:v1.22.0",
+			"k8s.gcr.io/kube-apiserver:v1.22.0",
+			"k8s.gcr.io/coredns/coredns:v1.8.4",
+			"k8s.gcr.io/etcd:3.5.0-0",
+			"k8s.gcr.io/pause:3.5",
 			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
 		}},
-		{"v1.12.0", "", false, []string{
-			"k8s.gcr.io/kube-proxy:v1.12.0",
-			"k8s.gcr.io/kube-scheduler:v1.12.0",
-			"k8s.gcr.io/kube-controller-manager:v1.12.0",
-			"k8s.gcr.io/kube-apiserver:v1.12.0",
-			"k8s.gcr.io/coredns:1.2.2",
-			"k8s.gcr.io/etcd:3.2.24",
+		{"v1.16.0", "", false, []string{
+			"k8s.gcr.io/kube-proxy:v1.16.0",
+			"k8s.gcr.io/kube-scheduler:v1.16.0",
+			"k8s.gcr.io/kube-controller-manager:v1.16.0",
+			"k8s.gcr.io/kube-apiserver:v1.16.0",
+			"k8s.gcr.io/coredns:1.6.2",
+			"k8s.gcr.io/etcd:3.3.15-0",
 			"k8s.gcr.io/pause:3.1",
 			"gcr.io/k8s-minikube/storage-provisioner:" + version.GetStorageProvisionerVersion(),
 		}},