Fixed merge conflicts.
commit
43ea47f4e0
|
@ -412,7 +412,7 @@ jobs:
|
|||
echo "---------------- ${numFail} Failures :( ----------------------------"
|
||||
echo $failedTests
|
||||
echo "-------------------------------------------------------"
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numPass -eq 0){ exit 2 }
|
||||
If ($numPass -lt 33){ exit 2 }
|
||||
If ($numFail -eq 0){ exit 0 }
|
||||
|
@ -429,7 +429,7 @@ jobs:
|
|||
shell: powershell
|
||||
run: |
|
||||
echo $env:computerName
|
||||
ls
|
||||
ls
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
cd minikube_binaries
|
||||
ls
|
||||
|
@ -464,14 +464,14 @@ jobs:
|
|||
$docker_running = $?
|
||||
}
|
||||
Write-Output "Docker is running"
|
||||
docker system prune -f
|
||||
docker system prune -f
|
||||
- name: Info
|
||||
continue-on-error: true
|
||||
shell: powershell
|
||||
run: |
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
cd minikube_binaries
|
||||
ls
|
||||
ls
|
||||
echo $env:computername
|
||||
Get-WmiObject -class Win32_ComputerSystem
|
||||
- uses: actions/setup-go@v2
|
||||
|
@ -483,7 +483,7 @@ jobs:
|
|||
shell: powershell
|
||||
run: |
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe")
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe")
|
||||
choco install -y kubernetes-cli
|
||||
choco install -y jq
|
||||
choco install -y caffeine
|
||||
|
@ -549,7 +549,7 @@ jobs:
|
|||
echo "---------------- ${numFail} Failures :( ----------------------------"
|
||||
echo $failedTests
|
||||
echo "-------------------------------------------------------"
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numPass -eq 0){ exit 2 }
|
||||
If ($numPass -lt 33){ exit 2 }
|
||||
If ($numFail -eq 0){ exit 0 }
|
||||
|
@ -775,11 +775,11 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k
|
||||
- name: Download Binaries
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
|
@ -966,7 +966,7 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
|
@ -1150,7 +1150,7 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
|
@ -1247,4 +1247,4 @@ jobs:
|
|||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: all_reports
|
||||
path: all_reports
|
||||
path: all_reports
|
|
@ -410,7 +410,7 @@ jobs:
|
|||
echo "---------------- ${numFail} Failures :( ----------------------------"
|
||||
echo $failedTests
|
||||
echo "-------------------------------------------------------"
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numPass -eq 0){ exit 2 }
|
||||
If ($numPass -lt 33){ exit 2 }
|
||||
If ($numFail -eq 0){ exit 0 }
|
||||
|
@ -427,7 +427,7 @@ jobs:
|
|||
shell: powershell
|
||||
run: |
|
||||
echo $env:computerName
|
||||
ls
|
||||
ls
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
cd minikube_binaries
|
||||
ls
|
||||
|
@ -462,14 +462,14 @@ jobs:
|
|||
$docker_running = $?
|
||||
}
|
||||
Write-Output "Docker is running"
|
||||
docker system prune -f
|
||||
docker system prune -f
|
||||
- name: Info
|
||||
continue-on-error: true
|
||||
shell: powershell
|
||||
run: |
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
cd minikube_binaries
|
||||
ls
|
||||
ls
|
||||
echo $env:computername
|
||||
Get-WmiObject -class Win32_ComputerSystem
|
||||
- uses: actions/setup-go@v2
|
||||
|
@ -481,7 +481,7 @@ jobs:
|
|||
shell: powershell
|
||||
run: |
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe")
|
||||
(New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.2.4/gopogh.exe", "C:\ProgramData\chocolatey\bin\gopogh.exe")
|
||||
choco install -y kubernetes-cli
|
||||
choco install -y jq
|
||||
choco install -y caffeine
|
||||
|
@ -547,7 +547,7 @@ jobs:
|
|||
echo "---------------- ${numFail} Failures :( ----------------------------"
|
||||
echo $failedTests
|
||||
echo "-------------------------------------------------------"
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numFail -gt 0){ exit 2 }
|
||||
If ($numPass -eq 0){ exit 2 }
|
||||
If ($numPass -lt 33){ exit 2 }
|
||||
If ($numFail -eq 0){ exit 0 }
|
||||
|
@ -773,11 +773,11 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw -k
|
||||
- name: Download Binaries
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
|
@ -964,7 +964,7 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
|
@ -1148,7 +1148,7 @@ jobs:
|
|||
run: |
|
||||
hostname
|
||||
VBoxManage --version
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
sysctl hw.physicalcpu hw.logicalcpu
|
||||
- name: Disable firewall
|
||||
run: |
|
||||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
|
||||
|
@ -1245,4 +1245,4 @@ jobs:
|
|||
- uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: all_reports
|
||||
path: all_reports
|
||||
path: all_reports
|
12
Makefile
12
Makefile
|
@ -305,9 +305,15 @@ html_report: ## Generate HTML report out of the last ran integration test logs.
|
|||
@go tool test2json -t < "./out/testout_$(COMMIT_SHORT).txt" > "./out/testout_$(COMMIT_SHORT).json"
|
||||
@gopogh -in "./out/testout_$(COMMIT_SHORT).json" -out ./out/testout_$(COMMIT_SHORT).html -name "$(shell git rev-parse --abbrev-ref HEAD)" -pr "" -repo github.com/kubernetes/minikube/ -details "${COMMIT_SHORT}"
|
||||
@echo "-------------------------- Open HTML Report in Browser: ---------------------------"
|
||||
ifeq ($(GOOS),windows)
|
||||
@echo start $(CURDIR)/out/testout_$(COMMIT_SHORT).html
|
||||
@echo "-----------------------------------------------------------------------------------"
|
||||
@start $(CURDIR)/out/testout_$(COMMIT_SHORT).html || true
|
||||
else
|
||||
@echo open $(CURDIR)/out/testout_$(COMMIT_SHORT).html
|
||||
@echo "-----------------------------------------------------------------------------------"
|
||||
@open $(CURDIR)/out/testout_$(COMMIT_SHORT).html || true
|
||||
endif
|
||||
|
||||
.PHONY: test
|
||||
test: pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go ## Trigger minikube test
|
||||
|
@ -331,7 +337,7 @@ pkg/minikube/assets/assets.go: $(shell find "deploy/addons" -type f)
|
|||
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
|
||||
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
|
||||
endif
|
||||
@which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/jteeuwen/go-bindata/...
|
||||
@which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/go-bindata/go-bindata/...
|
||||
$(if $(quiet),@echo " GEN $@")
|
||||
$(Q)PATH="$(PATH)$(PATHSEP)$(GOPATH)$(DIRSEP)bin" go-bindata -nomemcopy -o $@ -pkg assets deploy/addons/...
|
||||
$(Q)-gofmt -s -w $@
|
||||
|
@ -344,7 +350,7 @@ pkg/minikube/translate/translations.go: $(shell find "translations/" -type f)
|
|||
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
|
||||
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
|
||||
endif
|
||||
@which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/jteeuwen/go-bindata/...
|
||||
@which go-bindata >/dev/null 2>&1 || GO111MODULE=off GOBIN="$(GOPATH)$(DIRSEP)bin" go get github.com/go-bindata/go-bindata/...
|
||||
$(if $(quiet),@echo " GEN $@")
|
||||
$(Q)PATH="$(PATH)$(PATHSEP)$(GOPATH)$(DIRSEP)bin" go-bindata -nomemcopy -o $@ -pkg translate translations/...
|
||||
$(Q)-gofmt -s -w $@
|
||||
|
@ -579,7 +585,7 @@ storage-provisioner-image: out/storage-provisioner-$(GOARCH) ## Build storage-pr
|
|||
.PHONY: kic-base-image
|
||||
kic-base-image: ## builds the base image used for kic.
|
||||
docker rmi -f $(KIC_BASE_IMAGE_GCR)-snapshot || true
|
||||
docker build -f ./deploy/kicbase/Dockerfile -t local/kicbase:$(KIC_VERSION)-snapshot --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) --cache-from $(KIC_BASE_IMAGE_GCR) --target base ./deploy/kicbase
|
||||
docker build -f ./deploy/kicbase/Dockerfile -t local/kicbase:$(KIC_VERSION)-snapshot --build-arg COMMIT_SHA=${VERSION}-$(COMMIT) --cache-from $(KIC_BASE_IMAGE_GCR) ./deploy/kicbase
|
||||
docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_GCR)-snapshot
|
||||
docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_GCR)
|
||||
docker tag local/kicbase:$(KIC_VERSION)-snapshot $(KIC_BASE_IMAGE_HUB)
|
||||
|
|
|
@ -28,8 +28,7 @@ import (
|
|||
"k8s.io/minikube/pkg/minikube/reason"
|
||||
)
|
||||
|
||||
const longDescription = `
|
||||
Outputs minikube shell completion for the given shell (bash, zsh or fish)
|
||||
const longDescription = `Outputs minikube shell completion for the given shell (bash, zsh or fish)
|
||||
|
||||
This depends on the bash-completion binary. Example installation instructions:
|
||||
OS X:
|
||||
|
|
|
@ -32,8 +32,8 @@ import (
|
|||
|
||||
var addonsConfigureCmd = &cobra.Command{
|
||||
Use: "configure ADDON_NAME",
|
||||
Short: "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list ",
|
||||
Long: "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list ",
|
||||
Short: "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list",
|
||||
Long: "Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
if len(args) != 1 {
|
||||
exit.Message(reason.Usage, "usage: minikube addons configure ADDON_NAME")
|
||||
|
|
|
@ -794,7 +794,7 @@ func validateUser(drvName string) {
|
|||
|
||||
out.ErrT(style.Stopped, `The "{{.driver_name}}" driver should not be used with root privileges.`, out.V{"driver_name": drvName})
|
||||
out.ErrT(style.Tip, "If you are running minikube within a VM, consider using --driver=none:")
|
||||
out.ErrT(style.Documentation, " https://minikube.sigs.k8s.io/docs/reference/drivers/none/")
|
||||
out.ErrT(style.Documentation, " {{.url}}", out.V{"url": "https://minikube.sigs.k8s.io/docs/reference/drivers/none/"})
|
||||
|
||||
cname := ClusterFlagValue()
|
||||
_, err = config.Load(cname)
|
||||
|
|
|
@ -131,10 +131,17 @@ metadata:
|
|||
app: gcp-auth
|
||||
webhooks:
|
||||
- name: gcp-auth-mutate.k8s.io
|
||||
failurePolicy: Fail
|
||||
objectSelector:
|
||||
matchExpressions:
|
||||
- key: gcp-auth-skip-secret
|
||||
operator: DoesNotExist
|
||||
namespaceSelector:
|
||||
matchExpressions:
|
||||
- key: name
|
||||
operator: NotIn
|
||||
values:
|
||||
- kube-system
|
||||
sideEffects: None
|
||||
admissionReviewVersions: ["v1","v1beta1"]
|
||||
clientConfig:
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# Turn on Source Address Verification in all interfaces to
|
||||
# prevent some spoofing attacks.
|
||||
net.ipv4.conf.default.rp_filter=1
|
||||
net.ipv4.conf.all.rp_filter=1
|
|
@ -1,44 +1,125 @@
|
|||
# Copyright 2018 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# kind node base image
|
||||
#
|
||||
# For systemd + docker configuration used below, see the following references:
|
||||
# https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/
|
||||
|
||||
# start from ubuntu 20.04, this image is reasonably small as a starting point
|
||||
# for a kubernetes node image, it doesn't contain much we don't need
|
||||
FROM ubuntu:focal-20200423
|
||||
|
||||
# copy in static files (configs, scripts)
|
||||
COPY 10-network-security.conf /etc/sysctl.d/10-network-security.conf
|
||||
COPY clean-install /usr/local/bin/clean-install
|
||||
COPY entrypoint /usr/local/bin/entrypoint
|
||||
|
||||
# Install dependencies, first from apt, then from release tarballs.
|
||||
# NOTE: we use one RUN to minimize layers.
|
||||
#
|
||||
# First we must ensure that our util scripts are executable.
|
||||
#
|
||||
# The base image already has: ssh, apt, snapd, but we need to install more packages.
|
||||
# Packages installed are broken down into (each on a line):
|
||||
# - packages needed to run services (systemd)
|
||||
# - packages needed for kubernetes components
|
||||
# - packages needed by the container runtime
|
||||
# - misc packages kind uses itself
|
||||
# After installing packages we cleanup by:
|
||||
# - removing unwanted systemd services
|
||||
# - disabling kmsg in journald (these log entries would be confusing)
|
||||
#
|
||||
# Next we ensure the /etc/kubernetes/manifests directory exists. Normally
|
||||
# a kubeadm debain / rpm package would ensure that this exists but we install
|
||||
# freshly built binaries directly when we build the node image.
|
||||
#
|
||||
# Finally we adjust tempfiles cleanup to be 1 minute after "boot" instead of 15m
|
||||
# This is plenty after we've done initial setup for a node, but before we are
|
||||
# likely to try to export logs etc.
|
||||
RUN echo "Ensuring scripts are executable ..." \
|
||||
&& chmod +x /usr/local/bin/clean-install /usr/local/bin/entrypoint \
|
||||
&& echo "Installing Packages ..." \
|
||||
&& DEBIAN_FRONTEND=noninteractive clean-install \
|
||||
systemd \
|
||||
conntrack iptables iproute2 ethtool socat util-linux mount ebtables udev kmod \
|
||||
libseccomp2 \
|
||||
bash ca-certificates curl rsync \
|
||||
&& find /lib/systemd/system/sysinit.target.wants/ -name "systemd-tmpfiles-setup.service" -delete \
|
||||
&& rm -f /lib/systemd/system/multi-user.target.wants/* \
|
||||
&& rm -f /etc/systemd/system/*.wants/* \
|
||||
&& rm -f /lib/systemd/system/local-fs.target.wants/* \
|
||||
&& rm -f /lib/systemd/system/sockets.target.wants/*udev* \
|
||||
&& rm -f /lib/systemd/system/sockets.target.wants/*initctl* \
|
||||
&& rm -f /lib/systemd/system/basic.target.wants/* \
|
||||
&& echo "ReadKMsg=no" >> /etc/systemd/journald.conf \
|
||||
&& ln -s "$(which systemd)" /sbin/init \
|
||||
&& echo "Ensuring /etc/kubernetes/manifests" \
|
||||
&& mkdir -p /etc/kubernetes/manifests \
|
||||
&& echo "Adjusting systemd-tmpfiles timer" \
|
||||
&& sed -i /usr/lib/systemd/system/systemd-tmpfiles-clean.timer -e 's#OnBootSec=.*#OnBootSec=1min#' \
|
||||
&& echo "Modifying /etc/nsswitch.conf to prefer hosts" \
|
||||
&& sed -i /etc/nsswitch.conf -re 's#^(hosts:\s*).*#\1dns files#'
|
||||
|
||||
# tell systemd that it is in docker (it will check for the container env)
|
||||
# https://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/
|
||||
ENV container docker
|
||||
# systemd exits on SIGRTMIN+3, not SIGTERM (which re-executes it)
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1201657
|
||||
STOPSIGNAL SIGRTMIN+3
|
||||
# NOTE: this is *only* for documentation, the entrypoint is overridden later
|
||||
ENTRYPOINT [ "/usr/local/bin/entrypoint", "/sbin/init" ]
|
||||
|
||||
ARG COMMIT_SHA
|
||||
# using base image created by kind https://github.com/kubernetes-sigs/kind/blob/v0.8.1/images/base/Dockerfile
|
||||
# using base image created by kind https://github.com/kubernetes-sigs/kind/blob/2c0eee40/images/base/Dockerfile
|
||||
# which is an ubuntu 20.04 with an entry-point that helps running systemd
|
||||
# could be changed to any debian that can run systemd
|
||||
FROM kindest/base:v20200430-2c0eee40 as base
|
||||
USER root
|
||||
# specify version of everything explicitly using 'apt-cache policy'
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
|
||||
# install system requirements from the regular distro repositories
|
||||
RUN clean-install \
|
||||
lz4 \
|
||||
gnupg \
|
||||
sudo \
|
||||
docker.io \
|
||||
containerd \
|
||||
openssh-server \
|
||||
dnsutils \
|
||||
runc \
|
||||
# libglib2.0-0 is required for conmon, which is required for podman
|
||||
libglib2.0-0 \
|
||||
# removing kind's crictl config
|
||||
&& rm /etc/crictl.yaml
|
||||
libglib2.0-0
|
||||
|
||||
# Install cri-o/podman dependencies:
|
||||
RUN sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" && \
|
||||
curl -LO https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_20.04/Release.key && \
|
||||
apt-key add - < Release.key && apt-get update && \
|
||||
apt-get install -y --no-install-recommends containers-common catatonit conmon containernetworking-plugins podman-plugins varlink
|
||||
apt-key add - < Release.key && \
|
||||
clean-install containers-common catatonit conmon containernetworking-plugins cri-tools podman-plugins varlink
|
||||
|
||||
# install cri-o based on https://github.com/cri-o/cri-o/commit/96b0c34b31a9fc181e46d7d8e34fb8ee6c4dc4e1#diff-04c6e90faac2675aa89e2176d2eec7d8R128
|
||||
RUN sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.18:/1.18.3/xUbuntu_20.04/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" && \
|
||||
curl -LO https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/1.18:/1.18.3/xUbuntu_20.04/Release.key && \
|
||||
apt-key add - < Release.key && apt-get update && \
|
||||
apt-get install -y --no-install-recommends cri-o=1.18.3~3
|
||||
apt-key add - < Release.key && \
|
||||
clean-install cri-o=1.18.3~3
|
||||
|
||||
# install podman
|
||||
RUN sh -c "echo 'deb https://dl.bintray.com/afbjorklund/podman focal main' > /etc/apt/sources.list.d/podman.list" && \
|
||||
curl -L https://bintray.com/user/downloadSubjectPublicKey?username=afbjorklund -o afbjorklund-public.key.asc && \
|
||||
apt-key add - < afbjorklund-public.key.asc && apt-get update && \
|
||||
apt-get install -y --no-install-recommends podman=1.9.3~1
|
||||
apt-key add - < afbjorklund-public.key.asc && \
|
||||
clean-install podman=1.9.3~1
|
||||
|
||||
RUN mkdir -p /usr/lib/cri-o-runc/sbin && cp /usr/local/sbin/runc /usr/lib/cri-o-runc/sbin/runc
|
||||
RUN mkdir -p /usr/lib/cri-o-runc/sbin && cp /usr/sbin/runc /usr/lib/cri-o-runc/sbin/runc
|
||||
|
||||
COPY entrypoint /usr/local/bin/entrypoint
|
||||
# automount service
|
||||
COPY automount/minikube-automount /usr/sbin/minikube-automount
|
||||
COPY automount/minikube-automount.service /usr/lib/systemd/system/minikube-automount.service
|
||||
|
@ -71,12 +152,7 @@ USER root
|
|||
# https://github.com/kubernetes-sigs/kind/blob/master/images/base/files/usr/local/bin/entrypoint
|
||||
RUN mkdir -p /kind
|
||||
# Deleting leftovers
|
||||
RUN apt-get clean -y && rm -rf \
|
||||
/var/cache/debconf/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/log/* \
|
||||
/tmp/* \
|
||||
/var/tmp/* \
|
||||
RUN rm -rf \
|
||||
/usr/share/doc/* \
|
||||
/usr/share/man/* \
|
||||
/usr/share/local/* \
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copyright 2017 The Kubernetes Authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# A script encapsulating a common Dockerimage pattern for installing packages
|
||||
# and then cleaning up the unnecessary install artifacts.
|
||||
# e.g. clean-install iptables ebtables conntrack
|
||||
|
||||
set -o errexit
|
||||
|
||||
if [ $# = 0 ]; then
|
||||
echo >&2 "No packages specified"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends "$@"
|
||||
apt-get clean -y
|
||||
rm -rf \
|
||||
/var/cache/debconf/* \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/log/* \
|
||||
/tmp/* \
|
||||
/var/tmp/* \
|
||||
/usr/share/doc/* \
|
||||
/usr/share/man/* \
|
||||
/usr/share/local/*
|
1
go.mod
1
go.mod
|
@ -24,6 +24,7 @@ require (
|
|||
github.com/evanphx/json-patch v4.5.0+incompatible // indirect
|
||||
github.com/go-ole/go-ole v1.2.4 // indirect
|
||||
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
|
||||
github.com/google/go-cmp v0.4.1
|
||||
github.com/google/go-containerregistry v0.0.0-20200601195303-96cf69f03a3c
|
||||
github.com/google/go-github v17.0.0+incompatible
|
||||
|
|
|
@ -81,7 +81,7 @@ for path in $(gsutil ls "gs://${ISO_BUCKET}/minikube-v${VERSION}*" || true); do
|
|||
done
|
||||
|
||||
# Upload all end-user assets other than preload files, as they are release independent
|
||||
for file in out/minikube[_-]* out/docker-machine-*; do
|
||||
for file in $( find out \( -name "minikube[_-]*" -or -name "docker-machine-*" \) -and ! -name "*latest*"); do
|
||||
n=0
|
||||
until [ $n -ge 5 ]
|
||||
do
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="702px" height="683px" viewBox="0 0 702 683" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 39.1 (31720) - https://www.sketchapp.com/ -->
|
||||
<svg width="702px" height="683px" viewBox="0 0 702 683" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 39.1 (31720) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>minikube</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
|
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.1 KiB |
|
@ -324,7 +324,18 @@ func verifyAddonStatus(cc *config.ClusterConfig, name string, val string) error
|
|||
}
|
||||
|
||||
func verifyGCPAuthAddon(cc *config.ClusterConfig, name string, val string) error {
|
||||
return verifyAddonStatusInternal(cc, name, val, "gcp-auth")
|
||||
enable, err := strconv.ParseBool(val)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "parsing bool: %s", name)
|
||||
}
|
||||
err = verifyAddonStatusInternal(cc, name, val, "gcp-auth")
|
||||
|
||||
if enable && err == nil {
|
||||
out.T(style.Notice, "Your GCP credentials will now be mounted into every pod created in the {{.name}} cluster.", out.V{"name": cc.Name})
|
||||
out.T(style.Notice, "If you don't want your credentials mounted into a specific pod, add a label with the `gcp-auth-skip-secret` key to your pod configuration.")
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func verifyAddonStatusInternal(cc *config.ClusterConfig, name string, val string, ns string) error {
|
||||
|
@ -394,16 +405,26 @@ func Start(wg *sync.WaitGroup, cc *config.ClusterConfig, toEnable map[string]boo
|
|||
|
||||
var awg sync.WaitGroup
|
||||
|
||||
defer func() { // making it show after verifications( not perfect till #7613 is closed)
|
||||
enabledAddons := []string{}
|
||||
deferredAddons := []string{}
|
||||
|
||||
defer func() { // making it show after verifications (see #7613)
|
||||
register.Reg.SetStep(register.EnablingAddons)
|
||||
out.T(style.AddonEnable, "Enabled addons: {{.addons}}", out.V{"addons": strings.Join(toEnableList, ", ")})
|
||||
out.T(style.AddonEnable, "Enabled addons: {{.addons}}", out.V{"addons": strings.Join(enabledAddons, ", ")})
|
||||
}()
|
||||
for _, a := range toEnableList {
|
||||
if a == "gcp-auth" {
|
||||
deferredAddons = append(deferredAddons, a)
|
||||
continue
|
||||
}
|
||||
|
||||
awg.Add(1)
|
||||
go func(name string) {
|
||||
err := RunCallbacks(cc, name, "true")
|
||||
if err != nil {
|
||||
out.WarningT("Enabling '{{.name}}' returned an error: {{.error}}", out.V{"name": name, "error": err})
|
||||
} else {
|
||||
enabledAddons = append(enabledAddons, name)
|
||||
}
|
||||
awg.Done()
|
||||
}(a)
|
||||
|
@ -411,7 +432,18 @@ func Start(wg *sync.WaitGroup, cc *config.ClusterConfig, toEnable map[string]boo
|
|||
|
||||
// Wait until all of the addons are enabled before updating the config (not thread safe)
|
||||
awg.Wait()
|
||||
for _, a := range toEnableList {
|
||||
|
||||
// Now run the deferred addons
|
||||
for _, a := range deferredAddons {
|
||||
err := RunCallbacks(cc, a, "true")
|
||||
if err != nil {
|
||||
out.WarningT("Enabling '{{.name}}' returned an error: {{.error}}", out.V{"name": a, "error": err})
|
||||
} else {
|
||||
enabledAddons = append(enabledAddons, a)
|
||||
}
|
||||
}
|
||||
|
||||
for _, a := range enabledAddons {
|
||||
if err := Set(cc, a, "true"); err != nil {
|
||||
klog.Errorf("store failed: %v", err)
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ var Addons = []*Addon{
|
|||
{
|
||||
name: "gcp-auth",
|
||||
set: SetBool,
|
||||
callbacks: []setFn{gcpauth.EnableOrDisable, enableOrDisableAddon, verifyGCPAuthAddon, gcpauth.DisplayAddonMessage},
|
||||
callbacks: []setFn{gcpauth.EnableOrDisable, enableOrDisableAddon, verifyGCPAuthAddon},
|
||||
},
|
||||
{
|
||||
name: "volumesnapshots",
|
||||
|
|
|
@ -60,7 +60,7 @@ func enableAddon(cfg *config.ClusterConfig) error {
|
|||
ctx := context.Background()
|
||||
creds, err := google.FindDefaultCredentials(ctx)
|
||||
if err != nil {
|
||||
exit.Message(reason.InternalCredsNotFound, "Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.")
|
||||
exit.Message(reason.InternalCredsNotFound, "Could not find any GCP credentials. Either run `gcloud auth application-default login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.")
|
||||
}
|
||||
|
||||
f := assets.NewMemoryAssetTarget(creds.JSON, credentialsPath, "0444")
|
||||
|
@ -116,16 +116,3 @@ func disableAddon(cfg *config.ClusterConfig) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
// DisplayAddonMessage display an gcp auth addon specific message to the user
|
||||
func DisplayAddonMessage(cfg *config.ClusterConfig, name string, val string) error {
|
||||
enable, err := strconv.ParseBool(val)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "parsing bool: %s", name)
|
||||
}
|
||||
if enable {
|
||||
out.T(style.Notice, "Your GCP credentials will now be mounted into every pod created in the {{.name}} cluster.", out.V{"name": cfg.Name})
|
||||
out.T(style.Notice, "If you don't want your credentials mounted into a specific pod, add a label with the `gcp-auth-skip-secret` key to your pod configuration.")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -403,7 +403,7 @@ func killAPIServerProc(runner command.Runner) error {
|
|||
pid, err := strconv.Atoi(rr.Stdout.String())
|
||||
if err == nil { // this means we have a valid pid
|
||||
klog.Warningf("Found a kube-apiserver running with pid %d, will try to kill the proc", pid)
|
||||
if _, err = runner.RunCmd(exec.Command("pkill", "-9", string(pid))); err != nil {
|
||||
if _, err = runner.RunCmd(exec.Command("pkill", "-9", fmt.Sprint(pid))); err != nil {
|
||||
return errors.Wrap(err, "kill")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -144,9 +144,11 @@ func runCmd(cmd *exec.Cmd, warnSlow ...bool) (*RunResult, error) {
|
|||
}
|
||||
}
|
||||
|
||||
if exitError, ok := err.(*exec.ExitError); ok {
|
||||
rr.ExitCode = exitError.ExitCode()
|
||||
if ex, ok := err.(*exec.ExitError); ok {
|
||||
klog.Warningf("%s returned with exit code %d", rr.Command(), ex.ExitCode())
|
||||
rr.ExitCode = ex.ExitCode()
|
||||
}
|
||||
|
||||
// Decrease log spam
|
||||
if elapsed > (1 * time.Second) {
|
||||
klog.Infof("Completed: %s: (%s)", rr.Command(), elapsed)
|
||||
|
|
|
@ -22,20 +22,24 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/golang/glog"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// SysInfo Info represents common system Information between docker and podman that minikube cares
|
||||
type SysInfo struct {
|
||||
CPUs int // CPUs is Number of CPUs
|
||||
TotalMemory int64 // TotalMemory Total available ram
|
||||
OSType string // container's OsType (windows or linux)
|
||||
Swarm bool // Weather or not the docker swarm is active
|
||||
StorageDriver string // the storage driver for the daemon (for example overlay2)
|
||||
CPUs int // CPUs is Number of CPUs
|
||||
TotalMemory int64 // TotalMemory Total available ram
|
||||
OSType string // container's OsType (windows or linux)
|
||||
Swarm bool // Weather or not the docker swarm is active
|
||||
StorageDriver string // the storage driver for the daemon (for example overlay2)
|
||||
Errors []string // any server issues
|
||||
}
|
||||
|
||||
var cachedSysInfo *SysInfo
|
||||
var cachedSysInfoErr *error
|
||||
var (
|
||||
cachedSysInfo *SysInfo
|
||||
cachedSysInfoErr *error
|
||||
)
|
||||
|
||||
// CachedDaemonInfo will run and return a docker/podman info only once per minikube run time. to avoid performance
|
||||
func CachedDaemonInfo(ociBin string) (SysInfo, error) {
|
||||
|
@ -58,7 +62,7 @@ func DaemonInfo(ociBin string) (SysInfo, error) {
|
|||
return *cachedSysInfo, err
|
||||
}
|
||||
d, err := dockerSystemInfo()
|
||||
cachedSysInfo = &SysInfo{CPUs: d.NCPU, TotalMemory: d.MemTotal, OSType: d.OSType, Swarm: d.Swarm.LocalNodeState == "active", StorageDriver: d.Driver}
|
||||
cachedSysInfo = &SysInfo{CPUs: d.NCPU, TotalMemory: d.MemTotal, OSType: d.OSType, Swarm: d.Swarm.LocalNodeState == "active", StorageDriver: d.Driver, Errors: d.ServerErrors}
|
||||
return *cachedSysInfo, err
|
||||
}
|
||||
|
||||
|
@ -163,6 +167,7 @@ type dockerSysInfo struct {
|
|||
SecurityOptions []string `json:"SecurityOptions"`
|
||||
ProductLicense string `json:"ProductLicense"`
|
||||
Warnings interface{} `json:"Warnings"`
|
||||
ServerErrors []string
|
||||
ClientInfo struct {
|
||||
Debug bool `json:"Debug"`
|
||||
Plugins []interface{} `json:"Plugins"`
|
||||
|
@ -245,6 +250,7 @@ func dockerSystemInfo() (dockerSysInfo, error) {
|
|||
return ds, errors.Wrapf(err, "unmarshal docker system info")
|
||||
}
|
||||
|
||||
glog.Infof("docker info: %+v", ds)
|
||||
return ds, nil
|
||||
}
|
||||
|
||||
|
@ -264,5 +270,6 @@ func podmanSystemInfo() (podmanSysInfo, error) {
|
|||
if err := json.Unmarshal([]byte(strings.TrimSpace(rawJSON)), &ps); err != nil {
|
||||
return ps, errors.Wrapf(err, "unmarshal podman system info")
|
||||
}
|
||||
glog.Infof("podman info: %+v", ps)
|
||||
return ps, nil
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import (
|
|||
|
||||
"github.com/docker/machine/libmachine"
|
||||
"github.com/docker/machine/libmachine/host"
|
||||
"github.com/golang/glog"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/drivers/kic/oci"
|
||||
|
@ -49,6 +50,7 @@ func HostIP(host *host.Host) (net.IP, error) {
|
|||
for i := 0; i < v.NumField(); i++ {
|
||||
if v.Type().Field(i).Name == "VSwitch" {
|
||||
hypervVirtualSwitch = v.Field(i).Interface().(string)
|
||||
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +61,7 @@ func HostIP(host *host.Host) (net.IP, error) {
|
|||
if err != nil {
|
||||
return []byte{}, errors.Wrap(err, fmt.Sprintf("ip for interface (%s)", hypervVirtualSwitch))
|
||||
}
|
||||
|
||||
return ip, nil
|
||||
case driver.VirtualBox:
|
||||
vBoxManageCmd := driver.VBoxManagePath()
|
||||
|
@ -74,6 +77,7 @@ func HostIP(host *host.Host) (net.IP, error) {
|
|||
}
|
||||
re = regexp.MustCompile(`(?sm)Name:\s*` + iface + `\s*$.+?IPAddress:\s*(\S+)`)
|
||||
ip := re.FindStringSubmatch(string(ipList))[1]
|
||||
|
||||
return net.ParseIP(ip), nil
|
||||
case driver.Parallels:
|
||||
bin := "prlsrvctl"
|
||||
|
@ -93,6 +97,7 @@ func HostIP(host *host.Host) (net.IP, error) {
|
|||
return []byte{}, errors.Wrap(err, "Error getting the IP address of Parallels Shared network interface")
|
||||
}
|
||||
ip := ipMatch[1]
|
||||
|
||||
return net.ParseIP(ip), nil
|
||||
case driver.HyperKit:
|
||||
return net.ParseIP("192.168.64.1"), nil
|
||||
|
@ -136,6 +141,7 @@ func DriverIP(api libmachine.API, machineName string) (net.IP, error) {
|
|||
|
||||
// Based on code from http://stackoverflow.com/questions/23529663/how-to-get-all-addresses-and-masks-from-local-interfaces-in-go
|
||||
func getIPForInterface(name string) (net.IP, error) {
|
||||
glog.Infof("getIPForInterface: searching for %q", name)
|
||||
ints, err := net.Interfaces()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -143,19 +149,25 @@ func getIPForInterface(name string) (net.IP, error) {
|
|||
|
||||
var i net.Interface
|
||||
for _, in := range ints {
|
||||
if strings.HasPrefix(in.Name, name) {
|
||||
if strings.HasPrefix(strings.ToLower(in.Name), strings.ToLower(name)) {
|
||||
glog.Infof("found prefix matching interface for %q: %q", name, in.Name)
|
||||
i = in
|
||||
|
||||
break
|
||||
}
|
||||
glog.Infof("%q does not match prefix %q", in.Name, name)
|
||||
}
|
||||
|
||||
// Didn't find prefix, let's try any substring
|
||||
if i.Name == "" {
|
||||
for _, in := range ints {
|
||||
if strings.Contains(in.Name, name) {
|
||||
if strings.Contains(strings.ToLower(in.Name), strings.ToLower(name)) {
|
||||
glog.Infof("found substring matching interface for %q: %q", name, in.Name)
|
||||
i = in
|
||||
|
||||
break
|
||||
}
|
||||
glog.Infof("%q does not match substring %q", in.Name, name)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -164,14 +176,15 @@ func getIPForInterface(name string) (net.IP, error) {
|
|||
return nil, errors.Errorf("Could not find interface %s inside %+v", name, ints)
|
||||
}
|
||||
|
||||
klog.Infof("Found hyperv interface: %+v\n", i)
|
||||
klog.Infof("Found interface: %+v\n", i)
|
||||
addrs, _ := i.Addrs()
|
||||
for _, a := range addrs {
|
||||
glog.Infof("interface addr: %+v", a)
|
||||
if ipnet, ok := a.(*net.IPNet); ok {
|
||||
if ip := ipnet.IP.To4(); ip != nil {
|
||||
return ip, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil, errors.Errorf("Error finding IPV4 address for %s", name)
|
||||
return nil, errors.Errorf("Unable to find a IPv4 address for interface %q", name)
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ import (
|
|||
var exclude = []string{
|
||||
"{{.error}}",
|
||||
"{{.url}}",
|
||||
" {{.url}}",
|
||||
"{{.msg}}: {{.err}}",
|
||||
"{{.key}}={{.value}}",
|
||||
"opt {{.docker_option}}",
|
||||
|
@ -50,6 +51,7 @@ var exclude = []string{
|
|||
"\\n",
|
||||
"==\u003e {{.name}} \u003c==",
|
||||
"- {{.profile}}",
|
||||
" - {{.profile}}",
|
||||
}
|
||||
|
||||
// ErrMapFile is a constant to refer to the err_map file, which contains the Advice strings.
|
||||
|
@ -333,9 +335,6 @@ func checkString(s string) string {
|
|||
// Parse out quote marks
|
||||
stringToTranslate := s[1 : len(s)-1]
|
||||
|
||||
// Trim whitespace
|
||||
stringToTranslate = strings.TrimSpace(stringToTranslate)
|
||||
|
||||
// Don't translate integers
|
||||
if _, err := strconv.Atoi(stringToTranslate); err == nil {
|
||||
return ""
|
||||
|
|
|
@ -40,27 +40,27 @@ func MaybeDisplayAdvice(err error, driver string) {
|
|||
if errors.Is(err, oci.ErrExitedUnexpectedly) || errors.Is(err, oci.ErrDaemonInfo) {
|
||||
out.T(style.Tip, "If you are still interested to make {{.driver_name}} driver work. The following suggestions might help you get passed this issue:", out.V{"driver_name": driver})
|
||||
if driver == oci.Docker || driver == oci.Podman {
|
||||
out.T(style.Empty, `
|
||||
- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.
|
||||
|
||||
{{.driver_name}} system prune --volumes`, out.V{"driver_name": driver})
|
||||
{{.driver_name}} system prune --volumes`, out.V{"driver_name": driver})
|
||||
}
|
||||
out.T(style.Empty, `
|
||||
- Restart your {{.driver_name}} service`, out.V{"driver_name": driver})
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Restart your {{.driver_name}} service`, out.V{"driver_name": driver})
|
||||
if runtime.GOOS != "linux" {
|
||||
out.T(style.Empty, `
|
||||
- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources. `, out.V{"driver_name": driver})
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.`, out.V{"driver_name": driver})
|
||||
if runtime.GOOS == "darwin" && driver == oci.Docker {
|
||||
out.T(style.Empty, `
|
||||
- Docs https://docs.docker.com/docker-for-mac/#resources`, out.V{"driver_name": driver})
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Docs https://docs.docker.com/docker-for-mac/#resources`, out.V{"driver_name": driver})
|
||||
}
|
||||
if runtime.GOOS == "windows" && driver == oci.Docker {
|
||||
out.T(style.Empty, `
|
||||
- Docs https://docs.docker.com/docker-for-windows/#resources`, out.V{"driver_name": driver})
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Docs https://docs.docker.com/docker-for-windows/#resources`, out.V{"driver_name": driver})
|
||||
}
|
||||
}
|
||||
out.T(style.Empty, `
|
||||
- Delete and recreate minikube cluster
|
||||
out.String("\n\t")
|
||||
out.T(style.Empty, `- Delete and recreate minikube cluster
|
||||
minikube delete
|
||||
minikube start --driver={{.driver_name}}`, out.V{"driver_name": driver})
|
||||
// TODO #8348: maybe advice user if to set the --force-systemd https://github.com/kubernetes/minikube/issues/8348
|
||||
|
|
|
@ -127,7 +127,7 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down
|
|||
// If we end up using a fallback image, notify the user
|
||||
defer func() {
|
||||
if finalImg != "" && finalImg != baseImg {
|
||||
out.WarningT(fmt.Sprintf("minikube was unable to download %s, but successfully downloaded %s as a fallback image", image.Tag(cc.KicBaseImage), image.Tag(finalImg)))
|
||||
out.WarningT(fmt.Sprintf("minikube was unable to download %s, but successfully downloaded %s as a fallback image", image.Tag(baseImg), image.Tag(finalImg)))
|
||||
cc.KicBaseImage = finalImg
|
||||
}
|
||||
}()
|
||||
|
@ -136,7 +136,7 @@ func beginDownloadKicBaseImage(g *errgroup.Group, cc *config.ClusterConfig, down
|
|||
klog.Infof("successfully loaded %s from cached tarball", img)
|
||||
// strip the digest from the img before saving it in the config
|
||||
// because loading an image from tarball to daemon doesn't load the digest
|
||||
finalImg = image.Tag(img)
|
||||
finalImg = img
|
||||
return nil
|
||||
}
|
||||
klog.Infof("Downloading %s to local daemon", img)
|
||||
|
|
|
@ -62,7 +62,7 @@ func init() {
|
|||
Reg = Register{
|
||||
// Expected step orders, organized by the initial step seen
|
||||
steps: map[RegStep][]RegStep{
|
||||
InitialSetup: []RegStep{
|
||||
InitialSetup: {
|
||||
InitialSetup,
|
||||
SelectingDriver,
|
||||
DownloadingArtifacts,
|
||||
|
@ -78,10 +78,10 @@ func init() {
|
|||
Done,
|
||||
},
|
||||
|
||||
Stopping: []RegStep{Stopping, Done},
|
||||
Pausing: []RegStep{Pausing, Done},
|
||||
Unpausing: []RegStep{Unpausing, Done},
|
||||
Deleting: []RegStep{Deleting, Stopping, Deleting, Done},
|
||||
Stopping: {Stopping, Done},
|
||||
Pausing: {Pausing, Done},
|
||||
Unpausing: {Unpausing, Done},
|
||||
Deleting: {Deleting, Stopping, Deleting, Done},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,6 +26,8 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/docker/machine/libmachine/drivers"
|
||||
"github.com/golang/glog"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/drivers/kic"
|
||||
"k8s.io/minikube/pkg/drivers/kic/oci"
|
||||
|
@ -86,34 +88,41 @@ func status() registry.State {
|
|||
ctx, cancel := context.WithTimeout(context.Background(), 6*time.Second)
|
||||
defer cancel()
|
||||
|
||||
// Quickly returns an error code if server is not running
|
||||
cmd := exec.CommandContext(ctx, oci.Docker, "version", "--format", "{{.Server.Os}}-{{.Server.Version}}")
|
||||
o, err := cmd.Output()
|
||||
output := string(o)
|
||||
if strings.Contains(output, "windows-") {
|
||||
return registry.State{Error: oci.ErrWindowsContainers, Installed: true, Healthy: false, Fix: "Change container type to \"linux\" in Docker Desktop settings", Doc: docURL + "#verify-docker-container-type-is-linux"}
|
||||
if err != nil {
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
err = errors.Wrapf(err, "deadline exceeded running %q", strings.Join(cmd.Args, " "))
|
||||
}
|
||||
|
||||
}
|
||||
if err == nil {
|
||||
klog.Infof("docker version: %s", output)
|
||||
return checkNeedsImprovement()
|
||||
}
|
||||
klog.Warningf("docker version returned error: %v", err)
|
||||
|
||||
klog.Warningf("docker returned error: %v", err)
|
||||
if exitErr, ok := err.(*exec.ExitError); ok {
|
||||
stderr := strings.TrimSpace(string(exitErr.Stderr))
|
||||
newErr := fmt.Errorf(`%q %v: %s`, strings.Join(cmd.Args, " "), exitErr, stderr)
|
||||
|
||||
return suggestFix(stderr, newErr)
|
||||
}
|
||||
|
||||
// Basic timeout
|
||||
if ctx.Err() == context.DeadlineExceeded {
|
||||
klog.Warningf("%q timed out. ", strings.Join(cmd.Args, " "))
|
||||
return registry.State{Error: err, Installed: true, Healthy: false, Fix: "Restart the Docker service", Doc: docURL}
|
||||
}
|
||||
|
||||
if exitErr, ok := err.(*exec.ExitError); ok {
|
||||
stderr := strings.TrimSpace(string(exitErr.Stderr))
|
||||
newErr := fmt.Errorf(`%q %v: %s`, strings.Join(cmd.Args, " "), exitErr, stderr)
|
||||
return suggestFix(stderr, newErr)
|
||||
glog.Infof("docker version: %s", o)
|
||||
if strings.Contains(string(o), "windows-") {
|
||||
return registry.State{Error: oci.ErrWindowsContainers, Installed: true, Healthy: false, Fix: "Change container type to \"linux\" in Docker Desktop settings", Doc: docURL + "#verify-docker-container-type-is-linux"}
|
||||
}
|
||||
|
||||
return registry.State{Error: err, Installed: true, Healthy: false, Doc: docURL}
|
||||
si, err := oci.CachedDaemonInfo("docker")
|
||||
if err != nil {
|
||||
// No known fix because we haven't yet seen a failure here
|
||||
return registry.State{Error: errors.Wrap(err, "docker info"), Installed: true, Healthy: false, Doc: docURL}
|
||||
}
|
||||
|
||||
for _, serr := range si.Errors {
|
||||
return suggestFix(serr, fmt.Errorf("docker info error: %s", serr))
|
||||
}
|
||||
|
||||
return checkNeedsImprovement()
|
||||
}
|
||||
|
||||
// checkNeedsImprovement if overlay mod is installed on a system
|
||||
|
@ -121,6 +130,7 @@ func checkNeedsImprovement() registry.State {
|
|||
if runtime.GOOS == "linux" {
|
||||
return checkOverlayMod()
|
||||
}
|
||||
|
||||
return registry.State{Installed: true, Healthy: true}
|
||||
}
|
||||
|
||||
|
@ -133,10 +143,12 @@ func checkOverlayMod() registry.State {
|
|||
|
||||
if _, err := os.Stat("/sys/module/overlay2"); err == nil {
|
||||
klog.Info("overlay2 module found")
|
||||
|
||||
return registry.State{Installed: true, Healthy: true}
|
||||
}
|
||||
|
||||
klog.Warningf("overlay modules were not found")
|
||||
|
||||
return registry.State{NeedsImprovement: true, Installed: true, Healthy: true, Fix: "enable the overlay Linux kernel module using 'modprobe overlay'"}
|
||||
}
|
||||
|
||||
|
@ -150,10 +162,14 @@ func suggestFix(stderr string, err error) registry.State {
|
|||
return registry.State{Error: err, Installed: true, Running: false, Healthy: false, Fix: "Start the Docker service. If Docker is already running, you may need to reset Docker to factory settings with: Settings > Reset.", Doc: "https://github.com/docker/for-win/issues/1825#issuecomment-450501157"}
|
||||
}
|
||||
|
||||
if strings.Contains(stderr, "Cannot connect") || strings.Contains(stderr, "refused") || strings.Contains(stderr, "Is the docker daemon running") || strings.Contains(stderr, "docker daemon is not running") {
|
||||
if dockerNotRunning(stderr) {
|
||||
return registry.State{Error: err, Installed: true, Running: false, Healthy: false, Fix: "Start the Docker service", Doc: docURL}
|
||||
}
|
||||
|
||||
// We don't have good advice, but at least we can provide a good error message
|
||||
return registry.State{Error: err, Installed: true, Running: true, Healthy: false, Doc: docURL}
|
||||
}
|
||||
|
||||
func dockerNotRunning(s string) bool {
|
||||
return strings.Contains(s, "Cannot connect") || strings.Contains(s, "refused") || strings.Contains(s, "Is the docker daemon running") || strings.Contains(s, "docker daemon is not running")
|
||||
}
|
||||
|
|
|
@ -39,11 +39,11 @@ minikube addons SUBCOMMAND [flags]
|
|||
|
||||
## minikube addons configure
|
||||
|
||||
Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list
|
||||
Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list
|
||||
|
||||
### Synopsis
|
||||
|
||||
Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list
|
||||
Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list
|
||||
|
||||
```
|
||||
minikube addons configure ADDON_NAME [flags]
|
||||
|
|
|
@ -11,8 +11,7 @@ Generate command completion for a shell
|
|||
|
||||
### Synopsis
|
||||
|
||||
|
||||
Outputs minikube shell completion for the given shell (bash, zsh or fish)
|
||||
Outputs minikube shell completion for the given shell (bash, zsh or fish)
|
||||
|
||||
This depends on the bash-completion binary. Example installation instructions:
|
||||
OS X:
|
||||
|
|
|
@ -5,7 +5,7 @@ weight: 1
|
|||
date: 2020-07-15
|
||||
---
|
||||
|
||||
If you have a containerized GCP app with a Kubernetes yaml, you can automatically add your credentials to all your deployed pods dynamically with this minikube addon. You just need to have a credentials file, which can be generated with `gcloud auth login`. If you already have a json credentials file you want specify, use the GOOGLE_APPLICATION_CREDENTIALS environment variable.
|
||||
If you have a containerized GCP app with a Kubernetes yaml, you can automatically add your credentials to all your deployed pods dynamically with this minikube addon. You just need to have a credentials file, which can be generated with `gcloud auth application-default login`. If you already have a json credentials file you want specify, use the GOOGLE_APPLICATION_CREDENTIALS environment variable.
|
||||
|
||||
- Start a cluster:
|
||||
```
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
"- Docs https://docs.docker.com/docker-for-mac/#resources": "",
|
||||
"- Docs https://docs.docker.com/docker-for-windows/#resources": "",
|
||||
"- Ensure your {{.driver_name}} daemon has access to enough CPU/memory resources.": "",
|
||||
"- Prune unused {{.driver_name}} images, volumes and abandoned containers.": "",
|
||||
"- Prune unused {{.driver_name}} images, volumes, networks and abandoned containers.\n\n\t\t\t\t{{.driver_name}} system prune --volumes": "",
|
||||
"- Restart your {{.driver_name}} service": "",
|
||||
"A VPN or firewall is interfering with HTTP access to the minikube VM. Alternatively, try a different VM driver: https://minikube.sigs.k8s.io/docs/start/": "",
|
||||
"A firewall is blocking Docker the minikube VM from reaching the image repository. You may need to select --image-repository, or use a proxy.": "",
|
||||
|
@ -45,7 +45,7 @@
|
|||
"Basic Commands:": "",
|
||||
"Because you are using a Docker driver on {{.operating_system}}, the terminal needs to be open to run it.": "",
|
||||
"Bind Address: {{.Address}}": "",
|
||||
"Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.": "",
|
||||
"Both driver={{.driver}} and vm-driver={{.vmd}} have been set.\n\n Since vm-driver is deprecated, minikube will default to driver={{.driver}}.\n\n If vm-driver is set in the global config, please run \"minikube config unset vm-driver\" to resolve this warning.\n\t\t\t": "",
|
||||
"CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto)": "",
|
||||
"Cannot find directory {{.path}} for mount": "",
|
||||
"Cannot use both --output and --format options": "",
|
||||
|
@ -68,7 +68,7 @@
|
|||
"Confirm that you have a working internet connection and that your VM has not run out of resources by using: 'minikube logs'": "",
|
||||
"Confirm that you have supplied the correct value to --hyperv-virtual-switch using the 'Get-VMSwitch' command": "",
|
||||
"Connect to LoadBalancer services": "",
|
||||
"Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB`": "",
|
||||
"Consider creating a cluster with larger memory size using `minikube start --memory SIZE_MB` ": "",
|
||||
"Consider increasing Docker Desktop's memory size.": "",
|
||||
"Could not determine a Google Cloud project, which might be ok.": "",
|
||||
"Could not find any GCP credentials. Either run `gcloud auth login` or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your credentials file.": "",
|
||||
|
@ -78,6 +78,7 @@
|
|||
"Creating mount {{.name}} ...": "",
|
||||
"Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB) ...": "",
|
||||
"Creating {{.driver_name}} {{.machine_type}} (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "",
|
||||
"Current context is \"{{.context}}\"": "",
|
||||
"DEPRECATED, use `driver` instead.": "",
|
||||
"DEPRECATED: Replaced by --cni=bridge": "",
|
||||
"Default group id used for the mount": "",
|
||||
|
@ -91,7 +92,7 @@
|
|||
"Deleting node {{.name}} from cluster {{.cluster}}": "",
|
||||
"Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)": "",
|
||||
"Disable dynamic memory in your VM manager, or pass in a larger --memory value": "",
|
||||
"Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list": "",
|
||||
"Disables the addon w/ADDON_NAME within minikube (example: minikube addons disable dashboard). For a list of available addons use: minikube addons list ": "",
|
||||
"Disables the filesystem mounts provided by the hypervisors": "",
|
||||
"Disk size allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "",
|
||||
"Display dashboard URL instead of opening a browser": "",
|
||||
|
@ -102,10 +103,9 @@
|
|||
"Docker Desktop has less than 2 CPUs configured, but Kubernetes requires at least 2 to be available": "",
|
||||
"Docker Desktop is configured for Windows containers, but Linux containers are required for minikube": "",
|
||||
"Docker Desktop only has {{.size}}MiB available, less than the required {{.req}}MiB for Kubernetes": "",
|
||||
"Docker Desktop only has {{.size}}MiB available, you may encounter application deployment failures.": "",
|
||||
"Docker has less than 2 CPUs available, but Kubernetes requires at least 2 to be available": "",
|
||||
"Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "",
|
||||
"Docker is nearly out of disk space, which may cause deployments to fail! ({{.p}}% of capacity)": "",
|
||||
"Docker is out of disk space! (/var is at {{.p}}% of capacity)": "",
|
||||
"Docs have been saved at - {{.path}}": "",
|
||||
"Documentation: {{.url}}": "",
|
||||
"Done! kubectl is now configured to use \"{{.name}}\" by default": "",
|
||||
|
@ -127,7 +127,7 @@
|
|||
"Enable or disable a minikube addon": "",
|
||||
"Enable proxy for NAT DNS requests (virtualbox driver only)": "",
|
||||
"Enabled addons: {{.addons}}": "",
|
||||
"Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list": "",
|
||||
"Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "",
|
||||
"Enabling '{{.name}}' returned an error: {{.error}}": "",
|
||||
"Enabling dashboard ...": "",
|
||||
"Ensure that CRI-O is installed and healthy: Run 'sudo systemctl start crio' and 'journalctl -u crio'. Alternatively, use --container-runtime=docker": "",
|
||||
|
@ -161,6 +161,7 @@
|
|||
"Error starting cluster": "",
|
||||
"Error starting mount": "",
|
||||
"Error while setting kubectl current context : {{.error}}": "",
|
||||
"Error while setting kubectl current context: {{.error}}": "",
|
||||
"Error writing mount pid": "",
|
||||
"Examples": "",
|
||||
"Executing \"{{.command}}\" took an unusually long time: {{.duration}}": "",
|
||||
|
@ -180,7 +181,6 @@
|
|||
"Failed to delete images": "",
|
||||
"Failed to delete images from config": "",
|
||||
"Failed to enable container runtime": "",
|
||||
"Failed to get API Server URL": "",
|
||||
"Failed to get bootstrapper": "",
|
||||
"Failed to get command runner": "",
|
||||
"Failed to get image map": "",
|
||||
|
@ -208,7 +208,7 @@
|
|||
"Force minikube to perform possibly dangerous operations": "",
|
||||
"Format to print stdout in. Options include: [text,json]": "",
|
||||
"Found network options:": "",
|
||||
"Found {{.number}} invalid profile(s) !": "",
|
||||
"Found {{.number}} invalid profile(s) ! ": "",
|
||||
"Generate command completion for a shell": "",
|
||||
"Generate unable to parse disk size '{{.diskSize}}': {{.error}}": "",
|
||||
"Generate unable to parse memory '{{.memory}}': {{.error}}": "",
|
||||
|
@ -232,7 +232,7 @@
|
|||
"If set, install addons. Defaults to true.": "",
|
||||
"If set, pause all namespaces": "",
|
||||
"If set, unpause all namespaces": "",
|
||||
"If the above advice does not help, please let us know:": "",
|
||||
"If the above advice does not help, please let us know: ": "",
|
||||
"If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.": "",
|
||||
"If true, only download and cache files for later use - don't install or start anything.": "",
|
||||
"If true, the added node will be marked for work. Defaults to true.": "",
|
||||
|
@ -277,7 +277,7 @@
|
|||
"Mounts the specified directory into minikube.": "",
|
||||
"Multi-node clusters are currently experimental and might exhibit unintended behavior.": "",
|
||||
"Multiple errors deleting profiles": "",
|
||||
"Multiple minikube profiles were found -": "",
|
||||
"Multiple minikube profiles were found - ": "",
|
||||
"NIC Type used for host only network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
|
||||
"NIC Type used for nat network. One of Am79C970A, Am79C973, 82540EM, 82543GC, 82545EM, or virtio (virtualbox driver only)": "",
|
||||
"NOTE: This process must stay alive for the mount to be accessible ...": "",
|
||||
|
@ -299,21 +299,21 @@
|
|||
"One of 'yaml' or 'json'.": "",
|
||||
"Only alphanumeric and dashes '-' are permitted. Minimum 1 character, starting with alphanumeric.": "",
|
||||
"Open the addons URL with https instead of http": "",
|
||||
"Open the service URL with https instead of http": "",
|
||||
"Open the service URL with https instead of http (defaults to \\\"false\\\")": "",
|
||||
"Opening Kubernetes service {{.namespace_name}}/{{.service_name}} in default browser...": "",
|
||||
"Opening service {{.namespace_name}}/{{.service_name}} in default browser...": "",
|
||||
"Opening {{.url}} in your default browser...": "",
|
||||
"Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list": "",
|
||||
"Opens the addon w/ADDON_NAME within minikube (example: minikube addons open dashboard). For a list of available addons use: minikube addons list ": "",
|
||||
"Operations on nodes": "",
|
||||
"Options: {{.options}}": "",
|
||||
"Output format. Accepted values: [json]": "",
|
||||
"Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion": "",
|
||||
"Outputs minikube shell completion for the given shell (bash, zsh or fish)\n\n\tThis depends on the bash-completion binary. Example installation instructions:\n\tOS X:\n\t\t$ brew install bash-completion\n\t\t$ source $(brew --prefix)/etc/bash_completion\n\t\t$ minikube completion bash \u003e ~/.minikube-completion # for bash users\n\t\t$ minikube completion zsh \u003e ~/.minikube-completion # for zsh users\n\t\t$ source ~/.minikube-completion\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\tUbuntu:\n\t\t$ apt-get install bash-completion\n\t\t$ source /etc/bash-completion\n\t\t$ source \u003c(minikube completion bash) # for bash users\n\t\t$ source \u003c(minikube completion zsh) # for zsh users\n\t\t$ minikube completion fish \u003e ~/.config/fish/completions/minikube.fish # for fish users\n\n\tAdditionally, you may want to output the completion to a file and source in your .bashrc\n\n\tNote for zsh users: [1] zsh completions are only supported in versions of zsh \u003e= 5.2\n\tNote for fish users: [2] please refer to this docs for more details https://fishshell.com/docs/current/#tab-completion\n": "",
|
||||
"Pause": "",
|
||||
"Paused {{.count}} containers": "",
|
||||
"Paused {{.count}} containers in: {{.namespaces}}": "",
|
||||
"Pausing node {{.name}} ...": "",
|
||||
"Pausing node {{.name}} ... ": "",
|
||||
"Permissions: {{.octalMode}} ({{.writtenMode}})": "",
|
||||
"Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB`": "",
|
||||
"Please create a cluster with bigger disk size: `minikube start --disk SIZE_MB` ": "",
|
||||
"Please either authenticate to the registry or use --base-image flag to use a different registry.": "",
|
||||
"Please enter a value:": "",
|
||||
"Please free up disk or prune images.": "",
|
||||
|
@ -321,11 +321,11 @@
|
|||
"Please install the minikube hyperkit VM driver, or select an alternative --driver": "",
|
||||
"Please install the minikube kvm2 VM driver, or select an alternative --driver": "",
|
||||
"Please make sure the service you are looking for is deployed or is in the correct namespace.": "",
|
||||
"Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'": "",
|
||||
"Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'": "",
|
||||
"Please re-eval your docker-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} docker-env'\n\n\t": "",
|
||||
"Please re-eval your podman-env, To ensure your environment variables have updated ports:\n\n\t'minikube -p {{.profile_name}} podman-env'\n\n\t": "",
|
||||
"Please see {{.documentation_url}} for more details": "",
|
||||
"Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "",
|
||||
"Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages": "",
|
||||
"Please visit the following link for documentation around this: \n\thttps://help.github.com/en/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages#authenticating-to-github-packages\n": "",
|
||||
"Populates the specified folder with documentation in markdown about minikube": "",
|
||||
"PowerShell is running in constrained mode, which is incompatible with Hyper-V scripting.": "",
|
||||
"Powering off \"{{.profile_name}}\" via SSH ...": "",
|
||||
|
@ -400,7 +400,7 @@
|
|||
"Show only log entries which point to known problems": "",
|
||||
"Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.": "",
|
||||
"Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "",
|
||||
"Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server": "",
|
||||
"Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube{{.profileArg}} addons enable metrics-server\t\n\n": "",
|
||||
"Sorry, Kubernetes {{.k8sVersion}} requires conntrack to be installed in root's path": "",
|
||||
"Sorry, completion support is not yet implemented for {{.name}}": "",
|
||||
"Sorry, please set the --output flag to one of the following valid options: [text,json]": "",
|
||||
|
@ -555,12 +555,12 @@
|
|||
"Unable to safely downgrade existing Kubernetes v{{.old}} cluster to v{{.new}}": "",
|
||||
"Unable to stop VM": "",
|
||||
"Unable to update {{.driver}} driver: {{.error}}": "",
|
||||
"Unfortunately, could not download the base image {{.image_name}}": "",
|
||||
"Unfortunately, could not download the base image {{.image_name}} ": "",
|
||||
"Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "",
|
||||
"Unmounting {{.path}} ...": "",
|
||||
"Unpaused {{.count}} containers": "",
|
||||
"Unpaused {{.count}} containers in: {{.namespaces}}": "",
|
||||
"Unpausing node {{.name}} ...": "",
|
||||
"Unpausing node {{.name}} ... ": "",
|
||||
"Unset the KUBECONFIG environment variable, or verify that it does not point to an empty or otherwise invalid path": "",
|
||||
"Unset variables instead of setting them": "",
|
||||
"Update kubeconfig in case of an IP or port change": "",
|
||||
|
@ -583,7 +583,7 @@
|
|||
"Use native Golang SSH client (default true). Set to 'false' to use the command line 'ssh' command when accessing the docker machine. Useful for the machine drivers when they will not start with 'Waiting for SSH'.": "",
|
||||
"User ID: {{.userID}}": "",
|
||||
"Userspace file server is shutdown": "",
|
||||
"Userspace file server:": "",
|
||||
"Userspace file server: ": "",
|
||||
"Using image repository {{.name}}": "",
|
||||
"Using podman 2 is not supported yet. your version is \"{{.currentVersion}}\". minikube might not work. use at your own risk.": "",
|
||||
"Using the '{{.runtime}}' runtime with the 'none' driver is an untested configuration!": "",
|
||||
|
@ -608,7 +608,7 @@
|
|||
"Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "",
|
||||
"Whether to use external switch over Default Switch if virtual switch not explicitly specified. (hyperv driver only)": "",
|
||||
"You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}).": "",
|
||||
"You can delete them using the following command(s):": "",
|
||||
"You can delete them using the following command(s): ": "",
|
||||
"You can force an unsupported Kubernetes version via the --force flag": "",
|
||||
"You cannot change the CPUs for an existing minikube cluster. Please first delete the cluster.": "",
|
||||
"You cannot change the Disk size for an exiting minikube cluster. Please first delete the cluster.": "",
|
||||
|
@ -622,13 +622,13 @@
|
|||
"Your host is failing to route packets to the minikube VM. If you have VPN software, try turning it off or configuring it so that it does not re-route traffic to the VM IP. If not, check your VM environment routing options.": "",
|
||||
"Your minikube config refers to an unsupported driver. Erase ~/.minikube, and try again.": "",
|
||||
"Your minikube vm is not running, try minikube start.": "",
|
||||
"Your user lacks permissions to the minikube profile directory. Run: 'sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube' to fix": "",
|
||||
"[WARNING] For full functionality, the 'csi-hostpath-driver' addon requires the 'volumesnapshots' addon to be enabled.\n\nYou can enable 'volumesnapshots' addon by running: 'minikube addons enable volumesnapshots'\n": "",
|
||||
"addon '{{.name}}' is currently not enabled.\nTo enable this addon run:\nminikube addons enable {{.name}}": "",
|
||||
"addon '{{.name}}' is not a valid addon packaged with minikube.\nTo see the list of available addons run:\nminikube addons list": "",
|
||||
"addons modifies minikube addons files using subcommands like \"minikube addons enable dashboard\"": "",
|
||||
"bash completion failed": "",
|
||||
"call with cleanup=true to remove old tunnels": "",
|
||||
"config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields:\\n\\n": "",
|
||||
"config modifies minikube config files using subcommands like \"minikube config set driver kvm\"\nConfigurable fields: \\n\\n": "",
|
||||
"config view failed": "",
|
||||
"dashboard service is not running: {{.error}}": "",
|
||||
"deleting node": "",
|
||||
|
@ -660,14 +660,14 @@
|
|||
"kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'": "",
|
||||
"kubectl proxy": "",
|
||||
"libmachine failed": "",
|
||||
"list displays all valid default settings for PROPERTY_NAME\nAcceptable fields:\\n\\n": "",
|
||||
"list displays all valid default settings for PROPERTY_NAME\nAcceptable fields: \\n\\n": "",
|
||||
"logdir set failed": "",
|
||||
"max time to wait per Kubernetes or host to be healthy.": "",
|
||||
"minikube addons list --output OUTPUT. json, list": "",
|
||||
"minikube is exiting due to an error. If the above message is not useful, open an issue:": "",
|
||||
"minikube is missing files relating to your guest environment. This can be fixed by running 'minikube delete'": "",
|
||||
"minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "",
|
||||
"minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check": "",
|
||||
"minikube is unable to connect to the VM: {{.error}}\n\n\tThis is likely due to one of two reasons:\n\n\t- VPN or firewall interference\n\t- {{.hypervisor}} network configuration issue\n\n\tSuggested workarounds:\n\n\t- Disable your local VPN or firewall software\n\t- Configure your local VPN or firewall to allow access to {{.ip}}\n\t- Restart or reinstall {{.hypervisor}}\n\t- Use an alternative --vm-driver\n\t- Use --force to override this connectivity check\n\t": "",
|
||||
"minikube profile was successfully set to {{.profile_name}}": "",
|
||||
"minikube provisions and manages local Kubernetes clusters optimized for development workflows.": "",
|
||||
"minikube quickly sets up a local Kubernetes cluster": "",
|
||||
|
@ -715,6 +715,7 @@
|
|||
"version yaml failure": "",
|
||||
"zsh completion failed": "",
|
||||
"{{ .name }}: {{ .rejection }}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.count}} nodes stopped.": "",
|
||||
"{{.driver_name}} \"{{.cluster}}\" {{.machine_type}} is missing, will recreate.": "",
|
||||
"{{.driver_name}} couldn't proceed because {{.driver_name}} service is not healthy.": "",
|
||||
|
@ -725,6 +726,8 @@
|
|||
"{{.name}} has no available configuration options": "",
|
||||
"{{.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}} is out of disk space! (/var is at {{.p}}% of capacity)": "",
|
||||
"{{.ocibin}} is taking an unsually long time to respond, consider restarting {{.ocibin}}": "",
|
||||
"{{.path}} is version {{.client_version}}, which may have incompatibilites with Kubernetes {{.cluster_version}}.": "",
|
||||
"{{.prefix}}minikube {{.version}} on {{.platform}}": "",
|
||||
|
|
Loading…
Reference in New Issue