Repository: kubernetes/minikube
Pull request #19355 (2024-07-31 10:01:24)

Kicbase/ISO: Update buildkit from v0.15.0 to v0.15.1
The buildkit project released a [new version](https://github.com/moby/buildkit/releases)

This PR was auto-generated by `make update-buildkit-version` using [update-buildkit-version.yml](https://github.com/kubernetes/minikube/tree/master/.github/workflows/update-buildkit-version.yml) CI Workflow.

minikube-bot: ok-to-build-iso
k8s-ci-robot: Hi @minikube-bot. Thanks for your PR.

I'm waiting for a [kubernetes](https://github.com/orgs/kubernetes/people) member to verify that this patch is reasonable to test. If it is, they should reply with `/ok-to-test` on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should [join the org](https://git.k8s.io/community/community-membership.md#member) to skip this step.

Once the patch is verified, the new status will be reflected by the `ok-to-test` label.

I understand the commands that are listed [here](https://go.k8s.io/bot-commands?repo=kubernetes%2Fminikube).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>

k8s-ci-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/kubernetes/minikube/pull/19355#" title="Author self-approved">minikube-bot</a>*
**Once this PR has been reviewed and has the lgtm label**, please assign [prezha](https://github.com/prezha) for approval. For more information see [the Kubernetes Code Review Process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process).

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=kubernetes%2Fminikube).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/kubernetes/minikube/blob/master/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["prezha"]} -->
minikube-bot: Hi @minikube-bot, we have updated your PR with the reference to newly built ISO. Pull the changes locally if you want to test with them or update your PR further.
medyagh: /ok-to-test

Patch:
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b7bc26bc7..c1ac53c43 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -39,7 +39,7 @@ jobs:
           echo workspace $GITHUB_WORKSPACE
           echo "end of debug stuff"
           echo $(which jq)
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: minikube_binaries
           path: out
diff --git a/.github/workflows/functional_verified.yml b/.github/workflows/functional_verified.yml
index a72324312..086d1a1a6 100644
--- a/.github/workflows/functional_verified.yml
+++ b/.github/workflows/functional_verified.yml
@@ -46,7 +46,7 @@ jobs:
           sudo apt-get install -y libvirt-dev
           MINIKUBE_BUILD_IN_DOCKER=y make e2e-linux-arm64
           cp -r test/integration/testdata ./out
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: minikube_binaries
           path: out
@@ -165,7 +165,7 @@ jobs:
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
 
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_ubuntu_arm64
           path: minikube_binaries/report
@@ -209,7 +209,7 @@ jobs:
         run: |
           mkdir -p all_reports
           cp -r ./functional_docker_ubuntu_arm64 ./all_reports/
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: all_reports
           path: all_reports
diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml
index 2977ffd29..e2ded3d64 100644
--- a/.github/workflows/master.yml
+++ b/.github/workflows/master.yml
@@ -42,7 +42,7 @@ jobs:
           echo workspace $GITHUB_WORKSPACE
           echo "end of debug stuff"
           echo $(which jq)
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: minikube_binaries
           path: out
@@ -177,7 +177,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_ubuntu
           path: minikube_binaries/report
@@ -277,7 +277,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_containerd_ubuntu
           path: minikube_binaries/report
@@ -395,7 +395,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_rootless_containerd_ubuntu
           path: minikube_binaries/report
@@ -500,7 +500,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_podman_ubuntu
           path: minikube_binaries/report
@@ -622,7 +622,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_baremetal_ubuntu22_04
           path: minikube_binaries/report
@@ -671,7 +671,7 @@ jobs:
           cp -r ./functional_docker_rootless_containerd_ubuntu ./all_reports/
           cp -r ./functional_podman_ubuntu ./all_reports/
           cp -r ./functional_baremetal_ubuntu22_04 ./all_reports/
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: all_reports
           path: all_reports
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 1c49d1dea..c11ce2361 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -40,7 +40,7 @@ jobs:
           echo workspace $GITHUB_WORKSPACE
           echo "end of debug stuff"
           echo $(which jq)
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: minikube_binaries
           path: out
@@ -175,7 +175,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_ubuntu
           path: minikube_binaries/report
@@ -275,7 +275,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_containerd_ubuntu
           path: minikube_binaries/report
@@ -393,7 +393,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_docker_rootless_containerd_ubuntu
           path: minikube_binaries/report
@@ -498,7 +498,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_podman_ubuntu
           path: minikube_binaries/report
@@ -620,7 +620,7 @@ jobs:
           echo 'STAT<<EOF' >> $GITHUB_ENV
           echo "${STAT}" >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: functional_baremetal_ubuntu22_04
           path: minikube_binaries/report
@@ -669,7 +669,7 @@ jobs:
           cp -r ./functional_docker_rootless_containerd_ubuntu ./all_reports/
           cp -r ./functional_podman_ubuntu ./all_reports/
           cp -r ./functional_baremetal_ubuntu22_04 ./all_reports/
-      - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+      - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
         with:
           name: all_reports
           path: all_reports
diff --git a/Makefile b/Makefile
index ae762d7ed..04a1c214d 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ KIC_VERSION ?= $(shell grep -E "Version =" pkg/drivers/kic/types.go | cut -d \"
 HUGO_VERSION ?= $(shell grep -E "HUGO_VERSION = \"" netlify.toml | cut -d \" -f2)
 
 # Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
-ISO_VERSION ?= v1.33.1-1722248113-19339
+ISO_VERSION ?= v1.33.1-1722420371-19355
 
 # Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
 DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
diff --git a/cmd/minikube/cmd/config/images.go b/cmd/minikube/cmd/config/images.go
index 2ed24814e..ca88a485b 100644
--- a/cmd/minikube/cmd/config/images.go
+++ b/cmd/minikube/cmd/config/images.go
@@ -17,7 +17,10 @@ limitations under the License.
 package config
 
 import (
+	"encoding/json"
+	"fmt"
 	"os"
+	"strings"
 
 	"github.com/olekukonko/tablewriter"
 	"github.com/spf13/cobra"
@@ -27,6 +30,8 @@ import (
 	"k8s.io/minikube/pkg/minikube/reason"
 )
 
+var addonImagesOutput string
+
 var addonsImagesCmd = &cobra.Command{
 	Use:     "images ADDON_NAME",
 	Short:   "List image names the addon w/ADDON_NAME used. For a list of available addons use: minikube addons list",
@@ -38,33 +43,65 @@ var addonsImagesCmd = &cobra.Command{
 		}
 
 		addon := args[0]
-		// allows for additional prompting of information when enabling addons
-		if conf, ok := assets.Addons[addon]; ok {
-			if conf.Images != nil {
-				out.Infof("{{.name}} has following images:", out.V{"name": addon})
-
-				var tData [][]string
-				table := tablewriter.NewWriter(os.Stdout)
-				table.SetHeader([]string{"Image Name", "Default Image", "Default Registry"})
-				table.SetAutoFormatHeaders(true)
-				table.SetBorders(tablewriter.Border{Left: true, Top: true, Right: true, Bottom: true})
-				table.SetCenterSeparator("|")
-
-				for imageName, defaultImage := range conf.Images {
-					tData = append(tData, []string{imageName, defaultImage, conf.Registries[imageName]})
-				}
-
-				table.AppendBulk(tData)
-				table.Render()
-			} else {
-				out.Infof("{{.name}} doesn't have images.", out.V{"name": addon})
+
+		switch strings.ToLower(addonImagesOutput) {
+		case "table":
+			printAddonImagesTable(addon)
+		case "json":
+			printAddonImagesJSON(addon)
+		default:
+			exit.Message(reason.Usage, fmt.Sprintf("invalid output format: %s. Valid values: 'table', 'json'", addonImagesOutput))
+		}
+	},
+}
+
+func printAddonImagesTable(addon string) {
+	// allows for additional prompting of information when enabling addons
+	if conf, ok := assets.Addons[addon]; ok {
+		if conf.Images != nil {
+			out.Infof("{{.name}} has the following images:", out.V{"name": addon})
+
+			var tData [][]string
+			table := tablewriter.NewWriter(os.Stdout)
+			table.SetHeader([]string{"Image Name", "Default Image", "Default Registry"})
+			table.SetAutoFormatHeaders(true)
+			table.SetBorders(tablewriter.Border{Left: true, Top: true, Right: true, Bottom: true})
+			table.SetCenterSeparator("|")
+
+			for imageName, defaultImage := range conf.Images {
+				tData = append(tData, []string{imageName, defaultImage, conf.Registries[imageName]})
 			}
+
+			table.AppendBulk(tData)
+			table.Render()
 		} else {
-			out.FailureT("No such addon {{.name}}", out.V{"name": addon})
+			out.Infof("{{.name}} doesn't have images.", out.V{"name": addon})
 		}
-	},
+	} else {
+		out.FailureT("No such addon {{.name}}", out.V{"name": addon})
+	}
+}
+
+func printAddonImagesJSON(addon string) {
+	if conf, ok := assets.Addons[addon]; ok {
+		if conf.Images != nil {
+			var data []string
+
+			for imageName, defaultImage := range conf.Images {
+				data = append(data, conf.Registries[imageName]+"/"+defaultImage)
+			}
+
+			jsonString, _ := json.Marshal(data)
+			out.String(string(jsonString))
+		} else {
+			out.String("[]")
+		}
+	} else {
+		out.FailureT("No such addon {{.name}}", out.V{"name": addon})
+	}
 }
 
 func init() {
+	addonsImagesCmd.Flags().StringVarP(&addonImagesOutput, "output", "o", "table", "minikube addons images ADDON_NAME --output OUTPUT. table, json")
 	AddonsCmd.AddCommand(addonsImagesCmd)
 }
diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go
index add01e155..cb585ba73 100644
--- a/cmd/minikube/cmd/start.go
+++ b/cmd/minikube/cmd/start.go
@@ -1365,7 +1365,7 @@ func validateFlags(cmd *cobra.Command, drvName string) { //nolint:gocyclo
 	validateInsecureRegistry()
 }
 
-// validatePorts validates that the --ports are not below 1024 for the host and not outside range
+// validatePorts validates that the --ports are not outside range
 func validatePorts(ports []string) error {
 	var exposedPorts, hostPorts, portSpecs []string
 	for _, p := range ports {
@@ -1386,19 +1386,19 @@ func validatePorts(ports []string) error {
 		}
 	}
 	for _, p := range exposedPorts {
-		if err := validatePort(p, false); err != nil {
+		if err := validatePort(p); err != nil {
 			return err
 		}
 	}
 	for _, p := range hostPorts {
-		if err := validatePort(p, true); err != nil {
+		if err := validatePort(p); err != nil {
 			return err
 		}
 	}
 	return nil
 }
 
-func validatePort(port string, isHost bool) error {
+func validatePort(port string) error {
 	p, err := strconv.Atoi(port)
 	if err != nil {
 		return errors.Errorf("Sorry, one of the ports provided with --ports flag is not valid: %s", port)
@@ -1406,9 +1406,6 @@ func validatePort(port string, isHost bool) error {
 	if p > 65535 || p < 1 {
 		return errors.Errorf("Sorry, one of the ports provided with --ports flag is outside range: %s", port)
 	}
-	if isHost && detect.IsMicrosoftWSL() && p < 1024 {
-		return errors.Errorf("Sorry, you cannot use privileged ports on the host (below 1024): %s", port)
-	}
 	return nil
 }
 
diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go
index ce3277e37..4f9359bb2 100644
--- a/cmd/minikube/cmd/start_flags.go
+++ b/cmd/minikube/cmd/start_flags.go
@@ -229,7 +229,7 @@ func initKubernetesFlags() {
 
 // initDriverFlags inits the commandline flags for vm drivers
 func initDriverFlags() {
-	startCmd.Flags().String("driver", "", fmt.Sprintf("Driver is one of: %v (defaults to auto-detect)", driver.DisplaySupportedDrivers()))
+	startCmd.Flags().StringP("driver", "d", "", fmt.Sprintf("Driver is one of: %v (defaults to auto-detect)", driver.DisplaySupportedDrivers()))
 	startCmd.Flags().String("vm-driver", "", "DEPRECATED, use `driver` instead.")
 	startCmd.Flags().Bool(disableDriverMounts, false, "Disables the filesystem mounts provided by the hypervisors")
 	startCmd.Flags().Bool("vm", false, "Filter to use only VM Drivers")
diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
index 30ce655c8..5edfbe29b 100644
--- a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
+++ b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.hash
@@ -11,3 +11,4 @@ sha256 9e1478af43ba7ac6635cae30a8dda3ebce4dca70a8def939ac64ee395d03d647  buildki
 sha256 bcc4cb4fec79847682fbb2ce8f612e5e854636ae6c262cee4b657d2b5c2fd46c  buildkit-v0.13.2.linux-arm64.tar.gz
 sha256 e1caad39f0bc5848a5687d7a0e8e344d20724133365596e5d881d8fbe5594b32  buildkit-v0.14.1.linux-arm64.tar.gz
 sha256 dfa15ef3f194afc0f588de1e78053cdcd553e7de2f9692efe964c9aa7e9d621e  buildkit-v0.15.0.linux-arm64.tar.gz
+sha256 608539ed0686f6533504ab43ed1005ab9c7bb45daec1cc5caa99de0c6314408c  buildkit-v0.15.1.linux-arm64.tar.gz
diff --git a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
index e82209666..5129a02b0 100644
--- a/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
+++ b/deploy/iso/minikube-iso/arch/aarch64/package/buildkit-bin-aarch64/buildkit-bin.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-BUILDKIT_BIN_AARCH64_VERSION = v0.15.0
-BUILDKIT_BIN_AARCH64_COMMIT = e83d79a51fb49aeb921d8a2348ae14a58701c98c
+BUILDKIT_BIN_AARCH64_VERSION = v0.15.1
+BUILDKIT_BIN_AARCH64_COMMIT = 979542e90f2cb38077c808e0867d8d2c16ed10b8
 BUILDKIT_BIN_AARCH64_SITE = https://github.com/moby/buildkit/releases/download/$(BUILDKIT_BIN_AARCH64_VERSION)
 BUILDKIT_BIN_AARCH64_SOURCE = buildkit-$(BUILDKIT_BIN_AARCH64_VERSION).linux-arm64.tar.gz
 
diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
index a2c7cd92e..d492c2311 100644
--- a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
+++ b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.hash
@@ -15,3 +15,4 @@ sha256 5d4a6ef438851d7a0b22d17c7e806651c24c0982ddd6af8c02117fca84f167ec  buildki
 sha256 9cd121931b015f05d7e4337f08272e36a83f69724c40141947eb11246ca0bb9d  buildkit-v0.13.2.linux-amd64.tar.gz
 sha256 836208f50ab8856a91aa5bba455b8451bbe261318cbc92e9c0ca3e786135756c  buildkit-v0.14.1.linux-amd64.tar.gz
 sha256 803de21f1656b2f0398e09204abcff2943c17b6b5951fe5ccfc8300012fcb838  buildkit-v0.15.0.linux-amd64.tar.gz
+sha256 e433c3d3484ad5c13a74435a28ba96334369c9ecce13b4ed0e310ad5f90f7060  buildkit-v0.15.1.linux-amd64.tar.gz
diff --git a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
index e7d17a177..d970df90e 100644
--- a/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
+++ b/deploy/iso/minikube-iso/arch/x86_64/package/buildkit-bin/buildkit-bin.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-BUILDKIT_BIN_VERSION = v0.15.0
-BUILDKIT_BIN_COMMIT = e83d79a51fb49aeb921d8a2348ae14a58701c98c
+BUILDKIT_BIN_VERSION = v0.15.1
+BUILDKIT_BIN_COMMIT = 979542e90f2cb38077c808e0867d8d2c16ed10b8
 BUILDKIT_BIN_SITE = https://github.com/moby/buildkit/releases/download/$(BUILDKIT_BIN_VERSION)
 BUILDKIT_BIN_SOURCE = buildkit-$(BUILDKIT_BIN_VERSION).linux-amd64.tar.gz
 
diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile
index 8969ff58f..887108661 100644
--- a/deploy/kicbase/Dockerfile
+++ b/deploy/kicbase/Dockerfile
@@ -41,7 +41,7 @@ RUN if [ "$PREBUILT_AUTO_PAUSE" != "true" ]; then cd ./cmd/auto-pause/ && go bui
 # for a kubernetes node image, it doesn't contain much we don't need
 FROM ${UBUNTU_JAMMY_IMAGE} as kicbase
 
-ARG BUILDKIT_VERSION="v0.15.0"
+ARG BUILDKIT_VERSION="v0.15.1"
 ARG CRIO_VERSION="1.24"
 ARG CRI_DOCKERD_VERSION="v0.3.15"
 ARG CRI_DOCKERD_COMMIT="c1c566e0cc84abe6972f0bf857ecd8fe306258d9"
diff --git a/go.mod b/go.mod
index 6c977b988..d54114fa6 100644
--- a/go.mod
+++ b/go.mod
@@ -12,7 +12,7 @@ require (
 	github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.24.1
 	github.com/Parallels/docker-machine-parallels/v2 v2.0.1
 	github.com/VividCortex/godaemon v1.0.0
-	github.com/Xuanwo/go-locale v1.1.0
+	github.com/Xuanwo/go-locale v1.1.1
 	github.com/blang/semver/v4 v4.0.0
 	github.com/briandowns/spinner v1.11.1
 	github.com/cenkalti/backoff/v4 v4.3.0
@@ -70,13 +70,13 @@ require (
 	golang.org/x/crypto v0.25.0
 	golang.org/x/exp v0.0.0-20230905200255-921286631fa9
 	golang.org/x/mod v0.19.0
-	golang.org/x/oauth2 v0.21.0
-	golang.org/x/sync v0.7.0
-	golang.org/x/sys v0.22.0
+	golang.org/x/oauth2 v0.22.0
+	golang.org/x/sync v0.8.0
+	golang.org/x/sys v0.23.0
 	golang.org/x/term v0.22.0
 	golang.org/x/text v0.16.0
 	gonum.org/v1/plot v0.14.0
-	google.golang.org/api v0.189.0
+	google.golang.org/api v0.190.0
 	gopkg.in/yaml.v2 v2.4.0
 	k8s.io/api v0.30.3
 	k8s.io/apimachinery v0.30.3
@@ -92,12 +92,12 @@ require (
 
 require (
 	cloud.google.com/go v0.115.0 // indirect
-	cloud.google.com/go/auth v0.7.2 // indirect
+	cloud.google.com/go/auth v0.7.3 // indirect
 	cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect
 	cloud.google.com/go/compute/metadata v0.5.0 // indirect
-	cloud.google.com/go/iam v1.1.10 // indirect
-	cloud.google.com/go/monitoring v1.20.2 // indirect
-	cloud.google.com/go/trace v1.10.10 // indirect
+	cloud.google.com/go/iam v1.1.12 // indirect
+	cloud.google.com/go/monitoring v1.20.3 // indirect
+	cloud.google.com/go/trace v1.10.11 // indirect
 	git.sr.ht/~sbinet/gg v0.5.0 // indirect
 	github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
 	github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect
@@ -146,9 +146,9 @@ require (
 	github.com/google/go-querystring v1.1.0 // indirect
 	github.com/google/gofuzz v1.2.0 // indirect
 	github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda // indirect
-	github.com/google/s2a-go v0.1.7 // indirect
+	github.com/google/s2a-go v0.1.8 // indirect
 	github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
-	github.com/googleapis/gax-go/v2 v2.12.5 // indirect
+	github.com/googleapis/gax-go/v2 v2.13.0 // indirect
 	github.com/gookit/color v1.5.2 // indirect
 	github.com/gorilla/websocket v1.5.0 // indirect
 	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
@@ -226,9 +226,9 @@ require (
 	golang.org/x/net v0.27.0 // indirect
 	golang.org/x/time v0.5.0 // indirect
 	golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
-	google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect
-	google.golang.org/genproto/googleapis/api v0.0.0-20240709173604-40e1e62336c5 // indirect
-	google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect
+	google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf // indirect
+	google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f // indirect
+	google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect
 	google.golang.org/grpc v1.64.1 // indirect
 	google.golang.org/protobuf v1.34.2 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
@@ -243,7 +243,7 @@ require (
 
 replace (
 	git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
-	github.com/Parallels/docker-machine-parallels/v2 => github.com/minikube-machine/machine-driver-parallels/v2 v2.0.1
+	github.com/Parallels/docker-machine-parallels/v2 => github.com/minikube-machine/machine-driver-parallels/v2 v2.0.2-0.20240730142131-ada9375ea417
 	github.com/briandowns/spinner => github.com/alonyb/spinner v1.12.7
 	github.com/docker/machine => github.com/minikube-machine/machine v0.0.0-20230814171452-e95650b07516
 	github.com/intel-go/cpuid => github.com/aregm/cpuid v0.0.0-20181003105527-1a4a6f06a1c6
diff --git a/go.sum b/go.sum
index 8482ef285..1aa6dfb39 100644
--- a/go.sum
+++ b/go.sum
@@ -49,8 +49,8 @@ cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjby
 cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
 cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
 cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
-cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE=
-cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs=
+cloud.google.com/go/auth v0.7.3 h1:98Vr+5jMaCZ5NZk6e/uBgf60phTk/XN84r8QEWB9yjY=
+cloud.google.com/go/auth v0.7.3/go.mod h1:HJtWUx1P5eqjy/f6Iq5KeytNpbAcGolPhOgyop2LlzA=
 cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI=
 cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I=
 cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
@@ -115,24 +115,24 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97
 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
 cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
 cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
-cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI=
-cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps=
+cloud.google.com/go/iam v1.1.12 h1:JixGLimRrNGcxvJEQ8+clfLxPlbeZA6MuRJ+qJNQ5Xw=
+cloud.google.com/go/iam v1.1.12/go.mod h1:9LDX8J7dN5YRyzVHxwQzrQs9opFFqn0Mxs9nAeB+Hhg=
 cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
 cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
 cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
 cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
-cloud.google.com/go/logging v1.10.0 h1:f+ZXMqyrSJ5vZ5pE/zr0xC8y/M9BLNzQeLBwfeZ+wY4=
-cloud.google.com/go/logging v1.10.0/go.mod h1:EHOwcxlltJrYGqMGfghSet736KR3hX1MAj614mrMk9I=
-cloud.google.com/go/longrunning v0.5.9 h1:haH9pAuXdPAMqHvzX0zlWQigXT7B0+CL4/2nXXdBo5k=
-cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c=
+cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs=
+cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A=
+cloud.google.com/go/longrunning v0.5.11 h1:Havn1kGjz3whCfoD8dxMLP73Ph5w+ODyZB9RUsDxtGk=
+cloud.google.com/go/longrunning v0.5.11/go.mod h1:rDn7//lmlfWV1Dx6IB4RatCPenTwwmqXuiP0/RgoEO4=
 cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
 cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
 cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
 cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=
 cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=
 cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=
-cloud.google.com/go/monitoring v1.20.2 h1:B/L+xrw9PYO7ywh37sgnjI/6dzEE+yQTAwfytDcpPto=
-cloud.google.com/go/monitoring v1.20.2/go.mod h1:36rpg/7fdQ7NX5pG5x1FA7cXTVXusOp6Zg9r9e1+oek=
+cloud.google.com/go/monitoring v1.20.3 h1:v/7MXFxYrhXLEZ9sSfwXdlTLLB/xrU7xTyYjY5acynQ=
+cloud.google.com/go/monitoring v1.20.3/go.mod h1:GPIVIdNznIdGqEjtRKQWTLcUeRnPjZW85szouimiczU=
 cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=
 cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=
 cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=
@@ -187,8 +187,8 @@ cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyX
 cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
 cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
 cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
-cloud.google.com/go/trace v1.10.10 h1:eiIFoRp1qTh2tRemTd8HIE7qZ0Ok5l7dl9pYsNWoXjk=
-cloud.google.com/go/trace v1.10.10/go.mod h1:5b1BiSYQO27KgGRevNFfoIQ8czwpVgnkKbTLb4wV+XM=
+cloud.google.com/go/trace v1.10.11 h1:+Y1emOgcyGy6OdJ2KQbT4t2oecPp49GtJn8j3GM1pWo=
+cloud.google.com/go/trace v1.10.11/go.mod h1:fUr5L3wSXerNfT0f1bBg08W4axS2VbHGgYcfH4KuTXU=
 cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
 cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=
 cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
@@ -297,8 +297,8 @@ github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1o
 github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
 github.com/VividCortex/godaemon v1.0.0 h1:aHYrScWvgaSOdAoYCdObWXLm+e1rldP9Pwb1ZvuZkQw=
 github.com/VividCortex/godaemon v1.0.0/go.mod h1:hBWe/72KbGt/lb95E+Sh9ersdYbB57Dt6CG66S1YPno=
-github.com/Xuanwo/go-locale v1.1.0 h1:51gUxhxl66oXAjI9uPGb2O0qwPECpriKQb2hl35mQkg=
-github.com/Xuanwo/go-locale v1.1.0/go.mod h1:UKrHoZB3FPIk9wIG2/tVSobnHgNnceGSH3Y8DY5cASs=
+github.com/Xuanwo/go-locale v1.1.1 h1:nhvzo1phY4LRwdrwVwKWXn5iZ0pMwwsa3o29yiDRuZc=
+github.com/Xuanwo/go-locale v1.1.1/go.mod h1:ldC3FzZeMYALkL3YYpwhr4iVYdOIUx42kORcnAHdKUo=
 github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
 github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
 github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b h1:slYM766cy2nI3BwyRiyQj/Ud48djTMtMebDqepE95rw=
@@ -891,8 +891,8 @@ github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8I
 github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda h1:KdHPvlgeNEDs8rae032MqFG8LVwcSEivcCjNdVOXRmg=
 github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
+github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
+github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
 github.com/google/slowjam v1.1.1 h1:3Sau9H9JD1v+L4G8RP9aQarp/RytJ2NZrIDwG4OS4AQ=
 github.com/google/slowjam v1.1.1/go.mod h1:7epwCwKh++Th0+lOGEUkwq55JBb8i9zHYrUS4e7ijlY=
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -916,8 +916,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99
 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
 github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
 github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
-github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA=
-github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E=
+github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
+github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
 github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
 github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
 github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
@@ -925,7 +925,6 @@ github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+
 github.com/gookit/color v1.5.2 h1:uLnfXcaFjlrDnQDT+NCBcfhrXqYTx/rcCa6xn01Y8yI=
 github.com/gookit/color v1.5.2/go.mod h1:w8h4bGiHeeBpvQVePTutdbERIUf3oJE5lZ8HM0UgXyg=
 github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c=
-github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ=
 github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
@@ -1057,7 +1056,6 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
 github.com/juju/clock v1.1.1 h1:NvgHG9DQmOpBevgt6gzkyimdWBooLXDy1cQn89qJzBI=
@@ -1192,8 +1190,8 @@ github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7Xn
 github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs=
 github.com/minikube-machine/machine v0.0.0-20230814171452-e95650b07516 h1:TdnOOGMei4q3MooTy2xYv+EKnMyKUJE2LFotmBzC1zk=
 github.com/minikube-machine/machine v0.0.0-20230814171452-e95650b07516/go.mod h1:I+HtQRi2cs3knYUuHwiY59H9j52F03+l489Vm6AoMok=
-github.com/minikube-machine/machine-driver-parallels/v2 v2.0.1 h1:eYP7NkEv+tUZeB7BLfJ8PF4UNCW6lVyrbMvcWh1rgMA=
-github.com/minikube-machine/machine-driver-parallels/v2 v2.0.1/go.mod h1:NKwI5KryEmEHMZVj80t9JQcfXWZp4/ZYNBuw4C5sQ9E=
+github.com/minikube-machine/machine-driver-parallels/v2 v2.0.2-0.20240730142131-ada9375ea417 h1:f+neTRGCtvmW3Tm1V72vWpoTPuNOnXSQsHZdYOryfGM=
+github.com/minikube-machine/machine-driver-parallels/v2 v2.0.2-0.20240730142131-ada9375ea417/go.mod h1:NKwI5KryEmEHMZVj80t9JQcfXWZp4/ZYNBuw4C5sQ9E=
 github.com/minikube-machine/machine-driver-vmware v0.1.6-0.20230701123042-a391c48b14d5 h1:1z7xOzfMO4aBR9+2nYjlhRXX1773fX60HTS0QGpGRPU=
 github.com/minikube-machine/machine-driver-vmware v0.1.6-0.20230701123042-a391c48b14d5/go.mod h1:HifYFOWR0bAMN4hWtaSADClogvtPy/jV0aRC5alhrKo=
 github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
@@ -1483,12 +1481,9 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic
 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
 github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
 github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
-github.com/smartystreets/goconvey v1.6.7 h1:I6tZjLXD2Q1kjvNbIzB1wvQBsXmKXiVrhpRE8ZjP5jY=
-github.com/smartystreets/goconvey v1.6.7/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
 github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
@@ -1892,8 +1887,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri
 golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
 golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
 golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
+golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
 golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1911,8 +1906,8 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -2031,7 +2026,6 @@ golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211023085530-d6a326fbbf70/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -2059,8 +2053,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
-golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
+golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -2236,8 +2230,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ
 google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
 google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
 google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
-google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI=
-google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8=
+google.golang.org/api v0.190.0 h1:ASM+IhLY1zljNdLu19W1jTmU6A+gMk6M46Wlur61s+Q=
+google.golang.org/api v0.190.0/go.mod h1:QIr6I9iedBLnfqoD6L6Vze1UvS5Hzj5r2aUBOaZnLHo=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -2353,12 +2347,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw
 google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
 google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
-google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg=
-google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY=
-google.golang.org/genproto/googleapis/api v0.0.0-20240709173604-40e1e62336c5 h1:a/Z0jgw03aJ2rQnp5PlPpznJqJft0HyvyrcUcxgzPwY=
-google.golang.org/genproto/googleapis/api v0.0.0-20240709173604-40e1e62336c5/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
+google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf h1:OqdXDEakZCVtDiZTjcxfwbHPCT11ycCEsTKesBVKvyY=
+google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:mCr1K1c8kX+1iSBREvU3Juo11CB+QOEWxbRS01wWl5M=
+google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f h1:b1Ln/PG8orm0SsBbHZWke8dDp2lrCD4jSmfglFpTZbk=
+google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY=
 google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
diff --git a/hack/jenkins/installers/check_install_gh.sh b/hack/jenkins/installers/check_install_gh.sh
index 3709d433b..5115e7573 100755
--- a/hack/jenkins/installers/check_install_gh.sh
+++ b/hack/jenkins/installers/check_install_gh.sh
@@ -16,7 +16,7 @@
 
 set -eux -o pipefail
 
-GH_VERSION="2.53.0"
+GH_VERSION="2.54.0"
 
 echo "Installing latest version of gh"
 curl -qLO "https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_amd64.tar.gz"
diff --git a/netlify.toml b/netlify.toml
index 122abd864..e1ef5ba20 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -5,7 +5,7 @@ command = "pwd && cd themes/docsy && npm install && git submodule update -f --in
 
 [build.environment]
 NODE_VERSION = "20.16.0"
-HUGO_VERSION = "v0.129.0"
+HUGO_VERSION = "v0.131.0"
 
 [context.production.environment]
 HUGO_ENV = "production"
diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go
index b17fa0c10..4f44279cf 100644
--- a/pkg/drivers/kic/types.go
+++ b/pkg/drivers/kic/types.go
@@ -24,10 +24,10 @@ import (
 
 const (
 	// Version is the current version of kic
-	Version = "v0.0.44-1721902582-19326"
+	Version = "v0.0.44-1723026928-19389"
 
 	// SHA of the kic base image
-	baseImageSHA = "540fb5dc7f38be17ff5276a38dfe6c8a4b1d9ba1c27c62244e6eebd7e37696e7"
+	baseImageSHA = "7715fe0c5dce35b4eb757765cbbe02d40cd8b5effa0639735e42ad89f4f51ef0"
 	// The name of the GCR kicbase repository
 	gcrRepo = "gcr.io/k8s-minikube/kicbase-builds"
 	// The name of the Dockerhub kicbase repository
diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go
index aa2737ea4..b1604523e 100644
--- a/pkg/minikube/assets/addons.go
+++ b/pkg/minikube/assets/addons.go
@@ -779,7 +779,7 @@ var Addons = map[string]*Addon{
 		MustBinAsset(addons.HeadlampAssets, "headlamp/headlamp-clusterrolebinding.yaml", vmpath.GuestAddonsDir, "headlamp-clusterrolebinding.yaml", "0640"),
 	}, false, "headlamp", "3rd party (kinvolk.io)", "yolossn", "https://minikube.sigs.k8s.io/docs/handbook/addons/headlamp/",
 		map[string]string{
-			"Headlamp": "headlamp-k8s/headlamp:v0.24.1@sha256:1c3f42aacd8eee1d3f1c63efb5a3b42da387ca1d87b77b0f486e8443201fcb37",
+			"Headlamp": "headlamp-k8s/headlamp:v0.25.0@sha256:899d106eeb55b0afc4ee6e51c03bc4418de0bd0e79c39744d4d0d751aae6a971",
 		},
 		map[string]string{
 			"Headlamp": "ghcr.io",
diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go
index 44f73a985..e80038d30 100644
--- a/pkg/minikube/bootstrapper/images/images.go
+++ b/pkg/minikube/bootstrapper/images/images.go
@@ -179,11 +179,11 @@ func KindNet(repo string) string {
 	if repo == "" {
 		repo = "docker.io/kindest"
 	}
-	return path.Join(repo, "kindnetd:v20240719-e7903573")
+	return path.Join(repo, "kindnetd:v20240730-75a5af0c")
 }
 
 // all calico images are from https://github.com/projectcalico/calico/blob/master/manifests/calico.yaml
-const calicoVersion = "v3.28.0"
+const calicoVersion = "v3.28.1"
 const calicoRepo = "docker.io/calico"
 
 // CalicoDaemonSet returns the image used for calicoDaemonSet
diff --git a/pkg/minikube/cni/calico.yaml b/pkg/minikube/cni/calico.yaml
index 51b08911c..f975dd416 100644
--- a/pkg/minikube/cni/calico.yaml
+++ b/pkg/minikube/cni/calico.yaml
@@ -5030,9 +5030,11 @@ spec:
         - name: var-run-calico
           hostPath:
             path: /var/run/calico
+            type: DirectoryOrCreate
         - name: var-lib-calico
           hostPath:
             path: /var/lib/calico
+            type: DirectoryOrCreate
         - name: xtables-lock
           hostPath:
             path: /run/xtables.lock
@@ -5053,6 +5055,7 @@ spec:
         - name: cni-bin-dir
           hostPath:
             path: /opt/cni/bin
+            type: DirectoryOrCreate
         - name: cni-net-dir
           hostPath:
             path: /etc/cni/net.d
diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go
index 4d85733c9..32bc7bebe 100644
--- a/pkg/minikube/constants/constants.go
+++ b/pkg/minikube/constants/constants.go
@@ -37,7 +37,7 @@ const (
 	DefaultKubernetesVersion = "v1.30.3"
 	// NewestKubernetesVersion is the newest Kubernetes version to test against
 	// NOTE: You may need to update coreDNS & etcd versions in pkg/minikube/bootstrapper/images/images.go
-	NewestKubernetesVersion = "v1.31.0-beta.0"
+	NewestKubernetesVersion = "v1.31.0-rc.0"
 	// OldestKubernetesVersion is the oldest Kubernetes version to test against
 	OldestKubernetesVersion = "v1.20.0"
 	// NoKubernetesVersion is the version used when users does NOT want to install kubernetes
diff --git a/pkg/minikube/constants/constants_kubeadm_images.go b/pkg/minikube/constants/constants_kubeadm_images.go
index 9fea6c5d7..141be491c 100644
--- a/pkg/minikube/constants/constants_kubeadm_images.go
+++ b/pkg/minikube/constants/constants_kubeadm_images.go
@@ -18,6 +18,11 @@ package constants
 
 var (
 	KubeadmImages = map[string]map[string]string{
+		"v1.31.0-rc.0": {
+			"coredns/coredns": "v1.11.1",
+			"etcd":            "3.5.15-0",
+			"pause":           "3.10",
+		},
 		"v1.27.16": {
 			"coredns/coredns": "v1.10.1",
 			"etcd":            "3.5.12-0",
diff --git a/pkg/minikube/constants/constants_kubernetes_versions.go b/pkg/minikube/constants/constants_kubernetes_versions.go
index a9320605f..dc49ba0ba 100644
--- a/pkg/minikube/constants/constants_kubernetes_versions.go
+++ b/pkg/minikube/constants/constants_kubernetes_versions.go
@@ -21,6 +21,7 @@ package constants
 // ValidKubernetesVersions is a list of Kubernetes versions in order from newest to oldest
 // This is used when outputting Kubernetes versions and to select the latest patch version when unspecified
 var ValidKubernetesVersions = []string{
+	"v1.31.0-rc.0",
 	"v1.31.0-beta.0",
 	"v1.31.0-alpha.3",
 	"v1.31.0-alpha.2",
diff --git a/pkg/minikube/cruntime/containerd.go b/pkg/minikube/cruntime/containerd.go
index 73df60d4c..4cb0ad665 100644
--- a/pkg/minikube/cruntime/containerd.go
+++ b/pkg/minikube/cruntime/containerd.go
@@ -265,7 +265,7 @@ func (r *Containerd) Disable() error {
 // ImageExists checks if image exists based on image name and optionally image sha
 func (r *Containerd) ImageExists(name string, sha string) bool {
 	klog.Infof("Checking existence of image with name %q and sha %q", name, sha)
-	c := exec.Command("sudo", "ctr", "-n=k8s.io", "images", "check")
+	c := exec.Command("sudo", "ctr", "-n=k8s.io", "images", "ls", fmt.Sprintf("name==%s", name))
 	// note: image name and image id's sha can be on different lines in ctr output
 	if rr, err := r.Runner.RunCmd(c); err != nil ||
 		!strings.Contains(rr.Output(), name) ||
diff --git a/pkg/minikube/cruntime/cri.go b/pkg/minikube/cruntime/cri.go
index fa3b2c1cb..3dfc50dec 100644
--- a/pkg/minikube/cruntime/cri.go
+++ b/pkg/minikube/cruntime/cri.go
@@ -220,10 +220,28 @@ func removeCRIImage(cr CommandRunner, name string) error {
 	crictl := getCrictlPath(cr)
 	args := append([]string{crictl, "rmi"}, name)
 	c := exec.Command("sudo", args...)
-	if _, err := cr.RunCmd(c); err != nil {
-		return errors.Wrap(err, "crictl")
+	var err error
+	if _, err = cr.RunCmd(c); err == nil {
+		return nil
 	}
-	return nil
+	// the reason why we are doing this is that
+	// unlike other tool, podman assume the image has a localhost registry (not docker.io)
+	// if the image is loaded with a tarball without a registry specified in tag
+	// see https://github.com/containers/podman/issues/15974
+
+	// then retry with dockerio prefix
+	if _, err := cr.RunCmd(exec.Command("sudo", crictl, "rmi", AddDockerIO(name))); err == nil {
+		return nil
+	}
+
+	// then retry with localhost prefix
+	if _, err := cr.RunCmd(exec.Command("sudo", crictl, "rmi", AddLocalhostPrefix(name))); err == nil {
+
+		return nil
+	}
+
+	// if all of above failed, return original error
+	return errors.Wrap(err, "crictl")
 }
 
 // stopCRIContainers stops containers using crictl
@@ -358,3 +376,8 @@ func checkCNIPlugins(kubernetesVersion semver.Version) error {
 	_, err := os.Stat("/opt/cni/bin")
 	return err
 }
+
+// Add localhost prefix if the registry part is missing
+func AddLocalhostPrefix(name string) string {
+	return addRegistryPreix(name, "localhost")
+}
diff --git a/pkg/minikube/cruntime/docker.go b/pkg/minikube/cruntime/docker.go
index c2bf1c7b7..f22dc9738 100644
--- a/pkg/minikube/cruntime/docker.go
+++ b/pkg/minikube/cruntime/docker.go
@@ -292,7 +292,7 @@ func (r *Docker) ListImages(ListImagesOptions) ([]ListImage, error) {
 		result = append(result, ListImage{
 			ID:          strings.TrimPrefix(jsonImage.ID, "sha256:"),
 			RepoDigests: []string{},
-			RepoTags:    []string{addDockerIO(repoTag)},
+			RepoTags:    []string{AddDockerIO(repoTag)},
 			Size:        fmt.Sprintf("%d", size),
 		})
 	}
@@ -696,14 +696,22 @@ func dockerImagesPreloaded(runner command.Runner, images []string) bool {
 }
 
 // Add docker.io prefix
-func addDockerIO(name string) string {
+func AddDockerIO(name string) string {
+	return addRegistryPreix(name, "docker.io")
+}
+func addRegistryPreix(name string, prefix string) string {
+	// we seperate the image name following this logic
+	// https://pkg.go.dev/github.com/distribution/reference#ParseNormalizedNamed
 	var reg, usr, img string
 	p := strings.SplitN(name, "/", 2)
-	if len(p) > 1 && strings.Contains(p[0], ".") {
+	// containing . means that it is a valid url for registry(e.g. xxx.io)
+	// containing : means it contains some port number (e.g. xxx:5432)
+	// it may also start with localhost, which is also regarded as a valid registry
+	if len(p) > 1 && (strings.ContainsAny(p[0], ".:") || strings.Contains(p[0], "localhost")) {
 		reg = p[0]
 		img = p[1]
 	} else {
-		reg = "docker.io"
+		reg = prefix
 		img = name
 		p = strings.SplitN(img, "/", 2)
 		if len(p) > 1 {
diff --git a/pkg/minikube/download/iso.go b/pkg/minikube/download/iso.go
index 223940dc7..fa239a07d 100644
--- a/pkg/minikube/download/iso.go
+++ b/pkg/minikube/download/iso.go
@@ -41,7 +41,7 @@ const fileScheme = "file"
 // DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order
 func DefaultISOURLs() []string {
 	v := version.GetISOVersion()
-	isoBucket := "minikube-builds/iso/19339"
+	isoBucket := "minikube-builds/iso/19355"
 
 	return []string{
 		fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s-%s.iso", isoBucket, v, runtime.GOARCH),
diff --git a/pkg/minikube/driver/driver_darwin.go b/pkg/minikube/driver/driver_darwin.go
index d2588f469..cc2270797 100644
--- a/pkg/minikube/driver/driver_darwin.go
+++ b/pkg/minikube/driver/driver_darwin.go
@@ -28,6 +28,7 @@ var supportedDrivers = func() []string {
 		// on darwin/arm64 only docker and ssh are supported yet
 		return []string{
 			QEMU2,
+			Parallels,
 			Docker,
 			Podman,
 			SSH,
diff --git a/pkg/minikube/image/image.go b/pkg/minikube/image/image.go
index 0db355616..b567036c6 100644
--- a/pkg/minikube/image/image.go
+++ b/pkg/minikube/image/image.go
@@ -19,6 +19,7 @@ package image
 import (
 	"context"
 	"fmt"
+	"io"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -207,7 +208,24 @@ func UploadCachedImage(imgName string) error {
 		klog.Infof("error parsing image name %s tag %v ", imgName, err)
 		return err
 	}
-	return uploadImage(tag, imagePathInCache(imgName))
+	if err := uploadImage(tag, imagePathInCache(imgName)); err != nil {
+		// this time try determine image tags from tarball
+
+		manifest, err := tarball.LoadManifest(func() (io.ReadCloser, error) {
+			return os.Open(imagePathInCache(imgName))
+		})
+		if err != nil || len(manifest) == 0 || len(manifest[0].RepoTags) == 0 {
+			return fmt.Errorf("failed to determine the image tag from tarball, err: %v", err)
+		}
+
+		tag, err = name.NewTag(manifest[0].RepoTags[0], name.WeakValidation)
+		if err != nil {
+			klog.Infof("error parsing image name: %s ", err.Error())
+			return err
+		}
+		return uploadImage(tag, imagePathInCache(imgName))
+	}
+	return nil
 }
 
 func uploadImage(tag name.Tag, p string) error {
diff --git a/pkg/minikube/machine/cache_images.go b/pkg/minikube/machine/cache_images.go
index 4aab47665..2e0c6be38 100644
--- a/pkg/minikube/machine/cache_images.go
+++ b/pkg/minikube/machine/cache_images.go
@@ -335,7 +335,7 @@ func removeExistingImage(r cruntime.Manager, src string, imgName string) error {
 	}
 
 	errStr := strings.ToLower(err.Error())
-	if !strings.Contains(errStr, "no such image") {
+	if !strings.Contains(errStr, "no such image") && !strings.Contains(errStr, "unable to remove the image") {
 		return errors.Wrap(err, "removing image")
 	}
 
@@ -472,9 +472,22 @@ func transferAndSaveImage(cr command.Runner, k8s config.KubernetesConfig, dst st
 	if err != nil {
 		return errors.Wrap(err, "runtime")
 	}
+	found := false
+	// the reason why we are doing this is that
+	// unlike other tool, podman assume the image has a localhost registry (not docker.io)
+	// if the image is loaded with a tarball without a registry specified in tag
+	// see https://github.com/containers/podman/issues/15974
+	tryImageExist := []string{imgName, cruntime.AddDockerIO(imgName), cruntime.AddLocalhostPrefix(imgName)}
+	for _, imgName = range tryImageExist {
+		if r.ImageExists(imgName, "") {
+			found = true
+			break
+		}
+	}
 
-	if !r.ImageExists(imgName, "") {
-		return errors.Errorf("image %s not found", imgName)
+	if !found {
+		// if all of this failed, return the original error
+		return fmt.Errorf("image not found %s", imgName)
 	}
 
 	klog.Infof("Saving image to: %s", dst)
diff --git a/site/content/en/docs/commands/addons.md b/site/content/en/docs/commands/addons.md
index a850f2e97..7fc106349 100644
--- a/site/content/en/docs/commands/addons.md
+++ b/site/content/en/docs/commands/addons.md
@@ -219,6 +219,12 @@ minikube addons images ADDON_NAME [flags]
 minikube addons images ingress
 ```
 
+### Options
+
+```
+  -o, --output string   minikube addons images ADDON_NAME --output OUTPUT. table, json (default "table")
+```
+
 ### Options inherited from parent commands
 
 ```
diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md
index a9a409f6a..497f13936 100644
--- a/site/content/en/docs/commands/start.md
+++ b/site/content/en/docs/commands/start.md
@@ -27,7 +27,7 @@ minikube start [flags]
       --apiserver-port int                The apiserver listening port (default 8443)
       --auto-pause-interval duration      Duration of inactivity before the minikube VM is paused (default 1m0s) (default 1m0s)
       --auto-update-drivers               If set, automatically updates drivers to the latest version. Defaults to true. (default true)
-      --base-image string                 The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.44-1721902582-19326@sha256:540fb5dc7f38be17ff5276a38dfe6c8a4b1d9ba1c27c62244e6eebd7e37696e7")
+      --base-image string                 The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.44-1723026928-19389@sha256:7715fe0c5dce35b4eb757765cbbe02d40cd8b5effa0639735e42ad89f4f51ef0")
       --binary-mirror string              Location to fetch kubectl, kubelet, & kubeadm binaries from.
       --cache-images                      If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true)
       --cert-expiration duration          Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s)
@@ -45,7 +45,7 @@ minikube start [flags]
       --docker-env stringArray            Environment variables to pass to the Docker daemon. (format: key=value)
       --docker-opt stringArray            Specify arbitrary flags to pass to the Docker daemon. (format: key=value)
       --download-only                     If true, only download and cache files for later use - don't install or start anything.
-      --driver string                     Used to specify the driver to run Kubernetes in. The list of available drivers depends on operating system.
+  -d, --driver string                     Used to specify the driver to run Kubernetes in. The list of available drivers depends on operating system.
       --dry-run                           dry-run mode. Validates configuration, but does not mutate system state
       --embed-certs                       if true, will embed the certs in kubeconfig.
       --enable-default-cni                DEPRECATED: Replaced by --cni=bridge
@@ -74,7 +74,7 @@ minikube start [flags]
       --interactive                       Allow user prompts for more information (default true)
       --iso-url strings                   Locations to fetch the minikube ISO from. The list depends on the machine architecture.
       --keep-context                      This will keep the existing kubectl context and will create a minikube context.
-      --kubernetes-version string         The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.30.3, 'latest' for v1.31.0-beta.0). Defaults to 'stable'.
+      --kubernetes-version string         The Kubernetes version that the minikube VM will use (ex: v1.2.3, 'stable' for v1.30.3, 'latest' for v1.31.0-rc.0). Defaults to 'stable'.
       --kvm-gpu                           Enable experimental NVIDIA GPU support in minikube
       --kvm-hidden                        Hide the hypervisor signature from the guest in minikube (kvm2 driver only)
       --kvm-network string                The KVM default network name. (kvm2 driver only) (default "default")
diff --git a/translations/de.json b/translations/de.json
index 943998208..1d18602db 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -1069,6 +1069,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "Liste alle Versionen der Komponenten die in Minikube enthalten sind.",
 	"loading profile": "Lade Profil",
 	"max time to wait per Kubernetes or host to be healthy.": "maximale Zeit die gewartet werden soll, bis Kubernetes oder der Host als funktional angesehen soll.",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "Minikube unterstützt den BTRFS Storage Treiber noch nicht, aber es existiert eine Workaround, fügen Sie folgenden Flag zu Ihrem Start-Befehl hinzu `--feature-gates=\"LocalStorageCapacityIsolation=false\"`",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\\\"LocalStorageCapacityIsolation=false\\\"`": "minikube unterstützt den BTRFS Storage Treiber nicht, es gibt einen Workaround, füge den folgenden Paramater zum Start-Befehl hinzu `--feature-gates=\\\"LocalStorageCapacityIsolation=false\\\"`",
@@ -1159,6 +1160,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} hat keine Images.",
 	"{{.name}} has following images:": "{{.name}} hat die folgenden Images:",
 	"{{.name}} has no available configuration options": "{{.name}} hat keine verfügbaren Konfigurations-Optionen",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} läuft bereits",
 	"{{.name}} was successfully configured": "{{.name}} wurde erfolgreich konfiguriert",
 	"{{.name}}\" profile does not exist": "Profil \"{{.name}}\" existiert nicht",
diff --git a/translations/es.json b/translations/es.json
index fe87c3a98..a9e430454 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -1028,6 +1028,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "",
 	"loading profile": "",
 	"max time to wait per Kubernetes or host to be healthy.": "",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
@@ -1113,8 +1114,8 @@
 	"{{.driver_name}} has only {{.container_limit}}MB memory but you specified {{.specified_memory}}MB": "",
 	"{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "",
 	"{{.name}} doesn't have images.": "",
-	"{{.name}} has following images:": "",
 	"{{.name}} has no available configuration options": "",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "",
 	"{{.name}} was successfully configured": "",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "",
diff --git a/translations/fr.json b/translations/fr.json
index 7355b6588..62b9c12f8 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -1054,6 +1054,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "répertorier les versions de tous les composants inclus avec minikube. (le cluster doit être en cours d'exécution)",
 	"loading profile": "profil de chargement",
 	"max time to wait per Kubernetes or host to be healthy.": "temps d'attente maximal par Kubernetes ou hôte pour être en bonne santé.",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "liste des modules minikube --output OUTPUT. json, liste",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "minikube ne prend pas encore en charge le pilote de stockage BTRFS, il existe une solution de contournement, ajoutez l'indicateur suivant à votre commande de démarrage `--feature-gates=\"LocalStorageCapacityIsolation=false\"`",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "minikube manque des fichiers relatifs à votre environnement invité. Cela peut être corrigé en exécutant 'minikube delete'",
@@ -1150,6 +1151,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} n'a pas d'images.",
 	"{{.name}} has following images:": "{{.name}} a les images suivantes :",
 	"{{.name}} has no available configuration options": "{{.name}} n'a pas d'options de configuration disponible",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} est déjà en cours d'exécution",
 	"{{.name}} was successfully configured": "{{.name}} a été configuré avec succès",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "{{.n}} manque presque d'espace disque, ce qui peut entraîner l'échec des déploiements ! ({{.p}} % de la capacité)",
diff --git a/translations/ja.json b/translations/ja.json
index f29a183bf..97800cd79 100644
--- a/translations/ja.json
+++ b/translations/ja.json
@@ -1005,6 +1005,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "minikube に含まれる全コンポーネントのバージョン一覧を出力します (クラスターが実行中でなければなりません)。",
 	"loading profile": "プロファイルを読み込み中",
 	"max time to wait per Kubernetes or host to be healthy.": "Kubernetes またはホストが正常稼働するまでの最大待機時間",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "minikube addons list --output OUTPUT. json, list",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "minikube はまだ BTRFS ストレージドライバーに対応していませんが、回避策があります。次のフラグを start コマンドに追加してください: `--feature-gates=\"LocalStorageCapacityIsolation=false\"` ",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "minikube はあなたのゲスト環境に関連するファイルを見失いました。これは 'minikube delete' を実行することで修正できます",
@@ -1096,6 +1097,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} はイメージがありません。",
 	"{{.name}} has following images:": "{{.name}} は次のイメージがあります:",
 	"{{.name}} has no available configuration options": "{{.name}} には利用可能な設定オプションがありません",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} はすでに実行中です",
 	"{{.name}} was successfully configured": "{{.name}} は正常に設定されました",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "{{.n}} はほとんどディスクがいっぱいで、デプロイが失敗する原因になりかねません！(容量の {{.p}}%)。'--force' を指定するとこのチェックをスキップできます。",
diff --git a/translations/ko.json b/translations/ko.json
index 9eaeb0a50..fac638614 100644
--- a/translations/ko.json
+++ b/translations/ko.json
@@ -1043,6 +1043,7 @@
 	"logdir set failed": "logdir 설정이 실패하였습니다",
 	"machine '{{.name}}' does not exist. Proceeding ahead with recreating VM.": "머신 '{{.name}}' 이 존재하지 않습니다. 진행하기 앞서 가상 머신을 재생성합니다",
 	"max time to wait per Kubernetes or host to be healthy.": "",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
@@ -1133,6 +1134,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} 이미지가 없습니다.",
 	"{{.name}} has following images:": "{{.name}}에는 다음과 같은 이미지가 있습니다.",
 	"{{.name}} has no available configuration options": "{{.name}} 이 사용 가능한 환경 정보 옵션이 없습니다",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} 이 이미 실행 중입니다",
 	"{{.name}} was successfully configured": "{{.name}} 이 성공적으로 설정되었습니다",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "",
diff --git a/translations/pl.json b/translations/pl.json
index c945571cc..afaf67cc6 100644
--- a/translations/pl.json
+++ b/translations/pl.json
@@ -1039,6 +1039,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "",
 	"loading profile": "Ładowanie profilu",
 	"max time to wait per Kubernetes or host to be healthy.": "",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
@@ -1128,6 +1129,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} nie ma obrazów.",
 	"{{.name}} has following images:": "{{.name}} ma następujące obrazy:",
 	"{{.name}} has no available configuration options": "{{.name}} nie posiada opcji konfiguracji",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} został już wcześniej uruchomiony",
 	"{{.name}} was successfully configured": "{{.name}} skonfigurowano pomyślnie",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "{{.n}} prawie nie ma wolnej przestrzeni dyskowej, co może powodować, że wdrożenia nie powiodą się ({{.p}}% zużycia przestrzeni dyskowej)",
diff --git a/translations/ru.json b/translations/ru.json
index bf4fecbe0..a19fc189b 100644
--- a/translations/ru.json
+++ b/translations/ru.json
@@ -957,6 +957,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "",
 	"loading profile": "",
 	"max time to wait per Kubernetes or host to be healthy.": "",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
@@ -1041,8 +1042,8 @@
 	"{{.driver_name}} has only {{.container_limit}}MB memory but you specified {{.specified_memory}}MB": "",
 	"{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "",
 	"{{.name}} doesn't have images.": "",
-	"{{.name}} has following images:": "",
 	"{{.name}} has no available configuration options": "",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "",
 	"{{.name}} was successfully configured": "",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "В {{.n}} заканчивается место на диске, что может привести к проблемам в работе! ({{.p}}% занято)",
diff --git a/translations/strings.txt b/translations/strings.txt
index e20082c3e..44dc2f7f9 100644
--- a/translations/strings.txt
+++ b/translations/strings.txt
@@ -955,6 +955,7 @@
 	"list versions of all components included with minikube. (the cluster must be running)": "",
 	"loading profile": "",
 	"max time to wait per Kubernetes or host to be healthy.": "",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "",
 	"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
@@ -1039,8 +1040,8 @@
 	"{{.driver_name}} has only {{.container_limit}}MB memory but you specified {{.specified_memory}}MB": "",
 	"{{.driver}} only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "",
 	"{{.name}} doesn't have images.": "",
-	"{{.name}} has following images:": "",
 	"{{.name}} has no available configuration options": "",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "",
 	"{{.name}} was successfully configured": "",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "",
diff --git a/translations/zh-CN.json b/translations/zh-CN.json
index c641d40f3..c1e747b09 100644
--- a/translations/zh-CN.json
+++ b/translations/zh-CN.json
@@ -1177,6 +1177,7 @@
 	"loading profile": "加载配置文件",
 	"max time to wait per Kubernetes core services to be healthy.": "每个 Kubernetes 核心服务保持健康所需的最长时间。",
 	"max time to wait per Kubernetes or host to be healthy.": "Kubernetes 或主机正常运行前的最大等待时间。",
+	"minikube addons images ADDON_NAME --output OUTPUT. table, json": "",
 	"minikube addons list --output OUTPUT. json, list": "minikube addons list --output OUTPUT. json, list",
 	"minikube does not support the BTRFS storage driver yet, there is a workaround, add the following flag to your start command `--feature-gates=\"LocalStorageCapacityIsolation=false\"`": "minikube 尚不支持 BTRFS 存储驱动程序，有一个解决方法，将以下标志添加到你的启动命令 `--feature-gates=\"LocalStorageCapacityIsolation=false\"`",
 	"minikube is exiting due to an error. If the above message is not useful, open an issue:": "由于出错 minikube 正在退出。如果以上信息没有帮助，请提交问题反馈：",
@@ -1270,6 +1271,7 @@
 	"{{.name}} doesn't have images.": "{{.name}} 没有镜像",
 	"{{.name}} has following images:": "{{.name}} 有以下镜像",
 	"{{.name}} has no available configuration options": "{{.name}} 没有可用的配置选项",
+	"{{.name}} has the following images:": "",
 	"{{.name}} is already running": "{{.name}} 已经在运行",
 	"{{.name}} was successfully configured": "{{.name}} 成功配置",
 	"{{.n}} is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity). You can pass '--force' to skip this check.": "{{.n}} 的磁盘空间即将耗尽，可能导致部署失败！（已使用容量的{{.p}}%）。您可以传递 '--force' 参数来跳过此检查。",


Test patch:
diff --git a/cmd/minikube/cmd/start_test.go b/cmd/minikube/cmd/start_test.go
index 6a5b799c3..c19e151d3 100644
--- a/cmd/minikube/cmd/start_test.go
+++ b/cmd/minikube/cmd/start_test.go
@@ -30,7 +30,6 @@ import (
 	cfg "k8s.io/minikube/pkg/minikube/config"
 	"k8s.io/minikube/pkg/minikube/constants"
 	"k8s.io/minikube/pkg/minikube/cruntime"
-	"k8s.io/minikube/pkg/minikube/detect"
 	"k8s.io/minikube/pkg/minikube/driver"
 	"k8s.io/minikube/pkg/minikube/proxy"
 )
@@ -581,171 +580,98 @@ func TestIsTwoDigitSemver(t *testing.T) {
 }
 
 func TestValidatePorts(t *testing.T) {
-	isMicrosoftWSL := detect.IsMicrosoftWSL()
 	type portTest struct {
-		// isTarget indicates whether or not the test case is covered
-		// because validatePorts behaves differently depending on whether process is running in WSL in windows or not.
-		isTarget bool
 		ports    []string
 		errorMsg string
 	}
 	var tests = []portTest{
 		{
-			isTarget: true,
 			ports:    []string{"8080:80"},
 			errorMsg: "",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"8080:80/tcp", "8080:80/udp"},
 			errorMsg: "",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"test:8080"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [test:8080] (Invalid hostPort: test)",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"0:80"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"0:80/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"65536:80/udp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [65536:80/udp] (Invalid hostPort: 65536)",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"0-1:80-81/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"0-1:80-81/udp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: !isMicrosoftWSL,
 			ports:    []string{"80:80", "1023-1025:8023-8025", "1023-1025:8023-8025/tcp", "1023-1025:8023-8025/udp"},
 			errorMsg: "",
 		},
 		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"80:80"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"1023-1025:8023-8025"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"1023-1025:8023-8025/tcp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"1023-1025:8023-8025/udp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
-		},
-		{
-			isTarget: true,
 			ports:    []string{"127.0.0.1:8080:80", "127.0.0.1:8081:80/tcp", "127.0.0.1:8081:80/udp", "127.0.0.1:8082-8083:8082-8083/tcp"},
 			errorMsg: "",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"1000.0.0.1:80:80"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1000.0.0.1:80:80] (Invalid ip address: 1000.0.0.1)",
 		},
 		{
-			isTarget: !isMicrosoftWSL,
 			ports:    []string{"127.0.0.1:80:80", "127.0.0.1:81:81/tcp", "127.0.0.1:81:81/udp", "127.0.0.1:82-83:82-83/tcp", "127.0.0.1:82-83:82-83/udp"},
 			errorMsg: "",
 		},
 		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"127.0.0.1:80:80"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"127.0.0.1:81:81/tcp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 81",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"127.0.0.1:81:81/udp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 81",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"127.0.0.1:80-83:80-83/tcp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
-		},
-		{
-			isTarget: isMicrosoftWSL,
-			ports:    []string{"127.0.0.1:80-83:80-83/udp"},
-			errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
-		},
-		{
-			isTarget: true,
 			ports:    []string{"80"},
 			errorMsg: "",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"80", "65535", "65536"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 65536",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"0", "80", "65535"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"cats"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid: cats",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"127.0.0.1:81:0/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"127.0.0.1:81:65536/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [127.0.0.1:81:65536/tcp] (Invalid containerPort: 65536)",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"1-65536:80-81/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-65536:80-81/tcp] (Invalid hostPort: 1-65536)",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"1-80:0-81/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-80:0-81/tcp] (Invalid ranges specified for container and host Ports: 0-81 and 1-80)",
 		},
 		{
-			isTarget: true,
 			ports:    []string{"1-80:1-65536/tcp"},
 			errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-80:1-65536/tcp] (Invalid containerPort: 1-65536)",
 		},
 	}
 	for _, test := range tests {
 		t.Run(strings.Join(test.ports, ","), func(t *testing.T) {
-			if !test.isTarget {
-				return
-			}
 			gotError := ""
 			got := validatePorts(test.ports)
 			if got != nil {
diff --git a/deploy/iso/minikube-iso/package/crun-latest/crun-latest.hash b/deploy/iso/minikube-iso/package/crun-latest/crun-latest.hash
index 307cb09ce..486ce80d1 100644
--- a/deploy/iso/minikube-iso/package/crun-latest/crun-latest.hash
+++ b/deploy/iso/minikube-iso/package/crun-latest/crun-latest.hash
@@ -9,3 +9,4 @@ sha256 1032a69878c18ddeeb97cd26251c2819afb76e0d4a50c047139829b00d147978  crun-1.
 sha256 f6ceb53ef6c686b1e8bc7e4a52cfac3ebec915edc6bc750ac600a8b3decb6e13 crun-1.14.tar.gz
 sha256 5527013bfdac4001f242fbc3b544d01837d942f426fdefcc296f0d271594eeb4 crun-1.14.4.tar.gz
 sha256 a03ba1e58b8823ae77d010024b43bd94c5a99f7d652257b1b23abd2d2cdb087f crun-1.15.tar.gz
+sha256 0019dfc4b32d63c1392aa264aed2253c1e0c2fb09216f8e2cc269bbfb8bb49b5 crun-1.16.tar.gz
diff --git a/deploy/iso/minikube-iso/package/crun-latest/crun-latest.mk b/deploy/iso/minikube-iso/package/crun-latest/crun-latest.mk
index 9d016d490..1b3633c4b 100644
--- a/deploy/iso/minikube-iso/package/crun-latest/crun-latest.mk
+++ b/deploy/iso/minikube-iso/package/crun-latest/crun-latest.mk
@@ -4,8 +4,8 @@
 #
 ################################################################################
 
-CRUN_LATEST_VERSION = 1.15
-CRUN_LATEST_COMMIT = e6eacaf4034e84185fd8780ac9262bbf57082278
+CRUN_LATEST_VERSION = 1.16
+CRUN_LATEST_COMMIT = 2dc1598e7e56157b3414eb6c9f9efbb5ce9f5e44
 # need the pre-generated release tarball with the git submodules and configure
 CRUN_LATEST_SITE = https://github.com/containers/crun/releases/download/$(CRUN_LATEST_VERSION)
 CRUN_LATEST_LICENSE = GPL-2.0
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-api-port.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-api-port.yaml
index a61fa8041..121d80f80 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-api-port.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-api-port.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-pod-network-cidr.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-pod-network-cidr.yaml
index 0fe7dad51..4462641f6 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-pod-network-cidr.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd-pod-network-cidr.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "192.168.32.0/20"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd.yaml
index a35e33824..03e2ff681 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/containerd.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio-options-gates.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio-options-gates.yaml
index 86a5b6c29..283cb0d4e 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio-options-gates.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio-options-gates.yaml
@@ -44,7 +44,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio.yaml
index f3fa4a381..563af1e64 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/crio.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/default.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/default.yaml
index 79b08b1fc..d01a10746 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/default.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/default.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/dns.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/dns.yaml
index db42b71f7..e350a140f 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/dns.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/dns.yaml
@@ -38,7 +38,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: minikube.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/image-repository.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/image-repository.yaml
index 9e06890ed..9d0f40c12 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/image-repository.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/image-repository.yaml
@@ -39,7 +39,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/options.yaml b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/options.yaml
index eb34e8548..83cd1beeb 100644
--- a/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/options.yaml
+++ b/pkg/minikube/bootstrapper/bsutil/testdata/v1.31/options.yaml
@@ -41,7 +41,7 @@ etcd:
     dataDir: /var/lib/minikube/etcd
     extraArgs:
       proxy-refresh-interval: "70000"
-kubernetesVersion: v1.31.0-beta.0
+kubernetesVersion: v1.31.0-rc.0
 networking:
   dnsDomain: cluster.local
   podSubnet: "10.244.0.0/16"
diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go
index 8d08e5770..3792a8073 100644
--- a/test/integration/functional_test.go
+++ b/test/integration/functional_test.go
@@ -55,9 +55,10 @@ import (
 	"github.com/phayes/freeport"
 	"github.com/pkg/errors"
 	"golang.org/x/build/kubernetes/api"
+	"k8s.io/minikube/pkg/minikube/cruntime"
 )
 
-const echoServerImg = "docker.io/kicbase/echo-server"
+const echoServerImg = "kicbase/echo-server"
 
 // validateFunc are for subtests that share a single setup
 type validateFunc func(context.Context, *testing.T, string)
@@ -424,8 +425,11 @@ func validateImageCommands(ctx context.Context, t *testing.T, profile string) {
 		if err != nil {
 			t.Fatalf("saving image from minikube to daemon: %v\n%s", err, rr.Output())
 		}
-
-		rr, err = Run(t, exec.CommandContext(ctx, "docker", "image", "inspect", taggedImage))
+		imageToDelete := taggedImage
+		if ContainerRuntime() == "crio" {
+			imageToDelete = cruntime.AddLocalhostPrefix(imageToDelete)
+		}
+		rr, err = Run(t, exec.CommandContext(ctx, "docker", "image", "inspect", imageToDelete))
 		if err != nil {
 			t.Fatalf("expected image to be loaded into Docker, but image was not found: %v\n%s", err, rr.Output())
 		}