Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion pkg/minikube/constants/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ const (
// NOTE: You may need to update coreDNS & etcd versions in pkg/minikube/bootstrapper/images/images.go
NewestKubernetesVersion = "v1.34.0"
// OldestKubernetesVersion is the oldest Kubernetes version to test against
OldestKubernetesVersion = "v1.20.0"
// TODO: upodate to 6 releases before from DefaultKubernetesVersion
OldestKubernetesVersion = "v1.28.0"

// NoKubernetesVersion is the version used when users does NOT want to install kubernetes
NoKubernetesVersion = "v0.0.0"

Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/drivers/none.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ As Kubernetes has full access to both your filesystem as well as your docker ima
* Many `minikube` commands are not supported, such as: `dashboard`, `mount`, `ssh`
* minikube with the `none` driver has a confusing permissions model, as some commands need to be run as root ("start"), and others by a regular user ("dashboard")
* CoreDNS detects resolver loop, goes into CrashLoopBackOff - [#3511](https://github.com/kubernetes/minikube/issues/3511)
* Some versions of Linux have a version of docker that is newer than what Kubernetes expects. To overwrite this, run minikube with the following parameters: `minikube start --driver=none --kubernetes-version v1.11.8 --extra-config kubeadm.ignore-preflight-errors=SystemVerification`
* Some versions of Linux have a version of docker that is newer than what Kubernetes expects. To overwrite this, run minikube with the following parameters: `minikube start --driver=none --kubernetes-version v1.34.0 --extra-config kubeadm.ignore-preflight-errors=SystemVerification`

* [Full list of open 'none' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fnone-driver)

Expand Down
20 changes: 10 additions & 10 deletions site/content/en/docs/faq/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ You can create a Kubernetes cluster with any version you desire using `--kuberne
Example:

```bash
minikube start --kubernetes-version=v1.15.0
minikube start --kubernetes-version=v1.34.0
```

## How can I create more than one cluster with minikube?
Expand All @@ -40,7 +40,7 @@ Yes! If you want to use minikube only as a Docker Desktop replacement without st
minikube start --container-runtime=docker --no-kubernetes
```

Alternatively, if you want to temporarily turn off Kubernetes, you can pause and later unpause Kubernetes
Alternatively, if you want to temporarily turn off Kubernetes, you can pause and later unpause Kubernetes
```
minikube pause
```
Expand All @@ -65,7 +65,7 @@ minikube start --force-systemd=true

## How can I run minikube with the Docker driver if I have an existing cluster with a VM driver?

First please ensure your Docker service is running. Then you need to either:
First please ensure your Docker service is running. Then you need to either:

(a) Delete the existing cluster and create a new one

Expand All @@ -77,7 +77,7 @@ minikube start --driver=docker
Alternatively, (b) Create a second cluster with a different profile name:

```bash
minikube start -p p1 --driver=docker
minikube start -p p1 --driver=docker
```

## Does minikube support IPv6?
Expand All @@ -88,7 +88,7 @@ minikube currently doesn't support IPv6. However, it is on the [roadmap]({{< ref

The easiest approach is to use the `docker` driver, as the backend service always runs as `root`.

`none` users may want to try `CHANGE_MINIKUBE_NONE_USER=true`, where kubectl and such will work without `sudo`. See [environment variables]({{< ref "/docs/handbook/config.md#environment-variables" >}}) for more details.
`none` users may want to try `CHANGE_MINIKUBE_NONE_USER=true`, where kubectl and such will work without `sudo`. See [environment variables]({{< ref "/docs/handbook/config.md#environment-variables" >}}) for more details.

Alternatively, you can configure `sudo` to never prompt for commands issued by minikube.

Expand Down Expand Up @@ -178,15 +178,15 @@ This is not recommended, but for some users who are willing to accept potential

After executing `minikube start`, minikube will try to pulling images from `gcr.io` or Docker Hub. However, it has been confirmed that Chinese (mainland) users may not have access to `gcr.io` or Docker Hub. So in China mainland, it is very likely that `minikube start` will fail.

For Chinese users, the reason is that China mainland government has set up GFW firewall to block any access to `gcr.io` or Docker Hub from China mainland.
For Chinese users, the reason is that China mainland government has set up GFW firewall to block any access to `gcr.io` or Docker Hub from China mainland.

Minikube is an open community and we are always willing to help users from any corner of the world to use our open-source software, and provide possible assistance when possible. Here are 3 possible ways to resolve the blockade.

1. Use `minikube start --image-mirror-country='cn'` instead. Aliyun (a Chinese corporation) provides a mirror repository (`registry.cn-hangzhou.aliyuncs.com/google_containers`) for those images, to which Chinese users have access. By using `--image-mirror-country='cn'` flag, minikube will try to pull the image from Aliyun mirror site as first priority. <br/><br/> *Note: when a new image is published on gcr.io, it may take several days for the image to be synchronized to Aliyun mirror repo. However, minikube will always try to pull the newest image by default, which will cause a failure of pulling image. Under this circumstance, you HAVE TO use `--kubernetes-version` flag AS WELL to tell minikube to use an older version image which is available on Aliyun repo.* <br/><br/> *For example, `minikube start --image-mirror-country='cn' --kubernetes-version=v1.23.8` will tell minikube to pull v1.23.8 k8s image from Aliyun.*
1. Use `minikube start --image-mirror-country='cn'` instead. Aliyun (a Chinese corporation) provides a mirror repository (`registry.cn-hangzhou.aliyuncs.com/google_containers`) for those images, to which Chinese users have access. By using `--image-mirror-country='cn'` flag, minikube will try to pull the image from Aliyun mirror site as first priority. <br/><br/> *Note: when a new image is published on gcr.io, it may take several days for the image to be synchronized to Aliyun mirror repo. However, minikube will always try to pull the newest image by default, which will cause a failure of pulling image. Under this circumstance, you HAVE TO use `--kubernetes-version` flag AS WELL to tell minikube to use an older version image which is available on Aliyun repo.* <br/><br/> *For example, `minikube start --image-mirror-country='cn' --kubernetes-version=v1.34.0` will tell minikube to pull v1.34.0 k8s image from Aliyun.*

2. If you have a private mirror repository provided by your own cloud provider, you can specify that via `--image-repository` flag. For example, using `minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'` will tell minikube to try to pull images from `registry.cn-hangzhou.aliyuncs.com/google_containers` mirror repository as first priority.
3. Use a proxy server/VPN, if you have one. <br/> *Note: please obey the local laws. In some area, using an unauthorized proxy server/VPN is ILLEGAL*
2. If you have a private mirror repository provided by your own cloud provider, you can specify that via `--image-repository` flag. For example, using `minikube start --image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'` will tell minikube to try to pull images from `registry.cn-hangzhou.aliyuncs.com/google_containers` mirror repository as first priority.

3. Use a proxy server/VPN, if you have one. <br/> *Note: please obey the local laws. In some area, using an unauthorized proxy server/VPN is ILLEGAL*

## How do I install containernetworking-plugins for none driver?

Expand Down
6 changes: 3 additions & 3 deletions site/content/en/docs/handbook/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Configuration"
weight: 4
description: >
Configuring your cluster
Configuring your cluster
aliases:
- /docs/reference/environment_variables/
- /docs/reference/configuration/kubernetes/
Expand Down Expand Up @@ -50,9 +50,9 @@ This flag is repeated, so you can pass it several times with several different v
By default, minikube installs the latest stable version of Kubernetes that was available at the time of the minikube release. You may select a different Kubernetes release by using the `--kubernetes-version` flag, for example:

```shell
minikube start --kubernetes-version=v1.11.10
minikube start --kubernetes-version=v1.34.0
```

minikube follows the [Kubernetes Version and Version Skew Support Policy](https://kubernetes.io/docs/setup/version-skew-policy/), so we guarantee support for the latest build for the last 3 minor Kubernetes releases. When practical, minikube aims to support older releases as well so that users can emulate legacy environments.

For up to date information on supported versions, see `OldestKubernetesVersion` and `NewestKubernetesVersion` in [constants.go](https://github.com/kubernetes/minikube/blob/master/pkg/minikube/constants/constants.go)
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/start/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,7 @@ minikube addons list
Create a second cluster running an older Kubernetes release:

```shell
minikube start -p aged --kubernetes-version=v1.16.1
minikube start -p aged --kubernetes-version=v1.34.0
```

Delete all of the minikube clusters:
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/tutorials/volume_snapshots_and_csi.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This tutorial explains how to set up the CSI Hostpath Driver in minikube and cre
## Prerequisites

- latest version of minikube
- kubernetes v1.20 or later
- kubernetes v1.28 or later

## What you’ll need

Expand Down
4 changes: 3 additions & 1 deletion test/integration/no_kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import (
"os/exec"
"strings"
"testing"

"k8s.io/minikube/pkg/minikube/constants"
)

// TestNoKubernetes tests starting minikube without Kubernetes,
Expand Down Expand Up @@ -79,7 +81,7 @@ func validateStartNoK8sWithVersion(ctx context.Context, t *testing.T, profile st
defer PostMortemLogs(t, profile)

// docs: start minikube with no kubernetes.
args := append([]string{"start", "-p", profile, "--no-kubernetes", "--kubernetes-version=1.20"}, StartArgs()...)
args := append([]string{"start", "-p", profile, "--no-kubernetes", "--kubernetes-version=" + constants.OldestKubernetesVersion}, StartArgs()...)
rr, err := Run(t, exec.CommandContext(ctx, Target(), args...))
if err == nil {
t.Fatalf("expected an error but none was thrown with args: %q", rr.Command())
Expand Down
3 changes: 1 addition & 2 deletions test/integration/preload_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ func TestPreload(t *testing.T) {

startArgs := []string{"start", "-p", profile, "--memory=3072", "--alsologtostderr", "--wait=true", "--preload=false"}
startArgs = append(startArgs, StartArgs()...)
k8sVersion := "v1.24.4"
startArgs = append(startArgs, fmt.Sprintf("--kubernetes-version=%s", k8sVersion))
startArgs = append(startArgs, fmt.Sprintf("--kubernetes-version=%s", legacyVersion()))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this one is a test that we specifically do NOT have a preload for this kubernetes version and we are testing that no preload for this...this might break the test

I might be wrong but I am feeling we chose ""v1.24.4" as one that wont ever get a preload for testing purposes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It may be possible, but we cannot do this. The tested version must be dynamic and change each time we update k8s version, on every release. If this test depend on not having a preload we need to find another way to cause to make preload lookup to fail, or delete the test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.24.4 is is too old to be compatible with containerd v2. Even 1.28 is not supported.


rr, err := Run(t, exec.CommandContext(ctx, Target(), startArgs...))
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion test/integration/version_upgrade_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func legacyVersion() string {
// Should be a version from the last 6 months
// note: Test*BinaryUpgrade require minikube v1.22+ to satisfy newer containerd config structure
// note: TestMissingContainerUpgrade requires minikube v1.26.0+ where we copy over initial containerd config in kicbase via deploy/kicbase/Dockerfile
version := "v1.26.0" // 2022-06-23
version := "v1.32.0" // Dec 11, 2024
return version
}

Expand Down
Loading