提交 d6965d52 编写于 作者: S Sharif Elgamal

Merge branch 'master' of github.com:kubernetes/minikube into 1.13

# Release Notes
## Version 1.13.0 - TBD
## Features
* Update default Kubernetes version to v1.19.0 🎉 [#9050](https://github.com/kubernetes/minikube/pull/9050)
* start: Support for mounting host volumes on start with docker driver [#8159](https://github.com/kubernetes/minikube/pull/8159)
* start: Add a machine readable reason to all error paths [#9126](https://github.com/kubernetes/minikube/pull/9126)
* stop: add --keep-context-active flag [#9044](https://github.com/kubernetes/minikube/pull/9044)
* kubectl: Invoke kubectl if minikube binary is named 'kubectl' [#8872](https://github.com/kubernetes/minikube/pull/8872)
## Bug fixes
* docker: Choose the appropriate bridge interface when multiple exist [#9062](https://github.com/kubernetes/minikube/pull/9062)
* cache: Fix "cache add" for local images by cherry-picking go-containerregistry fix [#9160](https://github.com/kubernetes/minikube/pull/9160)
* update-context: Fix nil pointer dereference [#8989](https://github.com/kubernetes/minikube/pull/8989)
* start: Fix --extra-config for scheduler/controllerManager by removing hardcoded values [#9136](https://github.com/kubernetes/minikube/pull/9136)
* start: Fix --memory flag parsing in minikube start [#9033](https://github.com/kubernetes/minikube/pull/9033)
* start: Improve overlay module check (behavior & UX) [#9163](https://github.com/kubernetes/minikube/pull/9163)
* gcp-auth addon: trim whitespace when setting gcp project id [#9164](https://github.com/kubernetes/minikube/pull/9164)
* cni: Allow flannel CNI to work with kicbase by fixing IP conflict [#9046](https://github.com/kubernetes/minikube/pull/9046)
* cni: fix multiple node calico-node not ready [#9019](https://github.com/kubernetes/minikube/pull/9019)
* kic: Retry fix_cgroup on failure [#8974](https://github.com/kubernetes/minikube/pull/8974)
* json: fix type for kubectl version mismatch to warning [#9157](https://github.com/kubernetes/minikube/pull/9157)
* json: fix type for latest minikube availability message [#9109](https://github.com/kubernetes/minikube/pull/9109)
* addon-manager: Add namespace to persistent volume path [#9128](https://github.com/kubernetes/minikube/pull/9128)
* ssh: respect native-ssh flag [#8907](https://github.com/kubernetes/minikube/pull/8907)
## Other improvements
* kic: Disable swap in Docker & podman containers [#9149](https://github.com/kubernetes/minikube/pull/9149)
* kic: prioritize /etc/hosts over dns [#9029](https://github.com/kubernetes/minikube/pull/9029)
* start: Repair kubecontext before checking cluster health [#9143](https://github.com/kubernetes/minikube/pull/9143)
* start: Don't enable kubelet until after kubeadm generates config [#9111](https://github.com/kubernetes/minikube/pull/9111)
* start: Add -o shorthand option for --output [#9097](https://github.com/kubernetes/minikube/pull/9097)
* ux: Add MINIKUBE_IN_STYLE auto-detection for Windows terminal [#9127](https://github.com/kubernetes/minikube/pull/9127)
* ux: Warn if /var disk space is full and add a solution message [#9028](https://github.com/kubernetes/minikube/pull/9028)
* iso Upgrade falco-module to version 0.24.0 [#9068](https://github.com/kubernetes/minikube/pull/9068)
* status: `minikube status` should display InsufficientStorage status [#9034](https://github.com/kubernetes/minikube/pull/9034)
* perf: set proxy-refresh-interval=70000 for etcd to improve CPU overhead [#8850](https://github.com/kubernetes/minikube/pull/8850)
* json: buffer download progress every second [#9099](https://github.com/kubernetes/minikube/pull/9099)
* localization: Fix typos in pl translation [#9168](https://github.com/kubernetes/minikube/pull/9168)
* dashboard: Update dashboard to v2.0.3 [#9129](https://github.com/kubernetes/minikube/pull/9129)
Thank you to our many wonderful contributors for this release!
- AlexanderChen1989
- Ambor
- Anders F Björklund
- Anshul Sirur
- Asare Worae
- Chang-Woo Rhee
- Evgeny Shmarnev
- Jose Donizetti
- Kazuki Suda
- Li Zhijian
- Marcin Niemira
- Markus Frosch
- Medya Ghazizadeh
- Pablo Caderno
- Priya Wadhwa
- Sharif Elgamal
- Thomas Strömberg
- anencore94
- mckrl
- ollipa
- staticdev
- vinu2003
- zhanwang
## Version 1.12.3 - 2020-08-12
Features:
......
......@@ -206,14 +206,27 @@ func runStart(cmd *cobra.Command, args []string) {
}
}
if existing != nil && existing.KubernetesConfig.ContainerRuntime == "crio" && driver.IsKIC(existing.Driver) {
// Stop and start again if it's crio because it's broken above v1.17.3
out.WarningT("Due to issues with CRI-O post v1.17.3, we need to restart your cluster.")
out.WarningT("See details at https://github.com/kubernetes/minikube/issues/8861")
stopProfile(existing.Name)
starter, err = provisionWithDriver(cmd, ds, existing)
if err != nil {
exit.Error(reason.GuestProvision, "error provisioning host", err)
if existing != nil && driver.IsKIC(existing.Driver) {
if viper.GetBool(createMount) {
mount := viper.GetString(mountString)
if len(existing.ContainerVolumeMounts) != 1 || existing.ContainerVolumeMounts[0] != mount {
exit.Message(reason.GuestMountConflict, "Sorry, {{.driver}} does not allow mounts to be changed after container creation (previous mount: '{{.old}}', new mount: '{{.new}})'", out.V{
"driver": existing.Driver,
"new": mount,
"old": existing.ContainerVolumeMounts[0],
})
}
}
if existing.KubernetesConfig.ContainerRuntime == "crio" {
// Stop and start again if it's crio because it's broken above v1.17.3
out.WarningT("Due to issues with CRI-O post v1.17.3, we need to restart your cluster.")
out.WarningT("See details at https://github.com/kubernetes/minikube/issues/8861")
stopProfile(existing.Name)
starter, err = provisionWithDriver(cmd, ds, existing)
if err != nil {
exit.Error(reason.GuestProvision, "error provisioning host", err)
}
}
}
......
......@@ -57,8 +57,10 @@ var rootCauses = []string{
`Failed to initialize CSINodeInfo.*forbidden`,
`Failed to admit pod`,
`failed to "StartContainer"`,
`Failed to start ContainerManager`,
`kubelet.*forbidden.*cannot \w+ resource`,
`leases.*forbidden.*cannot \w+ resource`,
`failed to start daemon`,
}
// rootCauseRe combines rootCauses into a single regex
......
......@@ -49,6 +49,8 @@ func TestIsProblem(t *testing.T) {
{"regular scheduler services init", false, ` k8s.io/client-go/informers/factory.go:135: Failed to list *v1.Service: services is forbidden: User "system:kube-scheduler" cannot list resource "services" in API group "" at the cluster scope`},
{"regular scheduler nodes init", false, `k8s.io/client-go/informers/factory.go:135: Failed to list *v1.Node: nodes is forbidden: User "system:kube-scheduler" cannot list resource "nodes" in API group "" at the cluster scope`},
{"kubelet rbac fail", true, `k8s.io/kubernetes/pkg/kubelet/kubelet.go:526: Failed to list *v1.Node: nodes "m01" is forbidden: User "system:node:m01" cannot list resource "nodes" in API group "" at the cluster scope`},
{"kubelet pids cgroup", true, `Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup [kubepods burstable]: failed to find subsystem mount for required subsystem: pids`},
{"docker cgroups v2 fail", true, `failed to start daemon: Devices cgroup isn't mounted`},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
......
......@@ -409,7 +409,7 @@ func startHost(api libmachine.API, cc *config.ClusterConfig, n *config.Node, del
// Don't use host.Driver to avoid nil pointer deref
drv := cc.Driver
out.ErrT(style.Sad, `Failed to start {{.driver}} {{.driver_type}}. "{{.cmd}}" may fix it: {{.error}}`, out.V{"driver": drv, "driver_type": driver.MachineType(drv), "cmd": mustload.ExampleCmd(cc.Name, "start"), "error": err})
out.ErrT(style.Sad, `Failed to start {{.driver}} {{.driver_type}}. Running "{{.cmd}}" may fix it: {{.error}}`, out.V{"driver": drv, "driver_type": driver.MachineType(drv), "cmd": mustload.ExampleCmd(cc.Name, "delete"), "error": err})
return host, exists, err
}
......
......@@ -191,6 +191,25 @@ var hostIssues = []match{
},
Regexp: re(`Container.*is not running.*chown docker:docker`),
},
{
Kind: Kind{
ID: "HOST_PIDS_CGROUP",
ExitCode: ExHostUnsupported,
Advice: "Ensure that the required 'pids' cgroup is enabled on your host: grep pids /proc/cgroups",
Issues: []int{6411},
},
Regexp: re(`failed to find subsystem mount for required subsystem: pids`),
GOOS: []string{"linux"},
},
{
Kind: Kind{
ID: "HOST_HOME_PERMISSION",
ExitCode: ExGuestPermission,
Advice: "Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix",
Issues: []int{9165},
},
Regexp: re(`/.minikube/.*: permission denied`),
},
}
// providerIssues are failures relating to a driver provider
......@@ -237,6 +256,28 @@ var providerIssues = []match{
},
Regexp: re(`executing "" at <index (index .NetworkSettings.Ports "22/tcp") 0>`),
},
{
Kind: Kind{
ID: "PR_DOCKER_MOUNTS_EOF",
ExitCode: ExProviderError,
Advice: "Reset Docker to factory defaults",
Issues: []int{8832},
URL: "https://docs.docker.com/docker-for-mac/#reset",
},
GOOS: []string{"darwin"},
Regexp: re(`docker:.*Mounts denied: EOF`),
},
{
Kind: Kind{
ID: "PR_DOCKER_MOUNTS_EOF",
ExitCode: ExProviderError,
Advice: "Reset Docker to factory defaults",
Issues: []int{8832},
URL: "https://docs.docker.com/docker-for-windows/#reset",
},
GOOS: []string{"windows"},
Regexp: re(`docker:.*Mounts denied: EOF`),
},
// Hyperkit hypervisor
{
......@@ -303,6 +344,28 @@ var providerIssues = []match{
Regexp: re(`The requested operation requires elevation.`),
GOOS: []string{"windows"},
},
{
Kind: Kind{
ID: "PR_POWERSHELL_CONSTRAINED",
ExitCode: ExProviderPermission,
Advice: "PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.",
Issues: []int{7990, 6098},
URL: "https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/",
},
Regexp: re(`MethodInvocationNotSupportedInConstrainedLanguage`),
GOOS: []string{"windows"},
},
{
Kind: Kind{
ID: "PR_HYPERV_MODULE_NOT_INSTALLED",
ExitCode: ExProviderNotFound,
Advice: "Run: 'Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Tools-All'",
Issues: []int{9040},
URL: "https://www.altaro.com/hyper-v/install-hyper-v-powershell-module/",
},
Regexp: re(`Hyper-V PowerShell Module is not available`),
GOOS: []string{"windows"},
},
// KVM hypervisor
{
......@@ -857,6 +920,33 @@ var guestIssues = []match{
Regexp: re(`The process cannot access the file because it is being used by another process`),
GOOS: []string{"windows"},
},
{
Kind: Kind{
ID: "GUEST_NOT_FOUND",
ExitCode: ExGuestNotFound,
Advice: "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'",
Issues: []int{9130},
},
Regexp: re(`config.json: The system cannot find the file specified`),
},
{
Kind: Kind{
ID: "GUEST_SSH_CERT_NOT_FOUND",
ExitCode: ExGuestNotFound,
Advice: "minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'",
Issues: []int{9130},
},
Regexp: re(`id_rsa: no such file or directory`),
},
{
Kind: Kind{
ID: "GUEST_CONFIG_CORRUPT",
ExitCode: ExGuestConfig,
Advice: "The existing node configuration appears to be corrupt. Run 'minikube delete'",
Issues: []int{9175},
},
Regexp: re(`configuration.*corrupt`),
},
}
// runtimeIssues are container runtime issues (containerd, docker, etc)
......@@ -865,7 +955,7 @@ var runtimeIssues = []match{
Kind: Kind{
ID: "RT_DOCKER_RESTART",
ExitCode: ExRuntimeError,
Advice: "Remove the incompatible --docker-opt flag if one was provided",
Advice: "Remove the invalid --docker-opt or --insecure-registry flag if one was provided",
Issues: []int{7070},
},
Regexp: re(`systemctl -f restart docker`),
......@@ -962,6 +1052,16 @@ var controlPlaneIssues = []match{
},
Regexp: re(`dnsDomain: Invalid`),
},
{
Kind: Kind{
ID: "K8S_INVALID_CERT_HOSTNAME",
ExitCode: ExControlPlaneConfig,
Advice: "The certificate hostname provided appears to be invalid (may be a minikube bug, try 'minikube delete')",
NewIssueLink: true,
Issues: []int{9175},
},
Regexp: re(`apiServer.certSANs: Invalid value`),
},
}
// serviceIssues are issues with services running on top of Kubernetes
......
......@@ -62,6 +62,9 @@ VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap,
{6109, "", "INET_DOWNLOAD_BLOCKED", `Failed to update cluster: downloading binaries: downloading kubelet: Error downloading kubelet v1.16.2: failed to download: failed to download to temp file: failed to copy contents: read tcp 192.168.0.106:61314->172.217.166.176:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.`},
{6109, "", "INET_DOWNLOAD_BLOCKED", `Failed to update cluster: downloading binaries: downloading kubeadm: Error downloading kubeadm v1.17.0: failed to download: failed to download to temp file: failed to copy contents: read tcp [2606:a000:81c5:1e00:349a:26c0:7ea6:bbf1]:55317->[2607:f8b0:4004:815::2010]:443: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.`},
{4277, "linux", "PR_KVM_MSR", `Unable to start VM: start: Error creating VM: virError(Code=1, Domain=10, Message='internal error: qemu unexpectedly closed the monitor: 2019-05-17T02:20:07.980140Z qemu-system-x86_64: error: failed to set MSR 0x38d to 0x0 qemu-system-x86_64: /build/qemu-lXHhGe/qemu-2.11+dfsg/target/i386/kvm.c:1807: kvm_put_msrs: Assertion ret == cpu->kvm_msr_buf->nmsrs failed.`},
{8832, "macos", "PR_DOCKER_MOUNTS_EOF", `docker: Error response from daemon: Mounts denied: EOF.`},
{9165, "", "HOST_HOME_PERMISSION", `open /Users/conradwt/.minikube/profiles/gcloud-local-dev/config.json: permission denied`},
{9175, "", "GUEST_CONFIG_CORRUPT", " updating control plane: generating kubeadm cfg: generating extra component config for kubeadm: controlPlane configuration is corrupt: no name: {Name: IP: Port:8443 KubernetesVersion:v1.19.0 ControlPlane:true Worker:true}"},
}
for _, tc := range tests {
t.Run(tc.want, func(t *testing.T) {
......
......@@ -214,6 +214,7 @@ var (
GuestDeletion = Kind{ID: "GUEST_DELETION", ExitCode: ExGuestError}
GuestLoadHost = Kind{ID: "GUEST_LOAD_HOST", ExitCode: ExGuestError}
GuestMount = Kind{ID: "GUEST_MOUNT", ExitCode: ExGuestError}
GuestMountConflict = Kind{ID: "GUEST_MOUNT_CONFLICT", ExitCode: ExGuestConflict}
GuestNodeAdd = Kind{ID: "GUEST_NODE_ADD", ExitCode: ExGuestError}
GuestNodeDelete = Kind{ID: "GUEST_NODE_DELETE", ExitCode: ExGuestError}
GuestNodeProvision = Kind{ID: "GUEST_NODE_PROVISION", ExitCode: ExGuestError}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册