Merge branch 'master' into gvisor-containerd-shim_v0.0.2

pull/4494/head
Ian Lewis 2019-09-03 22:20:12 -04:00
commit d8c380da85
No known key found for this signature in database
GPG Key ID: E8FF5ADF7B2B7410
51 changed files with 531 additions and 273 deletions

View File

@ -529,7 +529,7 @@ Huge thank you for this release towards our contributors:
* Updating e2e tests instructions [#3509](https://github.com/kubernetes/minikube/pull/3509)
* Defer dashboard deployment until "minikube dashboard" is executed [#3485](https://github.com/kubernetes/minikube/pull/3485)
* Change minikube-hostpath storage class addon from Reconcile to EnsureExists [#3497](https://github.com/kubernetes/minikube/pull/3497)
* Tell user given driver has been ignored if exising VM is different [#3374](https://github.com/kubernetes/minikube/pull/3374)
* Tell user given driver has been ignored if existing VM is different [#3374](https://github.com/kubernetes/minikube/pull/3374)
Thank you to all to everyone who contributed to this massive release:
@ -719,7 +719,7 @@ Huge Thank You for this release to our contributors:
## Version 0.28.1 - 7/16/2018
* vboxsf Host Mounting fixed (Linux Kernel version downgraded to 4.15 from 4.16) [#2986](https://github.com/kubernetes/minikube/pull/2986)
* cri-tools udpated to 1.11.1 [#2986](https://github.com/kubernetes/minikube/pull/2986)
* cri-tools updated to 1.11.1 [#2986](https://github.com/kubernetes/minikube/pull/2986)
* Feature Gates support added to kubeadm bootstrapper [#2951](https://github.com/kubernetes/minikube/pull/2951)
* Kubernetes 1.11 build support added [#2943](https://github.com/kubernetes/minikube/pull/2943)
* GPU support for kvm2 driver added [#2936](https://github.com/kubernetes/minikube/pull/2936)

View File

@ -14,10 +14,10 @@
# Bump these on release - and please check ISO_VERSION for correctness.
VERSION_MAJOR ?= 1
VERSION_MINOR ?= 3
VERSION_BUILD ?= 1
VERSION_MINOR ?= 4
VERSION_BUILD ?= 0-beta.0
# Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
ISO_VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).0
ISO_VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).${VERSION_BUILD}
VERSION ?= v$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
DEB_VERSION ?= $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
@ -123,7 +123,7 @@ ifeq ($(IN_DOCKER),1)
endif
ifeq ($(GOOS),windows)
IS_EXE = ".exe"
IS_EXE = .exe
endif
@ -142,7 +142,7 @@ out/minikube-%: pkg/minikube/assets/assets.go pkg/minikube/translate/translation
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
else
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$*))" go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$(subst $(IS_EXE), ,$*)))" go build -tags "$(MINIKUBE_BUILD_TAGS)" -ldflags="$(MINIKUBE_LDFLAGS)" -a -o $@ k8s.io/minikube/cmd/minikube
endif
.PHONY: e2e-linux-amd64 e2e-darwin-amd64 e2e-windows-amd64.exe
@ -151,7 +151,7 @@ e2e-darwin-amd64: out/e2e-darwin-amd64
e2e-windows-amd64.exe: out/e2e-windows-amd64.exe
out/e2e-%: out/minikube-%
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$*))" go test -c k8s.io/minikube/test/integration --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" -o $@
GOOS="$(firstword $(subst -, ,$*))" GOARCH="$(lastword $(subst -, ,$(subst $(IS_EXE), ,$*)))" go test -c k8s.io/minikube/test/integration --tags="$(MINIKUBE_INTEGRATION_BUILD_TAGS)" -o $@
out/e2e-windows-amd64.exe: out/e2e-windows-amd64
cp $< $@
@ -179,7 +179,7 @@ linux-menuconfig:
$(MAKE) -C $(BUILD_DIR)/buildroot/output/build/linux-$(KERNEL_VERSION)/ savedefconfig
cp $(BUILD_DIR)/buildroot/output/build/linux-$(KERNEL_VERSION)/defconfig deploy/iso/minikube-iso/board/coreos/minikube/linux_defconfig
out/minikube.iso: $(shell find deploy/iso/minikube-iso -type f)
out/minikube.iso: $(shell find "deploy/iso/minikube-iso" -type f)
ifeq ($(IN_DOCKER),1)
$(MAKE) minikube_iso
else
@ -233,18 +233,26 @@ extract:
go run cmd/extract/extract.go
# Regenerates assets.go when template files have been updated
pkg/minikube/assets/assets.go: $(shell find deploy/addons -type f)
pkg/minikube/assets/assets.go: $(shell find "deploy/addons" -type f)
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
else ifeq ($(GOOS),windows)
which go-bindata || GO111MODULE=off GOBIN=$(GOPATH)/bin go get github.com/jteeuwen/go-bindata/...
PATH="$(PATH);$(GOPATH)/bin" go-bindata -nomemcopy -o $@ -pkg assets deploy/addons/...
-gofmt -s -w $@
else
which go-bindata || GO111MODULE=off GOBIN=$(GOPATH)/bin go get github.com/jteeuwen/go-bindata/...
PATH="$(PATH):$(GOPATH)/bin" go-bindata -nomemcopy -o $@ -pkg assets deploy/addons/...
-gofmt -s -w $@
endif
pkg/minikube/translate/translations.go: $(shell find translations/ -type f)
pkg/minikube/translate/translations.go: $(shell find "translations/" -type f)
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
else ifeq ($(GOOS),windows)
which go-bindata || GO111MODULE=off GOBIN=$(GOPATH)/bin go get github.com/jteeuwen/go-bindata/...
PATH="$(PATH);$(GOPATH)/bin" go-bindata -nomemcopy -o $@ -pkg translate translations/...
-gofmt -s -w $@
else
which go-bindata || GO111MODULE=off GOBIN=$(GOPATH)/bin go get github.com/jteeuwen/go-bindata/...
PATH="$(PATH):$(GOPATH)/bin" go-bindata -nomemcopy -o $@ -pkg translate translations/...
@ -333,7 +341,7 @@ reportcard:
mdlint:
@$(MARKDOWNLINT) $(MINIKUBE_MARKDOWN_FILES)
out/docs/minikube.md: $(shell find cmd) $(shell find pkg/minikube/constants) pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants") pkg/minikube/assets/assets.go pkg/minikube/translate/translations.go
go run -ldflags="$(MINIKUBE_LDFLAGS)" -tags gendocs hack/help_text/gen_help_text.go
out/minikube_$(DEB_VERSION).deb: out/minikube-linux-amd64

1
OWNERS
View File

@ -6,6 +6,7 @@ reviewers:
- sharifelgamal
- RA489
- medyagh
- josedonizetti
approvers:
- tstromberg
- afbjorklund

View File

@ -68,7 +68,7 @@ var ProfileCmd = &cobra.Command{
}
if err == nil {
if cc.MachineConfig.KeepContext {
out.SuccessT("Skipped switching kubectl context for {{.profile_name}} , because --keep-context", out.V{"profile_name": profile})
out.SuccessT("Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.", out.V{"profile_name": profile})
out.SuccessT("To connect to this cluster, use: kubectl --context={{.profile_name}}", out.V{"profile_name": profile})
} else {
err := kubeconfig.SetCurrentContext(constants.KubeconfigPath, profile)

View File

@ -52,7 +52,7 @@ associated files.`,
// runDelete handles the executes the flow of "minikube delete"
func runDelete(cmd *cobra.Command, args []string) {
if len(args) > 0 {
exit.UsageT("usage: minikube delete")
exit.UsageT("Usage: minikube delete")
}
profile := viper.GetString(pkg_config.MachineProfile)
api, err := machine.NewAPIClient()

View File

@ -97,5 +97,5 @@ var logsCmd = &cobra.Command{
func init() {
logsCmd.Flags().BoolVarP(&followLogs, "follow", "f", false, "Show only the most recent journal entries, and continuously print new entries as they are appended to the journal.")
logsCmd.Flags().BoolVar(&showProblems, "problems", false, "Show only log entries which point to known problems")
logsCmd.Flags().IntVarP(&numberOfLines, "length", "n", 30, "Number of lines back to go within the log")
logsCmd.Flags().IntVarP(&numberOfLines, "length", "n", 60, "Number of lines back to go within the log")
}

View File

@ -37,7 +37,6 @@ import (
"k8s.io/minikube/pkg/minikube/config"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/exit"
"k8s.io/minikube/pkg/minikube/notify"
"k8s.io/minikube/pkg/minikube/translate"
)
@ -53,10 +52,6 @@ var dirs = [...]string{
constants.MakeMiniPath("logs"),
}
var (
enableUpdateNotification = true
)
var viperWhiteList = []string{
"v",
"alsologtostderr",
@ -92,10 +87,6 @@ var RootCmd = &cobra.Command{
exit.WithError("logdir set failed", err)
}
}
if enableUpdateNotification {
notify.MaybePrintUpdateTextFromGithub()
}
},
}

View File

@ -30,6 +30,8 @@ import (
"strings"
"time"
"k8s.io/minikube/pkg/minikube/notify"
"github.com/blang/semver"
"github.com/docker/machine/libmachine"
"github.com/docker/machine/libmachine/host"
@ -107,13 +109,14 @@ const (
)
var (
registryMirror []string
dockerEnv []string
dockerOpt []string
insecureRegistry []string
apiServerNames []string
apiServerIPs []net.IP
extraOptions cfg.ExtraOptionSlice
registryMirror []string
dockerEnv []string
dockerOpt []string
insecureRegistry []string
apiServerNames []string
apiServerIPs []net.IP
extraOptions cfg.ExtraOptionSlice
enableUpdateNotification = true
)
func init() {
@ -177,26 +180,26 @@ func initDriverFlags() {
startCmd.Flags().Bool(disableDriverMounts, false, "Disables the filesystem mounts provided by the hypervisors")
// kvm2
startCmd.Flags().String(kvmNetwork, "default", "The KVM network name. (only supported with KVM driver)")
startCmd.Flags().String(kvmQemuURI, "qemu:///system", "The KVM QEMU connection URI. (works only with kvm2 driver on linux)")
startCmd.Flags().String(kvmNetwork, "default", "The KVM network name. (kvm2 driver only)")
startCmd.Flags().String(kvmQemuURI, "qemu:///system", "The KVM QEMU connection URI. (kvm2 driver only)")
startCmd.Flags().Bool(kvmGPU, false, "Enable experimental NVIDIA GPU support in minikube")
startCmd.Flags().Bool(kvmHidden, false, "Hide the hypervisor signature from the guest in minikube")
startCmd.Flags().Bool(kvmHidden, false, "Hide the hypervisor signature from the guest in minikube (kvm2 driver only)")
// virtualbox
startCmd.Flags().String(hostOnlyCIDR, "192.168.99.1/24", "The CIDR to be used for the minikube VM (only supported with Virtualbox driver)")
startCmd.Flags().Bool(dnsProxy, false, "Enable proxy for NAT DNS requests (virtualbox)")
startCmd.Flags().Bool(hostDNSResolver, true, "Enable host resolver for NAT DNS requests (virtualbox)")
startCmd.Flags().Bool(noVTXCheck, false, "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox)")
startCmd.Flags().String(hostOnlyCIDR, "192.168.99.1/24", "The CIDR to be used for the minikube VM (virtualbox driver only)")
startCmd.Flags().Bool(dnsProxy, false, "Enable proxy for NAT DNS requests (virtualbox driver only)")
startCmd.Flags().Bool(hostDNSResolver, true, "Enable host resolver for NAT DNS requests (virtualbox driver only)")
startCmd.Flags().Bool(noVTXCheck, false, "Disable checking for the availability of hardware virtualization before the vm is started (virtualbox driver only)")
// hyperkit
startCmd.Flags().StringSlice(vsockPorts, []string{}, "List of guest VSock ports that should be exposed as sockets on the host (Only supported on with hyperkit now).")
startCmd.Flags().String(uuid, "", "Provide VM UUID to restore MAC address (only supported with Hyperkit driver).")
startCmd.Flags().String(vpnkitSock, "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock.")
startCmd.Flags().StringSlice(nfsShare, []string{}, "Local folders to share with Guest via NFS mounts (Only supported on with hyperkit now)")
startCmd.Flags().String(nfsSharesRoot, "/nfsshares", "Where to root the NFS Shares (defaults to /nfsshares, only supported with hyperkit now)")
startCmd.Flags().StringSlice(vsockPorts, []string{}, "List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)")
startCmd.Flags().String(uuid, "", "Provide VM UUID to restore MAC address (hyperkit driver only)")
startCmd.Flags().String(vpnkitSock, "", "Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)")
startCmd.Flags().StringSlice(nfsShare, []string{}, "Local folders to share with Guest via NFS mounts (hyperkit driver only)")
startCmd.Flags().String(nfsSharesRoot, "/nfsshares", "Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)")
// hyperv
startCmd.Flags().String(hypervVirtualSwitch, "", "The hyperv virtual switch name. Defaults to first found. (only supported with HyperV driver)")
startCmd.Flags().String(hypervVirtualSwitch, "", "The hyperv virtual switch name. Defaults to first found. (hyperv driver only)")
}
// initNetworkingFlags inits the commandline flags for connectivity related flags for start
@ -204,7 +207,7 @@ func initNetworkingFlags() {
startCmd.Flags().StringSliceVar(&insecureRegistry, "insecure-registry", nil, "Insecure Docker registries to pass to the Docker daemon. The default service CIDR range will automatically be added.")
startCmd.Flags().StringSliceVar(&registryMirror, "registry-mirror", nil, "Registry mirrors to pass to the Docker daemon")
startCmd.Flags().String(imageRepository, "", "Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to \"auto\" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers")
startCmd.Flags().String(imageMirrorCountry, "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn")
startCmd.Flags().String(imageMirrorCountry, "", "Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.")
startCmd.Flags().String(serviceCIDR, pkgutil.DefaultServiceCIDR, "The CIDR to be used for service cluster IPs.")
startCmd.Flags().StringArrayVar(&dockerEnv, "docker-env", nil, "Environment variables to pass to the Docker daemon. (format: key=value)")
startCmd.Flags().StringArrayVar(&dockerOpt, "docker-opt", nil, "Specify arbitrary flags to pass to the Docker daemon. (format: key=value)")
@ -216,6 +219,11 @@ var startCmd = &cobra.Command{
Short: "Starts a local kubernetes cluster",
Long: "Starts a local kubernetes cluster",
Run: runStart,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
if enableUpdateNotification {
notify.MaybePrintUpdateTextFromGithub()
}
},
}
// platform generates a user-readable platform message
@ -253,6 +261,7 @@ func runStart(cmd *cobra.Command, args []string) {
prefix = fmt.Sprintf("[%s] ", viper.GetString(cfg.MachineProfile))
}
out.T(out.Happy, "{{.prefix}}minikube {{.version}} on {{.platform}}", out.V{"prefix": prefix, "version": version.GetVersion(), "platform": platform()})
displayEnviron(os.Environ())
// if --registry-mirror specified when run minikube start,
// take arg precedence over MINIKUBE_REGISTRY_MIRROR
@ -331,7 +340,18 @@ func runStart(cmd *cobra.Command, args []string) {
}
}
showKubectlConnectInfo(kubeconfig)
}
// displayEnviron makes the user aware of environment variables that will affect how minikube operates
func displayEnviron(env []string) {
for _, kv := range env {
bits := strings.SplitN(kv, "=", 2)
k := bits[0]
v := bits[1]
if strings.HasPrefix(k, "MINIKUBE_") || k == constants.KubeconfigEnvVar {
out.T(out.Option, "{{.key}}={{.value}}", out.V{"key": k, "value": v})
}
}
}
func setupKubeconfig(h *host.Host, c *cfg.Config) (*kubeconfig.Settings, error) {
@ -354,6 +374,7 @@ func setupKubeconfig(h *host.Host, c *cfg.Config) (*kubeconfig.Settings, error)
KeepContext: viper.GetBool(keepContext),
EmbedCerts: viper.GetBool(embedCerts),
}
kcs.SetPath(kubeconfig.PathFromEnv())
if err := kubeconfig.Update(kcs); err != nil {
return kcs, err
@ -583,7 +604,7 @@ func validateRegistryMirror() {
glog.Errorln("Error Parsing URL: ", err)
}
if (URL.Scheme != "http" && URL.Scheme != "https") || URL.Path != "" {
exit.UsageT("Sorry, url provided with --registry-mirror flag is invalid {{.url}}", out.V{"url": loc})
exit.UsageT("Sorry, the url provided with the --registry-mirror flag is invalid: {{.url}}", out.V{"url": loc})
}
}
@ -657,9 +678,9 @@ func generateCfgFromFlags(cmd *cobra.Command, k8sVersion string) (cfg.Config, er
if !found {
if autoSelectedRepository == "" {
exit.WithCodeT(exit.Failure, "None of known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag")
exit.WithCodeT(exit.Failure, "None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag")
} else {
out.WarningT("None of known repositories in your location is accessible. Use {{.image_repository_name}} as fallback.", out.V{"image_repository_name": autoSelectedRepository})
out.WarningT("None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.", out.V{"image_repository_name": autoSelectedRepository})
}
}
@ -751,8 +772,7 @@ func prepareNone(vmDriver string) {
if os.Getenv("CHANGE_MINIKUBE_NONE_USER") == "" {
home := os.Getenv("HOME")
out.WarningT("kubectl and minikube configuration will be stored in {{.home_folder}}", out.V{"home_folder": home})
out.WarningT("To use kubectl or minikube commands as your own user, you may")
out.WarningT("need to relocate them. For example, to overwrite your own settings:")
out.WarningT("To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:")
out.T(out.Empty, "")
out.T(out.Command, "sudo mv {{.home_folder}}/.kube {{.home_folder}}/.minikube $HOME", out.V{"home_folder": home})
@ -763,7 +783,7 @@ func prepareNone(vmDriver string) {
}
if err := pkgutil.MaybeChownDirRecursiveToMinikubeUser(constants.GetMinipath()); err != nil {
exit.WithCodeT(exit.Permissions, "Failed to chown {{.minikube_dir_path}}: {{.error}}", out.V{"minikube_dir_path": constants.GetMinipath(), "error": err})
exit.WithCodeT(exit.Permissions, "Failed to change permissions for {{.minikube_dir_path}}: {{.error}}", out.V{"minikube_dir_path": constants.GetMinipath(), "error": err})
}
}
@ -808,7 +828,7 @@ func validateNetwork(h *host.Host) string {
ipExcluded := proxy.IsIPExcluded(ip) // Skip warning if minikube ip is already in NO_PROXY
k = strings.ToUpper(k) // for http_proxy & https_proxy
if (k == "HTTP_PROXY" || k == "HTTPS_PROXY") && !ipExcluded && !warnedOnce {
out.WarningT("You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ for more details", out.V{"ip_address": ip})
out.WarningT("You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details", out.V{"ip_address": ip, "documentation_url": "https://minikube.sigs.k8s.io/docs/reference/networking/proxy/"})
warnedOnce = true
}
}
@ -958,18 +978,14 @@ func saveConfig(clusterCfg *cfg.Config) error {
}
func validateDriverVersion(vmDriver string) {
var (
driverExecutable string
driverDocumentation string
)
var driverExecutable string
driverDocumentation := fmt.Sprintf("%s%s#driver-installation", constants.DriverDocumentation, vmDriver)
switch vmDriver {
case constants.DriverKvm2:
driverExecutable = fmt.Sprintf("docker-machine-driver-%s", constants.DriverKvm2)
driverDocumentation = fmt.Sprintf("%s#%s", constants.DriverDocumentation, "kvm2-upgrade")
case constants.DriverHyperkit:
driverExecutable = fmt.Sprintf("docker-machine-driver-%s", constants.DriverHyperkit)
driverDocumentation = fmt.Sprintf("%s#%s", constants.DriverDocumentation, "hyperkit-upgrade")
default: // driver doesn't support version
return
}
@ -990,7 +1006,7 @@ func validateDriverVersion(vmDriver string) {
if len(v) == 0 && !viper.GetBool(force) {
exit.WithCodeT(
exit.Failure,
"Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}",
"The installed version of '{{.driver_executable}}' is obsolete. Upgrade: {{.documentation_url}}",
out.V{"driver_executable": driverExecutable, "documentation_url": driverDocumentation},
)
}
@ -1009,8 +1025,8 @@ func validateDriverVersion(vmDriver string) {
if vmDriverVersion.LT(minikubeVersion) {
out.WarningT(
"There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}",
out.V{"driver_executable": driverExecutable, "documentation_url": driverDocumentation},
"The installed version of '{{.driver_executable}}' ({{.driver_version}}) is no longer current. Upgrade: {{.documentation_url}}",
out.V{"driver_executable": driverExecutable, "driver_version": vmDriverVersion, "documentation_url": driverDocumentation},
)
}
}

View File

@ -36,7 +36,7 @@ oom_score = 0
max_container_log_line_size = 16384
[plugins.cri.containerd]
snapshotter = "overlayfs"
no_pivot = true
no_pivot = false
[plugins.cri.containerd.default_runtime]
runtime_type = "io.containerd.runtime.v1.linux"
runtime_engine = ""

View File

@ -13,7 +13,7 @@
# limitations under the License.
---
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-ingress-controller
@ -42,7 +42,7 @@ spec:
serviceAccountName: nginx-ingress
terminationGracePeriodSeconds: 60
containers:
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller{{.ExoticArch}}:0.25.0
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller{{.ExoticArch}}:0.25.1
name: nginx-ingress-controller
imagePullPolicy: IfNotPresent
readinessProbe:

View File

@ -1,4 +1,4 @@
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: Deployment
metadata:
name: metrics-server

View File

@ -1,4 +1,4 @@
apiVersion: extensions/v1beta1
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
@ -7,9 +7,14 @@ metadata:
name: registry-proxy
namespace: kube-system
spec:
selector:
matchLabels:
registry-proxy: "true"
kubernetes.io/minikube-addons: registry
template:
metadata:
labels:
registry-proxy: "true"
kubernetes.io/minikube-addons: registry
addonmanager.kubernetes.io/mode: Reconcile
spec:

View File

@ -15,6 +15,8 @@ metadata:
spec:
selector:
matchLabels:
glusterfs: pod
glusterfs-node: pod
k8s-app: storage-provisioner-gluster
template:
metadata:

View File

@ -86,7 +86,7 @@ data:
---
kind: Deployment
apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
namespace: storage-gluster
name: heketi
@ -100,6 +100,11 @@ metadata:
description: Defines how to deploy Heketi
spec:
replicas: 1
selector:
matchLabels:
glusterfs: heketi-pod
heketi: pod
k8s-app: storage-provisioner-gluster
template:
metadata:
namespace: storage-gluster

View File

@ -77,7 +77,7 @@ subjects:
name: glusterfile-provisioner
---
kind: Deployment
apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
namespace: storage-gluster
name: glusterfile-provisioner
@ -89,6 +89,10 @@ metadata:
description: Defines how to deploy the glusterfile provisioner pod.
spec:
replicas: 1
selector:
matchLabels:
glusterfs: file-provisioner-pod
glusterfile: provisioner-pod
strategy:
type: Recreate
template:

View File

@ -0,0 +1,13 @@
#!/bin/sh
mkdir /sysroot
# the value 90% borrowed from tcl via boot2docker
mount -t tmpfs -o size=90% tmpfs /sysroot
# copy from rootfs, to be able to do switch_root(8)
tar -C / --exclude=sysroot -cf - . | tar -C /sysroot/ -xf -
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /sysroot/dev
exec 0</sysroot/dev/console
exec 1>/sysroot/dev/console
exec 2>/sysroot/dev/console
exec /sbin/switch_root /sysroot /sbin/init "$@"

View File

@ -36,7 +36,7 @@ oom_score = 0
max_container_log_line_size = 16384
[plugins.cri.containerd]
snapshotter = "overlayfs"
no_pivot = true
no_pivot = false
[plugins.cri.containerd.default_runtime]
runtime_type = "io.containerd.runtime.v1.linux"
runtime_engine = ""

View File

@ -92,7 +92,7 @@ grpc_max_recv_msg_size = 16777216
default_runtime = "runc"
# If true, the runtime will not use pivot_root, but instead use MS_MOVE.
no_pivot = true
no_pivot = false
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/libexec/crio/conmon"

View File

@ -1,3 +0,0 @@
# BUILDAH_NOPIVOT=true disables pivot_root in Buildah, using MS_MOVE instead.
# (Buildah is used by Podman for building container images using a Dockerfile)
export BUILDAH_NOPIVOT=true

View File

@ -1,2 +0,0 @@
# Whether to use chroot instead of pivot_root in the runtime
no_pivot_root = true

View File

@ -29,8 +29,6 @@ endef
define PODMAN_INSTALL_TARGET_CMDS
$(INSTALL) -Dm755 $(@D)/bin/podman $(TARGET_DIR)/usr/bin/podman
$(INSTALL) -Dm644 $(BR2_EXTERNAL_MINIKUBE_PATH)/package/podman/libpod.conf $(TARGET_DIR)/etc/containers/libpod.conf
$(INSTALL) -Dm644 $(BR2_EXTERNAL_MINIKUBE_PATH)/package/podman/buildah.profile $(TARGET_DIR)/etc/profile.d/podman.sh
endef
$(eval $(generic-package))

11
go.mod
View File

@ -36,7 +36,14 @@ require (
github.com/intel-go/cpuid v0.0.0-20181003105527-1a4a6f06a1c6 // indirect
github.com/jimmidyson/go-download v0.0.0-20161028105827-7f9a90c8c95b
github.com/johanneswuerbach/nfsexports v0.0.0-20181204082207-1aa528dcb345
github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d // indirect
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect
github.com/juju/mutex v0.0.0-20180619145857-d21b13acf4bf
github.com/juju/retry v0.0.0-20180821225755-9058e192b216 // indirect
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 // indirect
github.com/juju/utils v0.0.0-20180820210520-bf9cc5bdd62d // indirect
github.com/juju/version v0.0.0-20180108022336-b64dbd566305 // indirect
github.com/libvirt/libvirt-go v3.4.0+incompatible
github.com/machine-drivers/docker-machine-driver-vmware v0.1.1
github.com/mattn/go-isatty v0.0.8
@ -67,6 +74,7 @@ require (
golang.org/x/text v0.3.2
gopkg.in/airbrake/gobrake.v2 v2.0.9 // indirect
gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 // indirect
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
k8s.io/api v0.0.0
k8s.io/apimachinery v0.0.0
k8s.io/client-go v0.0.0
@ -75,6 +83,7 @@ require (
)
replace (
git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v0.0.0-20190623232353-8c3b7d7679cc
k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v0.0.0-20190623232353-8c3b7d7679cc
k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v0.0.0-20190623232353-8c3b7d7679cc

23
go.sum
View File

@ -8,7 +8,7 @@ dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
github.com/Azure/azure-sdk-for-go v21.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
@ -179,6 +179,7 @@ github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4er
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
github.com/golang/mock v0.0.0-20160127222235-bd3c8e81be01/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@ -279,8 +280,22 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jteeuwen/go-bindata v0.0.0-20151023091102-a0ff2567cfb7/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b h1:FQ7+9fxhyp82ks9vAuyPzG0/vVbWwMwLJ+P6yJI5FN8=
github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b/go.mod h1:HMcgvsgd0Fjj4XXDkbjdmlbI505rUPBs6WBMYg2pXks=
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c h1:3UvYABOQRhJAApj9MdCN+Ydv841ETSoy6xLzdmmr/9A=
github.com/juju/clock v0.0.0-20190205081909-9c5c9712527c/go.mod h1:nD0vlnrUjcjJhqN5WuCWZyzfd5AHZAC9/ajvbSx69xA=
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d h1:hJXjZMxj0SWlMoQkzeZDLi2cmeiWKa7y1B8Rg+qaoEc=
github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q=
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI=
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U=
github.com/juju/mutex v0.0.0-20180619145857-d21b13acf4bf h1:2d3cilQly1OpAfZcn4QRuwDOdVoHsM4cDTkcKbmO760=
github.com/juju/mutex v0.0.0-20180619145857-d21b13acf4bf/go.mod h1:Y3oOzHH8CQ0Ppt0oCKJ2JFO81/EsWenH5AEqigLH+yY=
github.com/juju/retry v0.0.0-20180821225755-9058e192b216 h1:/eQL7EJQKFHByJe3DeE8Z36yqManj9UY5zppDoQi4FU=
github.com/juju/retry v0.0.0-20180821225755-9058e192b216/go.mod h1:OohPQGsr4pnxwD5YljhQ+TZnuVRYpa5irjugL1Yuif4=
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 h1:Pp8RxiF4rSoXP9SED26WCfNB28/dwTDpPXS8XMJR8rc=
github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA=
github.com/juju/utils v0.0.0-20180820210520-bf9cc5bdd62d h1:irPlN9z5VCe6BTsqVsxheCZH99OFSmqSVyTigW4mEoY=
github.com/juju/utils v0.0.0-20180820210520-bf9cc5bdd62d/go.mod h1:6/KLg8Wz/y2KVGWEpkK9vMNGkOnu4k/cqs8Z1fKjTOk=
github.com/juju/version v0.0.0-20180108022336-b64dbd566305 h1:lQxPJ1URr2fjsKnJRt/BxiIxjLt9IKGvS+0injMHbag=
github.com/juju/version v0.0.0-20180108022336-b64dbd566305/go.mod h1:kE8gK5X0CImdr7qpSKl3xB2PmpySSmfj7zVbkZFs81U=
github.com/kardianos/osext v0.0.0-20150410034420-8fef92e41e22/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
@ -616,6 +631,8 @@ gopkg.in/inf.v0 v0.9.0 h1:3zYtXIO92bvsdS3ggAdA8Gb4Azj0YU+TVY1uGYNFA8o=
gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=

View File

@ -1,33 +0,0 @@
:: Copyright 2019 The Kubernetes Authors All rights reserved.
::
:: 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.
:: Periodically cleanup and reboot if no Jenkins subprocesses are running.
@echo off
call :jenkins
echo waiting to see if any jobs are coming in...
timeout 30
call :jenkins
echo doing it
taskkill /IM putty.exe
taskkill /F /IM java.exe
powershell -Command "Stop-VM minikube"
powershell -Command "Delete-VM minikube"
rmdir /S /Q C:\Users\admin\.minikube
shutdown /r
:jenkins
tasklist | find /i /n "e2e-windows-amd64.exe">NUL
if %ERRORLEVEL% == 0 exit 1
exit /B 0

View File

@ -0,0 +1,27 @@
function Jenkins {
Get-Process e2e-windows-amd64 2>$NULL
if ($?) {
return $TRUE
}
return $FALSE
}
if (Jenkins) {
exit 0
}
echo "waiting to see if any jobs are coming in..."
timeout 30
if (Jenkins) {
exit 0
}
echo "doing it"
taskkill /IM putty.exe
taskkill /F /IM java.exe
Get-VM | Where-Object {$_.Name -ne "DockerDesktopVM"} | Foreach {
C:\var\jenkins\workspace\Hyper-V_Windows_integration\out\minikube-windows-amd64.exe delete -p $_.Name
Suspend-VM $_.Name
Stop-VM $_.Name -Force
Remove-VM $_.Name -Force
}
Remove-Item -path C:\Users\admin\.minikube -recurse -force
shutdown /r

View File

@ -0,0 +1,30 @@
function Jenkins {
Get-Process e2e-windows-amd64 2>$NULL
if ($?) {
return $TRUE
}
return $FALSE
}
if (Jenkins) {
exit 0
}
echo "waiting to see if any jobs are coming in..."
timeout 30
if (Jenkins) {
exit 0
}
echo "doing it"
taskkill /IM putty.exe
taskkill /F /IM java.exe
VBoxManage list vms | Foreach {
$m = $_.Substring(1, $_.LastIndexOf('"')-1)
VBoxManage controlvm $m poweroff
VBoxManage unregistervm $m --delete
}
Remove-Item -path C:\Users\jenkins\.minikube -recurse -force
shutdown /r

View File

@ -142,7 +142,7 @@ func WaitForRCToStabilize(c kubernetes.Interface, ns, name string, timeout time.
return err
}
// WaitForDeploymentToStabilize waits till the Deployment has a matching generation/replica count between spec and status. used by integrationt tests
// WaitForDeploymentToStabilize waits till the Deployment has a matching generation/replica count between spec and status. used by integration tests
func WaitForDeploymentToStabilize(c kubernetes.Interface, ns, name string, timeout time.Duration) error {
options := meta.ListOptions{FieldSelector: fields.Set{
"metadata.name": name,

View File

@ -23,7 +23,6 @@ import (
"io"
"os"
"path"
"path/filepath"
"github.com/golang/glog"
"github.com/pkg/errors"
@ -80,7 +79,7 @@ func NewMemoryAssetTarget(d []byte, targetPath, permissions string) *MemoryAsset
// NewFileAsset creates a new FileAsset
func NewFileAsset(src, targetDir, targetName, permissions string) (*FileAsset, error) {
glog.Infof("NewFileAsset: %s -> %s", src, filepath.Join(targetDir, targetName))
glog.Infof("NewFileAsset: %s -> %s", src, path.Join(targetDir, targetName))
f, err := os.Open(src)
if err != nil {
return nil, errors.Wrapf(err, "Error opening file asset: %s", src)

View File

@ -19,10 +19,13 @@ package kubeadm
import (
"bytes"
"crypto/tls"
"fmt"
"net"
"net/http"
"path/filepath"
// WARNING: Do not use path/filepath in this package unless you want bizarre Windows paths
"path"
"runtime"
"strings"
"time"
@ -95,7 +98,7 @@ var PodsByLayer = []pod{
}
// yamlConfigPath is the path to the kubeadm configuration
var yamlConfigPath = filepath.Join(constants.GuestEphemeralDir, "kubeadm.yaml")
var yamlConfigPath = path.Join(constants.GuestEphemeralDir, "kubeadm.yaml")
// SkipAdditionalPreflights are additional preflights we skip depending on the runtime in use.
var SkipAdditionalPreflights = map[string][]string{}
@ -200,7 +203,7 @@ func createFlagsFromExtraArgs(extraOptions config.ExtraOptionSlice) string {
// etcdDataDir is where etcd data is stored.
func etcdDataDir() string {
return filepath.Join(constants.GuestPersistentDir, "etcd")
return path.Join(constants.GuestPersistentDir, "etcd")
}
// createCompatSymlinks creates compatibility symlinks to transition running services to new directory structures
@ -538,7 +541,7 @@ func NewKubeletConfig(k8s config.KubernetesConfig, r cruntime.Manager) ([]byte,
}{
ExtraOptions: convertToFlags(extraOpts),
ContainerRuntime: k8s.ContainerRuntime,
KubeletPath: filepath.Join(binRoot(k8s.KubernetesVersion), "kubelet"),
KubeletPath: path.Join(binRoot(k8s.KubernetesVersion), "kubelet"),
}
if err := kubeletSystemdTemplate.Execute(&b, opts); err != nil {
return nil, err
@ -700,7 +703,7 @@ func generateConfig(k8s config.KubernetesConfig, r cruntime.Manager) ([]byte, er
// NewKubeletService returns a generated systemd unit file for the kubelet
func NewKubeletService(cfg config.KubernetesConfig) ([]byte, error) {
var b bytes.Buffer
opts := struct{ KubeletPath string }{KubeletPath: filepath.Join(binRoot(cfg.KubernetesVersion), "kubelet")}
opts := struct{ KubeletPath string }{KubeletPath: path.Join(binRoot(cfg.KubernetesVersion), "kubelet")}
if err := kubeletServiceTemplate.Execute(&b, opts); err != nil {
return nil, errors.Wrap(err, "template execute")
}
@ -725,7 +728,7 @@ func configFiles(cfg config.KubernetesConfig, kubeadm []byte, kubelet []byte, ku
// binDir returns the persistent path binaries are stored in
func binRoot(version string) string {
return filepath.Join(constants.GuestPersistentDir, "binaries", version)
return path.Join(constants.GuestPersistentDir, "binaries", version)
}
// invokeKubeadm returns the invocation command for Kubeadm
@ -744,7 +747,7 @@ func transferBinaries(cfg config.KubernetesConfig, c command.Runner) error {
return errors.Wrapf(err, "downloading %s", name)
}
dst := filepath.Join(binRoot(cfg.KubernetesVersion), name)
dst := path.Join(binRoot(cfg.KubernetesVersion), name)
if err := machine.CopyBinary(c, src, dst); err != nil {
return errors.Wrapf(err, "copybinary %s -> %s", src, dst)
}

View File

@ -84,7 +84,7 @@ Wants=containerd.service
[Service]
ExecStart=
ExecStart=/var/lib/minikube/binaries/v1.15.2/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --fail-swap-on=false --hostname-override=minikube --image-service-endpoint=unix:///run/containerd/containerd.sock --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m
ExecStart=/var/lib/minikube/binaries/v1.16.0-beta.1/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --fail-swap-on=false --hostname-override=minikube --image-service-endpoint=unix:///run/containerd/containerd.sock --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --runtime-request-timeout=15m
[Install]
`,
@ -103,7 +103,7 @@ Wants=docker.socket
[Service]
ExecStart=
ExecStart=/var/lib/minikube/binaries/v1.15.2/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --container-runtime=docker --fail-swap-on=false --hostname-override=minikube --kubeconfig=/etc/kubernetes/kubelet.conf --pod-infra-container-image=docker-proxy-image.io/google_containers/pause:3.1 --pod-manifest-path=/etc/kubernetes/manifests
ExecStart=/var/lib/minikube/binaries/v1.16.0-beta.1/kubelet --authorization-mode=Webhook --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --cgroup-driver=cgroupfs --client-ca-file=/var/lib/minikube/certs/ca.crt --cluster-dns=10.96.0.10 --cluster-domain=cluster.local --container-runtime=docker --fail-swap-on=false --hostname-override=minikube --kubeconfig=/etc/kubernetes/kubelet.conf --pod-infra-container-image=docker-proxy-image.io/google_containers/pause:3.1 --pod-manifest-path=/etc/kubernetes/manifests
[Install]
`,

View File

@ -19,7 +19,7 @@ package command
import (
"fmt"
"io"
"path/filepath"
"path"
"k8s.io/minikube/pkg/minikube/assets"
)
@ -54,5 +54,5 @@ type Runner interface {
}
func getDeleteFileCommand(f assets.CopyableFile) string {
return fmt.Sprintf("sudo rm %s", filepath.Join(f.GetTargetDir(), f.GetTargetName()))
return fmt.Sprintf("sudo rm %s", path.Join(f.GetTargetDir(), f.GetTargetName()))
}

View File

@ -21,6 +21,7 @@ import (
"io"
"os"
"os/exec"
"path"
"path/filepath"
"strconv"
@ -76,7 +77,7 @@ func (*ExecRunner) Copy(f assets.CopyableFile) error {
if err := os.MkdirAll(f.GetTargetDir(), os.ModePerm); err != nil {
return errors.Wrapf(err, "error making dirs for %s", f.GetTargetDir())
}
targetPath := filepath.Join(f.GetTargetDir(), f.GetTargetName())
targetPath := path.Join(f.GetTargetDir(), f.GetTargetName())
if _, err := os.Stat(targetPath); err == nil {
if err := os.Remove(targetPath); err != nil {
return errors.Wrapf(err, "error removing file %s", targetPath)

View File

@ -21,7 +21,6 @@ import (
"fmt"
"io"
"path"
"path/filepath"
"sync"
"github.com/golang/glog"
@ -167,7 +166,7 @@ func (s *SSHRunner) Copy(f assets.CopyableFile) error {
// StdinPipe is closed. But let's use errgroup to make it explicit.
var g errgroup.Group
var copied int64
dst := filepath.Join(path.Join(f.GetTargetDir(), f.GetTargetName()))
dst := path.Join(path.Join(f.GetTargetDir(), f.GetTargetName()))
glog.Infof("Transferring %d bytes to %s", f.GetLength(), dst)
g.Go(func() error {

View File

@ -110,7 +110,7 @@ func DeleteProfile(profile string, miniHome ...string) error {
// ListProfiles returns all valid and invalid (if any) minikube profiles
// invalidPs are the profiles that have a directory or config file but not usable
// invalidPs would be suggeted to be deleted
// invalidPs would be suggested to be deleted
func ListProfiles(miniHome ...string) (validPs []*Profile, inValidPs []*Profile, err error) {
pDirs, err := profileDirs(miniHome...)
if err != nil {

View File

@ -178,7 +178,7 @@ var DefaultISOURL = fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s.i
var DefaultISOSHAURL = DefaultISOURL + SHASuffix
// DefaultKubernetesVersion is the default kubernetes version
var DefaultKubernetesVersion = "v1.15.2"
var DefaultKubernetesVersion = "v1.16.0-beta.1"
// NewestKubernetesVersion is the newest Kubernetes version to test against
var NewestKubernetesVersion = "v1.16.0-beta.1"

View File

@ -36,7 +36,7 @@ import (
// rootCauseRe is a regular expression that matches known failure root causes
var rootCauseRe = regexp.MustCompile(`^error: |eviction manager: pods.* evicted|unknown flag: --|forbidden.*no providers available|eviction manager:.*evicted|tls: bad certificate|kubelet.*no API client|kubelet.*No api server|STDIN.*127.0.0.1:8080`)
// ignoreRe is a regular expression that matches spurious errors to not surface
// ignoreCauseRe is a regular expression that matches spurious errors to not surface
var ignoreCauseRe = regexp.MustCompile("error: no objects passed to apply")
// importantPods are a list of pods to retrieve logs for, in addition to the bootstrapper logs.
@ -48,6 +48,7 @@ var importantPods = []string{
"kube-addon-manager",
"kubernetes-dashboard",
"storage-provisioner",
"kube-controller-manager",
}
// lookbackwardsCount is how far back to look in a log for problems. This should be large enough to
@ -161,7 +162,10 @@ func logCommands(r cruntime.Manager, bs bootstrapper.Bootstrapper, length int, f
glog.Warningf("No container was found matching %q", pod)
continue
}
cmds[pod] = r.ContainerLogCmd(ids[0], length, follow)
for _, i := range ids {
key := fmt.Sprintf("%s [%s]", pod, i)
cmds[key] = r.ContainerLogCmd(i, length, follow)
}
}
cmds[r.Name()] = r.SystemLogCmd(length)
// Works across container runtimes with good formatting

View File

@ -20,7 +20,6 @@ import (
"crypto"
"os"
"path"
"path/filepath"
"runtime"
"github.com/golang/glog"
@ -93,7 +92,7 @@ func CacheBinary(binary, version, osName, archName string) (string, error) {
// CopyBinary copies a locally cached binary to the guest VM
func CopyBinary(cr command.Runner, src string, dest string) error {
f, err := assets.NewFileAsset(src, filepath.Dir(dest), filepath.Base(dest), "0755")
f, err := assets.NewFileAsset(src, path.Dir(dest), path.Base(dest), "0755")
if err != nil {
return errors.Wrap(err, "new file asset")
}

View File

@ -25,6 +25,7 @@ import (
"runtime"
"strings"
"sync"
"time"
"github.com/golang/glog"
"github.com/google/go-containerregistry/pkg/authn"
@ -44,7 +45,7 @@ import (
)
// loadRoot is where images should be loaded from within the guest VM
var loadRoot = filepath.Join(constants.GuestPersistentDir, "images")
var loadRoot = path.Join(constants.GuestPersistentDir, "images")
var getWindowsVolumeName = getWindowsVolumeNameCmd
@ -75,8 +76,10 @@ func CacheImages(images []string, cacheDir string) error {
dst := filepath.Join(cacheDir, image)
dst = sanitizeCacheDir(dst)
if err := CacheImage(image, dst); err != nil {
glog.Errorf("CacheImage %s -> %s failed: %v", image, dst, err)
return errors.Wrapf(err, "caching image %s", dst)
}
glog.Infof("CacheImage %s -> %s succeeded", image, dst)
return nil
})
}
@ -143,7 +146,9 @@ func CacheAndLoadImages(images []string) error {
func sanitizeCacheDir(image string) string {
if runtime.GOOS == "windows" && hasWindowsDriveLetter(image) {
// not sanitize Windows drive letter.
return image[:2] + strings.Replace(image[2:], ":", "_", -1)
s := image[:2] + strings.Replace(image[2:], ":", "_", -1)
glog.Infof("windows sanitize: %s -> %s", image, s)
return s
}
return strings.Replace(image, ":", "_", -1)
}
@ -286,8 +291,14 @@ func getDstPath(dst string) (string, error) {
// CacheImage caches an image
func CacheImage(image, dst string) error {
glog.Infof("Attempting to cache image: %s at %s\n", image, dst)
start := time.Now()
glog.Infof("CacheImage: %s -> %s", image, dst)
defer func() {
glog.Infof("CacheImage: %s -> %s completed in %s", image, dst, time.Since(start))
}()
if _, err := os.Stat(dst); err == nil {
glog.Infof("%s exists", dst)
return nil
}
@ -331,14 +342,26 @@ func CacheImage(image, dst string) error {
if err != nil {
return err
}
glog.Infof("%s exists", dst)
return nil
}
func retrieveImage(ref name.Reference) (v1.Image, error) {
glog.Infof("retrieving image: %+v", ref)
img, err := daemon.Image(ref)
if err == nil {
glog.Infof("found %s locally; caching", ref.Name())
return img, err
}
return remote.Image(ref, remote.WithAuthFromKeychain(authn.DefaultKeychain))
glog.Infof("daemon image for %+v: %v", img, err)
img, err = remote.Image(ref, remote.WithAuthFromKeychain(authn.DefaultKeychain))
if err == nil {
return img, err
}
glog.Warningf("failed authn download for %+v (trying anon): %+v", ref, err)
img, err = remote.Image(ref)
if err != nil {
glog.Warningf("failed anon download for %+v: %+v", ref, err)
}
return img, err
}

View File

@ -67,7 +67,7 @@ func MaybePrintUpdateText(url string, lastUpdatePath string) {
}
url := "https://github.com/kubernetes/minikube/releases/tag/v" + latestVersion.String()
out.ErrT(out.WarningType, `minikube {{.version}} is available! Download it: {{.url}}`, out.V{"version": latestVersion, "url": url})
out.T(out.Tip, "To disable this notice, run: 'minikube config set WantUpdateNotification false'")
out.ErrT(out.Tip, "To disable this notice, run: 'minikube config set WantUpdateNotification false'")
}
}

View File

@ -92,6 +92,13 @@ func (p *BuildrootProvisioner) GenerateDockerOptions(dockerPort int) (*provision
driverNameLabel := fmt.Sprintf("provider=%s", p.Driver.DriverName())
p.EngineOptions.Labels = append(p.EngineOptions.Labels, driverNameLabel)
noPivot := true
// Using pivot_root is not supported on fstype rootfs
if fstype, err := rootFileSystemType(p); err == nil {
log.Debugf("root file system type: %s", fstype)
noPivot = fstype == "rootfs"
}
engineConfigTmpl := `[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
@ -101,8 +108,15 @@ Requires= minikube-automount.service docker.socket
[Service]
Type=notify
`
if noPivot {
log.Warn("Using fundamentally insecure --no-pivot option")
engineConfigTmpl += `
# DOCKER_RAMDISK disables pivot_root in Docker, using MS_MOVE instead.
Environment=DOCKER_RAMDISK=yes
`
}
engineConfigTmpl += `
{{range .EngineOptions.Env}}Environment={{.}}
{{end}}
@ -160,6 +174,14 @@ WantedBy=multi-user.target
}, nil
}
func rootFileSystemType(p *BuildrootProvisioner) (string, error) {
fs, err := p.SSHCommand("df --output=fstype / | tail -n 1")
if err != nil {
return "", err
}
return strings.TrimSpace(fs), nil
}
// Package installs a package
func (p *BuildrootProvisioner) Package(name string, action pkgaction.PackageAction) error {
return nil

View File

@ -17,45 +17,67 @@ limitations under the License.
package lock
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strconv"
"strings"
"time"
"github.com/golang/glog"
"github.com/juju/fslock"
"github.com/juju/clock"
"github.com/juju/mutex"
"github.com/pkg/errors"
"k8s.io/minikube/pkg/util/retry"
)
// WriteWithLock decorates ioutil.WriteFile with a file lock and retry
func WriteFile(filename string, data []byte, perm os.FileMode) (err error) {
lock := fslock.New(filename)
// WriteFile decorates ioutil.WriteFile with a file lock and retry
func WriteFile(filename string, data []byte, perm os.FileMode) error {
spec := mutex.Spec{
Name: getMutexName(filename),
Clock: clock.WallClock,
Delay: 13 * time.Second,
}
glog.Infof("attempting to write to file %q with filemode %v", filename, perm)
getLock := func() error {
lockErr := lock.TryLock()
if lockErr != nil {
glog.Warningf("temporary error : %v", lockErr.Error())
return errors.Wrapf(lockErr, "failed to acquire lock for %s > ", filename)
}
return nil
}
defer func() { // release the lock
err = lock.Unlock()
if err != nil {
err = errors.Wrapf(err, "error releasing lock for file: %s", filename)
}
}()
err = retry.Expo(getLock, 500*time.Millisecond, 13*time.Second)
releaser, err := mutex.Acquire(spec)
if err != nil {
return errors.Wrapf(err, "error acquiring lock for %s", filename)
}
defer releaser.Release()
if err = ioutil.WriteFile(filename, data, perm); err != nil {
return errors.Wrapf(err, "error writing file %s", filename)
}
return err
}
func getMutexName(filename string) string {
// Make the mutex name the file name and its parent directory
dir, name := filepath.Split(filename)
// Replace underscores and periods with dashes, the only valid punctuation for mutex name
name = strings.ReplaceAll(name, ".", "-")
name = strings.ReplaceAll(name, "_", "-")
p := strings.ReplaceAll(filepath.Base(dir), ".", "-")
p = strings.ReplaceAll(p, "_", "-")
mutexName := fmt.Sprintf("%s-%s", p, strings.ReplaceAll(name, ".", "-"))
// Check if name starts with an int and prepend a string instead
if _, err := strconv.Atoi(mutexName[:1]); err == nil {
mutexName = "m" + mutexName
}
// There's an arbitrary hard max on mutex name at 40.
if len(mutexName) > 40 {
mutexName = mutexName[:40]
}
// Make sure name doesn't start or end with punctuation
mutexName = strings.TrimPrefix(mutexName, "-")
mutexName = strings.TrimSuffix(mutexName, "-")
return mutexName
}

View File

@ -0,0 +1,67 @@
/*
Copyright 2019 The Kubernetes Authors All rights reserved.
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.
*/
package lock
import "testing"
func TestGetMutexName(t *testing.T) {
var tests = []struct {
description string
path string
expected string
}{
{
description: "standard",
path: "/foo/bar",
expected: "foo-bar",
},
{
description: "deep directory",
path: "/foo/bar/baz/bat",
expected: "baz-bat",
},
{
description: "underscores",
path: "/foo_bar/baz",
expected: "foo-bar-baz",
},
{
description: "starts with number",
path: "/foo/2bar/baz",
expected: "m2bar-baz",
},
{
description: "starts with punctuation",
path: "/.foo/bar",
expected: "foo-bar",
},
{
description: "long filename",
path: "/very-very-very-very-very-very-very-very-long/bar",
expected: "very-very-very-very-very-very-very-very",
},
}
for _, tc := range tests {
t.Run(tc.description, func(t *testing.T) {
got := getMutexName(tc.path)
if got != tc.expected {
t.Errorf("Unexpected mutex name for path %s. got: %s, expected: %s", tc.path, got, tc.expected)
}
})
}
}

View File

@ -24,7 +24,7 @@ import (
const defaultMaxRetries = 113
// Expo is expontential backoff retry.
// Expo is exponential backoff retry.
// initInterval is the initial waiting time to start with.
// maxTime is the max time allowed to spend on the all the retries.
// maxRetries is the optional max number of retries allowed with default of 13.

View File

@ -30,6 +30,8 @@ cd minikube
make
```
Note: On Windows, this will only work in Git Bash or other terminals that support bash commands.
## Compiling minikube using Docker
To cross-compile to/from different operating systems:

View File

@ -56,7 +56,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 then what Kubernetes expects. To overwrite this, run minikube with the following parameters: `sudo -E minikube start --vm-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: `sudo -E minikube start --vm-driver=none --kubernetes-version v1.11.8 --extra-config kubeadm.ignore-preflight-errors=SystemVerification`
* [Full list of open 'none' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fnone-driver)

View File

@ -30,7 +30,6 @@ curl -Lo kubectl \
&& sudo install kubectl /usr/local/bin/
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
export KUBECONFIG=$HOME/.kube/config
@ -40,4 +39,3 @@ touch $KUBECONFIG
sudo -E minikube start --vm-driver=none
```

View File

@ -15,10 +15,10 @@ description: >
## Using the KVM2 driver
When using NVIDIA GPUs with the kvm2 vm-driver. We passthrough spare GPUs on the
When using NVIDIA GPUs with the kvm2 vm-driver, we passthrough spare GPUs on the
host to the minikube VM. Doing so has a few prerequisites:
- You must install the [kvm2 driver](drivers.md#kvm2-driver). If you already had
- You must install the [kvm2 driver](/docs/start/linux/#hypervisor-setup). If you already had
this installed make sure that you fetch the latest
`docker-machine-driver-kvm2` binary that has GPU support.
@ -44,7 +44,7 @@ host to the minikube VM. Doing so has a few prerequisites:
- Once you reboot the system after doing the above, you should be ready to use
GPUs with kvm2. Run the following command to start minikube:
```shell
minikube start --vm-driver kvm2 --gpu
minikube start --vm-driver kvm2 --kvm-gpu
```
This command will check if all the above conditions are satisfied and

View File

@ -206,10 +206,7 @@ func testRegistry(t *testing.T) {
if err := kapi.WaitForPodsWithLabelRunning(client, "kube-system", rs); err != nil {
t.Fatalf("waiting for registry pods: %v", err)
}
ps, err := labels.Parse("kubernetes.io/minikube-addons=registry,actual-registry!=true")
if err != nil {
t.Fatalf("Unable to parse selector: %v", err)
}
ps := labels.SelectorFromSet(labels.Set(map[string]string{"registry-proxy": "true"}))
if err := kapi.WaitForPodsWithLabelRunning(client, "kube-system", ps); err != nil {
t.Fatalf("waiting for registry-proxy pods: %v", err)
}

View File

@ -22,6 +22,7 @@ import (
"context"
"fmt"
"os/exec"
"path"
"path/filepath"
"regexp"
"strings"
@ -50,7 +51,7 @@ type MinikubeRunner struct {
// Remove removes a file
func (m *MinikubeRunner) Remove(f assets.CopyableFile) error {
_, err := m.SSH(fmt.Sprintf("rm -rf %s", filepath.Join(f.GetTargetDir(), f.GetTargetName())))
_, err := m.SSH(fmt.Sprintf("rm -rf %s", path.Join(f.GetTargetDir(), f.GetTargetName())))
return err
}

View File

@ -2,10 +2,10 @@
"\n\tOutputs minikube shell completion for the given shell (bash or zsh)\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\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\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": "",
"\"{{.minikube_addon}}\" was successfully disabled": "",
"\"{{.name}}\" cluster does not exist": "",
"\"{{.name}}\" profile does not exist": "",
"\"{{.profile_name}}\" VM does not exist, nothing to stop": "",
"\"{{.profile_name}}\" host does not exist, unable to show an IP": "",
"\"{{.profile_name}}\" profile does not exist": "",
"\"{{.profile_name}}\" stopped.": "",
"\"{{.profile_name}}\" stopped.": "\"{{.profile_name}}\" est arrêté.",
"'none' driver does not support 'minikube docker-env' command": "",
"'none' driver does not support 'minikube mount' command": "",
"'none' driver does not support 'minikube ssh' command": "",
@ -25,7 +25,7 @@
"Aliases": "",
"Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to \\\"auto\\\" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers": "",
"Alternatively, you may delete the existing VM using `minikube delete -p {{.profile_name}}`": "",
"Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "",
"Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "",
"Amount of time to wait for a service in seconds": "",
"Amount of time to wait for service in seconds": "",
"Available Commands": "",
@ -36,33 +36,36 @@
"Configuration and Management Commands:": "",
"Configure an external network switch following the official documentation, then add `--hyperv-virtual-switch=\u003cswitch-name\u003e` to `minikube start`": "",
"Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list ": "",
"Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "Configurant l'environment pour Kubernetes {{.k8sVersion}} sur {{.runtime}} {{.runtimeVersion}}",
"Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "Configuration de l'environment pour Kubernetes {{.k8sVersion}} sur {{.runtime}} {{.runtimeVersion}}",
"Configuring local host environment ...": "",
"Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn": "",
"Creating %s VM (CPUs=%d, Memory=%dMB, Disk=%dMB) ...": "Créant un VM %s (CPUs=%d, Mémoire=%dMB, Disque=%dMB)",
"Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "",
"Created a new profile : {{.profile_name}}": "",
"Creating %s VM (CPUs=%d, Memory=%dMB, Disk=%dMB) ...": "Création d'une VM %s (CPUs=%d, Mémoire=%dMB, Disque=%dMB)...",
"Creating a new profile failed": "",
"Creating mount {{.name}} ...": "",
"Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "",
"Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "Création d'une VM {{.driver_name}} (CPUs={{.number_of_cpus}}, Mémoire={{.memory_size}}MB, Disque={{.disk_size}}MB)...",
"Default group id used for the mount": "",
"Default user id used for the mount": "",
"Delete an image from the local cache.": "",
"Deletes a local kubernetes cluster": "",
"Deletes a local kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "",
"Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "",
"Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "Suppression de \"{{.profile_name}}\" sur {{.driver_name}}...",
"Disable Hyper-V when you want to run VirtualBox to boot the VM": "",
"Disable checking for the availability of hardware virtualization before the vm is started (virtualbox)": "",
"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": "",
"Disable real-time anti-virus software, reboot, and reinstall VirtualBox if the problem continues.": "",
"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)": "",
"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": "",
"Display the kubernetes addons URL in the CLI instead of opening it in the default browser": "",
"Display the kubernetes service URL in the CLI instead of opening it in the default browser": "",
"Display values currently set in the minikube config file": "",
"Display values currently set in the minikube config file.": "",
"Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "",
"Docs have been saved at - {{.path}}": "",
"Documentation: {{.url}}": "",
"Done! kubectl is now configured to use \"{{.name}}\"": "Fini! kubectl est maintenant configuré pour utiliser \"{{.name}}\".",
"Done! kubectl is now configured to use \"{{.name}}\"": "Terminé! kubectl est maintenant configuré pour utiliser \"{{.name}}\".",
"Download complete!": "",
"Downloading VM boot image ...": "",
"Downloading {{.name}} {{.version}}": "",
@ -70,9 +73,9 @@
"ERROR creating `registry-creds-ecr` secret: {{.error}}": "",
"ERROR creating `registry-creds-gcr` secret: {{.error}}": "",
"Enable experimental NVIDIA GPU support in minikube": "",
"Enable host resolver for NAT DNS requests (virtualbox)": "",
"Enable proxy for NAT DNS requests (virtualbox)": "",
"Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\\"": "",
"Enable host resolver for NAT DNS requests (virtualbox driver only)": "",
"Enable proxy for NAT DNS requests (virtualbox driver only)": "",
"Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\\".": "",
"Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "",
"Enabling dashboard ...": "",
"Environment variables to pass to the Docker daemon. (format: key=value)": "",
@ -105,8 +108,9 @@
"Error loading api": "",
"Error loading profile config": "",
"Error loading profile config: {{.error}}": "",
"Error loading profile {{.name}}: {{.error}}": "",
"Error opening service": "",
"Error parsing minukube version: {{.error}}": "",
"Error parsing minikube version: {{.error}}": "",
"Error parsing vmDriver version: {{.error}}": "",
"Error reading {{.path}}: {{.error}}": "",
"Error restarting cluster": "",
@ -116,17 +120,18 @@
"Error unsetting shell variables": "",
"Error while setting kubectl current context : {{.error}}": "",
"Error writing mount pid": "",
"Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "",
"Error: [{{.id}}] {{.error}}": "",
"Examples": "",
"Exiting": "",
"Failed runtime": "",
"Failed to cache ISO": "",
"Failed to cache and load images": "",
"Failed to cache binaries": "",
"Failed to cache images": "",
"Failed to change permissions for {{.minikube_dir_path}}: {{.error}}": "",
"Failed to check if machine exists": "",
"Failed to check main repository and mirrors for images for images": "",
"Failed to chown {{.minikube_dir_path}}: {{.error}}": "",
"Failed to delete cluster": "",
"Failed to delete cluster: {{.error}}": "",
"Failed to delete images": "",
"Failed to delete images from config": "",
@ -155,6 +160,7 @@
"For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "",
"For more information, see:": "",
"Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect": "",
"Force minikube to perform possibly dangerous operations": "",
"Found network options:": "",
"Found {{.number}} invalid profile(s) ! ": "",
"Gets the kubernetes URL(s) for the specified service in your local cluster": "",
@ -170,7 +176,7 @@
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "",
"Have you set up libvirt correctly?": "",
"Hide the hypervisor signature from the guest in minikube": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"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 --vm-driver=none.": "",
"If true, only download and cache files for later use - don't install or start anything.": "",
@ -185,18 +191,17 @@
"Invalid size passed in argument: {{.error}}": "",
"IsEnabled failed": "",
"Kill the mount process spawned by minikube start": "",
"Kubernetes downgrade is not supported, will continue to use {{.version}}": "",
"Launching Kubernetes ... ": "Lançant Kubernetes ...",
"Launching Kubernetes ... ": "Lancement de Kubernetes...",
"Launching proxy ...": "",
"List all available images from the local cache.": "",
"List of guest VSock ports that should be exposed as sockets on the host (Only supported on with hyperkit now).": "",
"List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "",
"Lists all available minikube addons as well as their current statuses (enabled/disabled)": "",
"Lists all minikube profiles.": "",
"Lists all valid minikube profiles and detects all possible invalid profiles.": "",
"Lists the URLs for the services in your local cluster": "",
"Local folders to share with Guest via NFS mounts (Only supported on with hyperkit now)": "",
"Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock.": "",
"Location of the minikube iso": "",
"Local folders to share with Guest via NFS mounts (hyperkit driver only)": "",
"Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "",
"Location of the minikube iso.": "",
"Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'": "",
"Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "",
"Message Size: {{.size}}": "",
@ -211,9 +216,9 @@
"NOTE: This process must stay alive for the mount to be accessible ...": "",
"Networking and Connectivity Commands:": "",
"No minikube profile was found. You can create one using `minikube start`.": "",
"None of known repositories in your location is accessible. Use {{.image_repository_name}} as fallback.": "",
"None of known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "",
"Number of CPUs allocated to the minikube VM": "",
"None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "",
"None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "",
"Number of CPUs allocated to the minikube VM.": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"Open the addons URL with https instead of http": "",
@ -225,24 +230,23 @@
"Outputs minikube shell completion for the given shell (bash or zsh)": "",
"Permissions: {{.octalMode}} ({{.writtenMode}})": "",
"Please check your BIOS, and ensure that you are running without HyperV or other nested virtualization that may interfere": "",
"Please don't run minikube as root or with 'sudo' privileges. It isn't necessary with {{.driver}} driver.": "",
"Please enter a value:": "",
"Please install the minikube hyperkit VM driver, or select an alternative --vm-driver": "",
"Please install the minikube kvm2 VM driver, or select an alternative --vm-driver": "",
"Please make sure the service you are looking for is deployed or is in the correct namespace.": "",
"Please run with sudo. the vm-driver \"{{.driver_name}}\" requires sudo.": "",
"Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "",
"Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "",
"Populates the specified folder with documentation in markdown about minikube": "",
"Powering off \"{{.profile_name}}\" via SSH ...": "",
"Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...": "",
"Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...": "Préparation de Kubernetes {{.k8sVersion}} sur {{.runtime}} {{.runtimeVersion}}...",
"Print current and latest version number": "",
"Print the version of minikube": "",
"Print the version of minikube.": "",
"Problems detected in {{.entry}}:": "",
"Problems detected in {{.name}}:": "",
"Profile gets or sets the current minikube profile": "",
"Provide VM UUID to restore MAC address (only supported with Hyperkit driver).": "",
"Pulling images ...": "Extrayant les images ... ",
"Provide VM UUID to restore MAC address (hyperkit driver only)": "",
"Pulling images ...": "Extraction des images... ",
"Re-run 'minikube start' with --alsologtostderr -v=8 to see the VM driver error message": "",
"Reboot to complete VirtualBox installation, and verify that VirtualBox is not blocked by your system": "",
"Rebuild libvirt with virt-network support": "",
@ -251,6 +255,7 @@
"Reinstall VirtualBox and verify that it is not blocked: System Preferences -\u003e Security \u0026 Privacy -\u003e General -\u003e Some system software was blocked from loading": "",
"Related issues:": "",
"Relaunching Kubernetes using {{.bootstrapper}} ... ": "",
"Removing {{.directory}} ...": "",
"Requested disk size {{.requested_size}} is less than minimum of {{.minimum_size}}": "",
"Requested memory allocation ({{.memory}}MB) is less than the default memory allocation of {{.default_memorysize}}MB. Beware that minikube might not work correctly or crash unexpectedly.": "",
"Requested memory allocation {{.requested_size}} is less than the minimum allowed of {{.minimum_size}}": "",
@ -275,11 +280,11 @@
"Setting profile failed": "",
"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": "",
"Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "",
"Sorry that minikube crashed. If this was unexpected, we would love to hear from you:": "",
"Sorry, completion support is not yet implemented for {{.name}}": "",
"Sorry, the kubeadm.{{.parameter_name}} parameter is currently not supported by --extra-config": "",
"Sorry, url provided with --registry-mirror flag is invalid {{.url}}": "",
"Sorry, the url provided with the --registry-mirror flag is invalid: {{.url}}": "",
"Specify --kubernetes-version in v\u003cmajor\u003e.\u003cminor.\u003cbuild\u003e form. example: 'v1.1.14'": "",
"Specify an alternate --host-only-cidr value, such as 172.16.0.1/24": "",
"Specify arbitrary flags to pass to the Docker daemon. (format: key=value)": "",
@ -287,58 +292,66 @@
"Specify the ip that the mount should be setup on": "",
"Specify the mount filesystem type (supported types: 9p)": "",
"Starting existing {{.driver_name}} VM for \"{{.profile_name}}\" ...": "",
"Starts a local kubernetes cluster": "Démarre un cluster Kubernetes",
"Stopping \"{{.profile_name}}\" in {{.driver_name}} ...": "",
"Starts a local kubernetes cluster": "Démarrage d'un cluster Kubernetes",
"Stopping \"{{.profile_name}}\" in {{.driver_name}} ...": "Arrêt de \"{{.profile_name}}\" sur {{.driver_name}}...",
"Stops a local kubernetes cluster running in Virtualbox. This command stops the VM\nitself, leaving all files intact. The cluster can be started again with the \"start\" command.": "",
"Stops a running local kubernetes cluster": "",
"Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "",
"Suggestion: {{.advice}}": "",
"Target directory {{.path}} must be an absolute path": "",
"The \"{{.cluster_name}}\" cluster has been deleted.": "",
"The \"{{.cluster_name}}\" cluster has been deleted.": "Le cluster \"{{.cluster_name}}\" a été supprimé.",
"The \"{{.driver_name}}\" driver requires root privileges. Please run minikube using 'sudo minikube --vm-driver={{.driver_name}}'.": "",
"The \"{{.name}}\" cluster has been deleted.": "",
"The 'none' driver provides limited isolation and may reduce system security and reliability.": "",
"The CIDR to be used for service cluster IPs.": "",
"The CIDR to be used for the minikube VM (only supported with Virtualbox driver)": "",
"The KVM QEMU connection URI. (works only with kvm2 driver on linux)": "",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "",
"The KVM QEMU connection URI. (kvm2 driver only)": "",
"The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "",
"The KVM network name. (only supported with KVM driver)": "",
"The KVM network name. (kvm2 driver only)": "",
"The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "",
"The apiserver listening port": "",
"The apiserver name which is used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "",
"The argument to pass the minikube mount command on start": "",
"The argument to pass the minikube mount command on start.": "",
"The cluster dns domain name used in the kubernetes cluster": "",
"The container runtime to be used (docker, crio, containerd)": "",
"The cri socket path to be used": "",
"The container runtime to be used (docker, crio, containerd).": "",
"The cri socket path to be used.": "",
"The docker host is currently not running": "",
"The docker service is currently not active": "",
"The driver '{{.driver}}' is not supported on {{.os}}": "",
"The hyperv virtual switch name. Defaults to first found. (only supported with HyperV driver)": "",
"The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "",
"The initial time interval for each check that wait performs in seconds": "",
"The kubernetes version that the minikube VM will use (ex: v1.2.3)": "",
"The minikube VM is offline. Please run 'minikube start' to start it again.": "",
"The name of the network plugin": "",
"The name of the network plugin.": "",
"The number of bytes to use for 9p packet payload": "",
"The path on the file system where the docs in markdown need to be saved": "",
"The service namespace": "",
"The services namespace": "",
"The time interval for each check that wait performs in seconds": "",
"The value passed to --format is invalid": "",
"The value passed to --format is invalid: {{.error}}": "",
"The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "",
"The {{.driver_name}} driver should not be used with root privileges.": "",
"There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "",
"These changes will take effect upon a minikube delete and then a minikube start": "",
"This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "",
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube": "",
"This will start the mount daemon and automatically mount files into minikube.": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "",
"Tip: Use 'minikube start -p \u003cname\u003e' to create a new cluster, or 'minikube delete' to delete this one.": "",
"To connect to this cluster, use: kubectl --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "",
"To disable this notice, run: 'minikube config set WantUpdateNotification false'": "",
"To start minikube with HyperV Powershell must be in your PATH`": "",
"To switch drivers, you may create a new VM using `minikube start -p \u003cname\u003e --vm-driver={{.driver_name}}`": "",
"To use kubectl or minikube commands as your own user, you may": "",
"To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "",
"Troubleshooting Commands:": "",
"Unable to bind flags": "",
"Unable to enable dashboard": "",
"Unable to fetch latest version info": "",
"Unable to generate docs": "",
"Unable to generate the documentation. Please ensure that the path specified is a directory, exists \u0026 you have permission to write to it.": "",
"Unable to get VM IP address": "",
"Unable to get bootstrapper: {{.error}}": "",
"Unable to get runtime": "",
@ -348,6 +361,7 @@
"Unable to load config: {{.error}}": "",
"Unable to parse \"{{.kubernetes_version}}\": {{.error}}": "",
"Unable to pull images, which may be OK: {{.error}}": "",
"Unable to remove machine directory: %v": "",
"Unable to start VM": "",
"Unable to stop VM": "",
"Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "",
@ -358,6 +372,7 @@
"Upgrading from Kubernetes {{.old}} to {{.new}}": "",
"Usage": "Usage",
"Usage: minikube completion SHELL": "",
"Usage: minikube delete": "",
"Use \"{{.CommandPath}} [command] --help\" for more information about a command.": "",
"User ID: {{.userID}}": "",
"Userspace file server is shutdown": "",
@ -368,20 +383,22 @@
"Verify the IP address of the running cluster in kubeconfig.": "",
"Verifying dashboard health ...": "",
"Verifying proxy health ...": "",
"Verifying:": "Vérifiant:",
"Verifying:": "Vérification :",
"Version: {{.version}}": "",
"Wait failed": "",
"Wait failed: {{.error}}": "",
"Wait until Kubernetes core services are healthy before exiting": "",
"Waiting for SSH access ...": "Attendant l'accès SSH ...",
"Wait until Kubernetes core services are healthy before exiting.": "",
"Waiting for SSH access ...": "En attente de l'accès SSH...",
"Waiting for the host to be provisioned ...": "",
"Waiting for:": "",
"Where to root the NFS Shares (defaults to /nfsshares, only supported with hyperkit now)": "",
"You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ for more details": "",
"Waiting for:": "En attente de :",
"Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "",
"You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "",
"You can delete them using the following command(s): ": "",
"You may need to manually remove the \"{{.name}}\" VM from your hypervisor": "",
"You must specify a service name": "",
"Your host does not support KVM virtualization. Ensure that qemu-kvm is installed, and run 'virt-host-validate' to debug the problem": "",
"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 vm is not running, try minikube start.": "",
"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": "",
"addon list failed": "",
@ -402,10 +419,12 @@
"error parsing the input ip address for mount": "",
"error starting tunnel": "",
"failed to open browser: {{.error}}": "",
"if true, will embed the certs in kubeconfig.": "",
"kubectl and minikube configuration will be stored in {{.home_folder}}": "",
"kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "",
"kubectl proxy": "",
"logdir set failed": "",
"max time to wait per Kubernetes core services to be healthy.": "",
"minikube is not running, so the service cannot be accessed": "",
"minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "",
"minikube profile was successfully set to {{.profile_name}}": "",
@ -413,7 +432,6 @@
"minikube {{.version}} on {{.os}} ({{.arch}})": "minikube {{.version}} sur {{.os}} ({{.arch}})",
"mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "",
"mount failed": "",
"need to relocate them. For example, to overwrite your own settings:": "",
"profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "",
"service {{.namespace_name}}/{{.service_name}} has no node port": "",
"stat failed": "",
@ -434,7 +452,6 @@
"usage: minikube addons open ADDON_NAME": "",
"usage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "",
"usage: minikube config unset PROPERTY_NAME": "",
"usage: minikube delete": "",
"usage: minikube profile [MINIKUBE_PROFILE_NAME]": "",
"zsh completion failed": "",
"{{.addonName}} was successfully enabled": "",
@ -444,7 +461,7 @@
"{{.name}} cluster does not exist": "",
"{{.name}} has no available configuration options": "",
"{{.name}} was successfully configured": "",
"{{.prefix}}minikube {{.version}} on {{.platform}}": "",
"{{.prefix}}minikube {{.version}} on {{.platform}}": "{{.prefix}}minikube {{.version}} sur {{.platform}}",
"{{.type}} is not yet a supported filesystem. We will try anyways!": "",
"{{.url}} is not accessible: {{.error}}": ""
}

View File

@ -2,9 +2,9 @@
"\n\tOutputs minikube shell completion for the given shell (bash or zsh)\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\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\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": "",
"\"{{.minikube_addon}}\" was successfully disabled": "",
"\"{{.name}}\" cluster does not exist": "",
"\"{{.name}}\" profile does not exist": "",
"\"{{.profile_name}}\" VM does not exist, nothing to stop": "",
"\"{{.profile_name}}\" host does not exist, unable to show an IP": "",
"\"{{.profile_name}}\" profile does not exist": "",
"\"{{.profile_name}}\" stopped.": "",
"'none' driver does not support 'minikube docker-env' command": "",
"'none' driver does not support 'minikube mount' command": "",
@ -25,7 +25,7 @@
"Aliases": "",
"Alternative image repository to pull docker images from. This can be used when you have limited access to gcr.io. Set it to \\\"auto\\\" to let minikube decide one for you. For Chinese mainland users, you may use local gcr.io mirrors such as registry.cn-hangzhou.aliyuncs.com/google_containers": "",
"Alternatively, you may delete the existing VM using `minikube delete -p {{.profile_name}}`": "",
"Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g)": "",
"Amount of RAM allocated to the minikube VM (format: \u003cnumber\u003e[\u003cunit\u003e], where unit = b, k, m or g).": "",
"Amount of time to wait for a service in seconds": "",
"Amount of time to wait for service in seconds": "",
"Available Commands": "",
@ -38,8 +38,10 @@
"Configures the addon w/ADDON_NAME within minikube (example: minikube addons configure registry-creds). For a list of available addons use: minikube addons list ": "",
"Configuring environment for Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}}": "开始为Kubernetes {{.k8sVersion}}{{.runtime}} {{.runtimeVersion}} 配置环境变量",
"Configuring local host environment ...": "",
"Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn": "",
"Country code of the image mirror to be used. Leave empty to use the global one. For Chinese mainland users, set it to cn.": "",
"Created a new profile : {{.profile_name}}": "",
"Creating %s VM (CPUs=%d, Memory=%dMB, Disk=%dMB) ...": "正在创建%s虚拟机CPU=%d内存=%dMB磁盘=%dMB...",
"Creating a new profile failed": "",
"Creating mount {{.name}} ...": "",
"Creating {{.driver_name}} VM (CPUs={{.number_of_cpus}}, Memory={{.memory_size}}MB, Disk={{.disk_size}}MB) ...": "",
"Default group id used for the mount": "",
@ -49,18 +51,19 @@
"Deletes a local kubernetes cluster. This command deletes the VM, and removes all\nassociated files.": "",
"Deleting \"{{.profile_name}}\" in {{.driver_name}} ...": "",
"Disable Hyper-V when you want to run VirtualBox to boot the VM": "",
"Disable checking for the availability of hardware virtualization before the vm is started (virtualbox)": "",
"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": "",
"Disable real-time anti-virus software, reboot, and reinstall VirtualBox if the problem continues.": "",
"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)": "",
"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": "",
"Display the kubernetes addons URL in the CLI instead of opening it in the default browser": "",
"Display the kubernetes service URL in the CLI instead of opening it in the default browser": "",
"Display values currently set in the minikube config file": "",
"Display values currently set in the minikube config file.": "",
"Docker inside the VM is unavailable. Try running 'minikube delete' to reset the VM.": "",
"Docs have been saved at - {{.path}}": "",
"Documentation: {{.url}}": "",
"Done! kubectl is now configured to use \"{{.name}}\"": "",
"Done! kubectl is now configured to use {{.name}}": "完成kubectl已经配置至{{.name}}",
@ -71,9 +74,9 @@
"ERROR creating `registry-creds-ecr` secret: {{.error}}": "",
"ERROR creating `registry-creds-gcr` secret: {{.error}}": "",
"Enable experimental NVIDIA GPU support in minikube": "",
"Enable host resolver for NAT DNS requests (virtualbox)": "",
"Enable proxy for NAT DNS requests (virtualbox)": "",
"Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\\"": "",
"Enable host resolver for NAT DNS requests (virtualbox driver only)": "",
"Enable proxy for NAT DNS requests (virtualbox driver only)": "",
"Enable the default CNI plugin (/etc/cni/net.d/k8s.conf). Used in conjunction with \\\"--network-plugin=cni\\\".": "",
"Enables the addon w/ADDON_NAME within minikube (example: minikube addons enable dashboard). For a list of available addons use: minikube addons list ": "",
"Enabling dashboard ...": "",
"Environment variables to pass to the Docker daemon. (format: key=value)": "",
@ -106,8 +109,9 @@
"Error loading api": "",
"Error loading profile config": "",
"Error loading profile config: {{.error}}": "",
"Error loading profile {{.name}}: {{.error}}": "",
"Error opening service": "",
"Error parsing minukube version: {{.error}}": "",
"Error parsing minikube version: {{.error}}": "",
"Error parsing vmDriver version: {{.error}}": "",
"Error reading {{.path}}: {{.error}}": "",
"Error restarting cluster": "",
@ -117,17 +121,18 @@
"Error unsetting shell variables": "",
"Error while setting kubectl current context : {{.error}}": "",
"Error writing mount pid": "",
"Error: You have selected Kubernetes v{{.new}}, but the existing cluster for your profile is running Kubernetes v{{.old}}. Non-destructive downgrades are not supported, but you can proceed by performing one of the following options:\n\n* Recreate the cluster using Kubernetes v{{.new}}: Run \"minikube delete {{.profile}}\", then \"minikube start {{.profile}} --kubernetes-version={{.new}}\"\n* Create a second cluster with Kubernetes v{{.new}}: Run \"minikube start -p \u003cnew name\u003e --kubernetes-version={{.new}}\"\n* Reuse the existing cluster with Kubernetes v{{.old}} or newer: Run \"minikube start {{.profile}} --kubernetes-version={{.old}}\"": "",
"Error: [{{.id}}] {{.error}}": "",
"Examples": "",
"Exiting": "",
"Failed runtime": "",
"Failed to cache ISO": "",
"Failed to cache and load images": "",
"Failed to cache binaries": "",
"Failed to cache images": "",
"Failed to change permissions for {{.minikube_dir_path}}: {{.error}}": "",
"Failed to check if machine exists": "",
"Failed to check main repository and mirrors for images for images": "",
"Failed to chown {{.minikube_dir_path}}: {{.error}}": "",
"Failed to delete cluster": "",
"Failed to delete cluster: {{.error}}": "",
"Failed to delete images": "",
"Failed to delete images from config": "",
@ -156,6 +161,7 @@
"For best results, install kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "",
"For more information, see:": "",
"Force environment to be configured for a specified shell: [fish, cmd, powershell, tcsh, bash, zsh], default is auto-detect": "",
"Force minikube to perform possibly dangerous operations": "",
"Found network options:": "",
"Found {{.number}} invalid profile(s) ! ": "",
"Gets the kubernetes URL(s) for the specified service in your local cluster": "",
@ -171,7 +177,7 @@
"Go template format string for the status output. The format for Go templates can be found here: https://golang.org/pkg/text/template/\nFor the list accessible variables for the template, see the struct values here: https://godoc.org/k8s.io/minikube/cmd/minikube/cmd#Status": "",
"Group ID: {{.groupID}}": "",
"Have you set up libvirt correctly?": "",
"Hide the hypervisor signature from the guest in minikube": "",
"Hide the hypervisor signature from the guest in minikube (kvm2 driver only)": "",
"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 --vm-driver=none.": "",
"If true, only download and cache files for later use - don't install or start anything.": "",
@ -186,18 +192,17 @@
"Invalid size passed in argument: {{.error}}": "",
"IsEnabled failed": "",
"Kill the mount process spawned by minikube start": "",
"Kubernetes downgrade is not supported, will continue to use {{.version}}": "",
"Launching Kubernetes ... ": "正在启动 Kubernetes ... ",
"Launching proxy ...": "",
"List all available images from the local cache.": "",
"List of guest VSock ports that should be exposed as sockets on the host (Only supported on with hyperkit now).": "",
"List of guest VSock ports that should be exposed as sockets on the host (hyperkit driver only)": "",
"Lists all available minikube addons as well as their current statuses (enabled/disabled)": "",
"Lists all minikube profiles.": "",
"Lists all valid minikube profiles and detects all possible invalid profiles.": "",
"Lists the URLs for the services in your local cluster": "",
"Local folders to share with Guest via NFS mounts (Only supported on with hyperkit now)": "",
"Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock.": "",
"Location of the minikube iso": "",
"Local folders to share with Guest via NFS mounts (hyperkit driver only)": "",
"Location of the VPNKit socket used for networking. If empty, disables Hyperkit VPNKitSock, if 'auto' uses Docker for Mac VPNKit connection, otherwise uses the specified VSock (hyperkit driver only)": "",
"Location of the minikube iso.": "",
"Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'": "",
"Log into or run a command on a machine with SSH; similar to 'docker-machine ssh'.": "",
"Message Size: {{.size}}": "",
@ -212,9 +217,9 @@
"NOTE: This process must stay alive for the mount to be accessible ...": "",
"Networking and Connectivity Commands:": "",
"No minikube profile was found. You can create one using `minikube start`.": "",
"None of known repositories in your location is accessible. Use {{.image_repository_name}} as fallback.": "",
"None of known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "",
"Number of CPUs allocated to the minikube VM": "",
"None of the known repositories in your location are accessible. Using {{.image_repository_name}} as fallback.": "",
"None of the known repositories is accessible. Consider specifying an alternative image repository with --image-repository flag": "",
"Number of CPUs allocated to the minikube VM.": "",
"Number of lines back to go within the log": "",
"OS release is {{.pretty_name}}": "",
"Open the addons URL with https instead of http": "",
@ -226,14 +231,13 @@
"Outputs minikube shell completion for the given shell (bash or zsh)": "",
"Permissions: {{.octalMode}} ({{.writtenMode}})": "",
"Please check your BIOS, and ensure that you are running without HyperV or other nested virtualization that may interfere": "",
"Please don't run minikube as root or with 'sudo' privileges. It isn't necessary with {{.driver}} driver.": "",
"Please enter a value:": "",
"Please install the minikube hyperkit VM driver, or select an alternative --vm-driver": "",
"Please install the minikube kvm2 VM driver, or select an alternative --vm-driver": "",
"Please make sure the service you are looking for is deployed or is in the correct namespace.": "",
"Please run with sudo. the vm-driver \"{{.driver_name}}\" requires sudo.": "",
"Please specify the directory to be mounted: \n\tminikube mount \u003csource directory\u003e:\u003ctarget directory\u003e (example: \"/host-home:/vm-home\")": "",
"Please upgrade the '{{.driver_executable}}'. {{.documentation_url}}": "",
"Populates the specified folder with documentation in markdown about minikube": "",
"Powering off \"{{.profile_name}}\" via SSH ...": "",
"Preparing Kubernetes {{.k8sVersion}} on {{.runtime}} {{.runtimeVersion}} ...": "",
"Print current and latest version number": "",
@ -242,7 +246,7 @@
"Problems detected in {{.entry}}:": "",
"Problems detected in {{.name}}:": "",
"Profile gets or sets the current minikube profile": "",
"Provide VM UUID to restore MAC address (only supported with Hyperkit driver).": "",
"Provide VM UUID to restore MAC address (hyperkit driver only)": "",
"Pulling images ...": "拉取镜像 ...",
"Re-run 'minikube start' with --alsologtostderr -v=8 to see the VM driver error message": "",
"Reboot to complete VirtualBox installation, and verify that VirtualBox is not blocked by your system": "",
@ -252,6 +256,7 @@
"Reinstall VirtualBox and verify that it is not blocked: System Preferences -\u003e Security \u0026 Privacy -\u003e General -\u003e Some system software was blocked from loading": "",
"Related issues:": "",
"Relaunching Kubernetes using {{.bootstrapper}} ... ": "",
"Removing {{.directory}} ...": "",
"Requested disk size {{.requested_size}} is less than minimum of {{.minimum_size}}": "",
"Requested memory allocation ({{.memory}}MB) is less than the default memory allocation of {{.default_memorysize}}MB. Beware that minikube might not work correctly or crash unexpectedly.": "",
"Requested memory allocation {{.requested_size}} is less than the minimum allowed of {{.minimum_size}}": "",
@ -276,11 +281,11 @@
"Setting profile failed": "",
"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": "",
"Skipped switching kubectl context for {{.profile_name}} because --keep-context was set.": "",
"Sorry that minikube crashed. If this was unexpected, we would love to hear from you:": "",
"Sorry, completion support is not yet implemented for {{.name}}": "",
"Sorry, the kubeadm.{{.parameter_name}} parameter is currently not supported by --extra-config": "",
"Sorry, url provided with --registry-mirror flag is invalid {{.url}}": "",
"Sorry, the url provided with the --registry-mirror flag is invalid: {{.url}}": "",
"Specify --kubernetes-version in v\u003cmajor\u003e.\u003cminor.\u003cbuild\u003e form. example: 'v1.1.14'": "",
"Specify an alternate --host-only-cidr value, such as 172.16.0.1/24": "",
"Specify arbitrary flags to pass to the Docker daemon. (format: key=value)": "",
@ -295,51 +300,58 @@
"Successfully mounted {{.sourcePath}} to {{.destinationPath}}": "",
"Suggestion: {{.advice}}": "",
"Target directory {{.path}} must be an absolute path": "",
"The \"{{.cluster_name}}\" cluster has been deleted.": "",
"The \"{{.driver_name}}\" driver requires root privileges. Please run minikube using 'sudo minikube --vm-driver={{.driver_name}}'.": "",
"The \"{{.name}}\" cluster has been deleted.": "",
"The 'none' driver provides limited isolation and may reduce system security and reliability.": "",
"The CIDR to be used for service cluster IPs.": "",
"The CIDR to be used for the minikube VM (only supported with Virtualbox driver)": "",
"The KVM QEMU connection URI. (works only with kvm2 driver on linux)": "",
"The CIDR to be used for the minikube VM (virtualbox driver only)": "",
"The KVM QEMU connection URI. (kvm2 driver only)": "",
"The KVM driver is unable to resurrect this old VM. Please run `minikube delete` to delete it and try again.": "",
"The KVM network name. (only supported with KVM driver)": "",
"The KVM network name. (kvm2 driver only)": "",
"The VM driver exited with an error, and may be corrupt. Run 'minikube start' with --alsologtostderr -v=8 to see the error": "",
"The apiserver listening port": "",
"The apiserver name which is used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine": "",
"The argument to pass the minikube mount command on start": "",
"The argument to pass the minikube mount command on start.": "",
"The cluster dns domain name used in the kubernetes cluster": "",
"The container runtime to be used (docker, crio, containerd)": "",
"The cri socket path to be used": "",
"The container runtime to be used (docker, crio, containerd).": "",
"The cri socket path to be used.": "",
"The docker host is currently not running": "",
"The docker service is currently not active": "",
"The driver '{{.driver}}' is not supported on {{.os}}": "",
"The hyperv virtual switch name. Defaults to first found. (only supported with HyperV driver)": "",
"The hyperv virtual switch name. Defaults to first found. (hyperv driver only)": "",
"The initial time interval for each check that wait performs in seconds": "",
"The kubernetes version that the minikube VM will use (ex: v1.2.3)": "",
"The minikube VM is offline. Please run 'minikube start' to start it again.": "",
"The name of the network plugin": "",
"The name of the network plugin.": "",
"The number of bytes to use for 9p packet payload": "",
"The path on the file system where the docs in markdown need to be saved": "",
"The service namespace": "",
"The services namespace": "",
"The time interval for each check that wait performs in seconds": "",
"The value passed to --format is invalid": "",
"The value passed to --format is invalid: {{.error}}": "",
"The vmwarefusion driver is deprecated and support for it will be removed in a future release.\n\t\t\tPlease consider switching to the new vmware unified driver, which is intended to replace the vmwarefusion driver.\n\t\t\tSee https://minikube.sigs.k8s.io/docs/reference/drivers/vmware/ for more information.\n\t\t\tTo disable this message, run [minikube config set ShowDriverDeprecationNotification false]": "",
"The {{.driver_name}} driver should not be used with root privileges.": "",
"There's a new version for '{{.driver_executable}}'. Please consider upgrading. {{.documentation_url}}": "",
"These changes will take effect upon a minikube delete and then a minikube start": "",
"This addon does not have an endpoint defined for the 'addons open' command.\nYou can add one by annotating a service with the label {{.labelName}}:{{.addonName}}": "",
"This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true": "",
"This will keep the existing kubectl context and will create a minikube context.": "",
"This will start the mount daemon and automatically mount files into minikube": "",
"This will start the mount daemon and automatically mount files into minikube.": "",
"Tip: To remove this root owned cluster, run: sudo {{.cmd}} delete": "",
"Tip: Use 'minikube start -p \u003cname\u003e' to create a new cluster, or 'minikube delete' to delete this one.": "",
"To connect to this cluster, use: kubectl --context={{.name}}": "",
"To connect to this cluster, use: kubectl --context={{.profile_name}}": "",
"To disable this notice, run: 'minikube config set WantUpdateNotification false'": "",
"To start minikube with HyperV Powershell must be in your PATH`": "",
"To switch drivers, you may create a new VM using `minikube start -p \u003cname\u003e --vm-driver={{.driver_name}}`": "",
"To use kubectl or minikube commands as your own user, you may": "",
"To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:": "",
"Troubleshooting Commands:": "",
"Unable to bind flags": "",
"Unable to enable dashboard": "",
"Unable to fetch latest version info": "",
"Unable to generate docs": "",
"Unable to generate the documentation. Please ensure that the path specified is a directory, exists \u0026 you have permission to write to it.": "",
"Unable to get VM IP address": "",
"Unable to get bootstrapper: {{.error}}": "",
"Unable to get runtime": "",
@ -349,6 +361,7 @@
"Unable to load config: {{.error}}": "",
"Unable to parse \"{{.kubernetes_version}}\": {{.error}}": "",
"Unable to pull images, which may be OK: {{.error}}": "",
"Unable to remove machine directory: %v": "",
"Unable to start VM": "",
"Unable to stop VM": "",
"Uninstalling Kubernetes {{.kubernetes_version}} using {{.bootstrapper_name}} ...": "",
@ -359,6 +372,7 @@
"Upgrading from Kubernetes {{.old}} to {{.new}}": "",
"Usage": "",
"Usage: minikube completion SHELL": "",
"Usage: minikube delete": "",
"Use \"{{.CommandPath}} [command] --help\" for more information about a command.": "",
"User ID: {{.userID}}": "",
"Userspace file server is shutdown": "",
@ -373,15 +387,17 @@
"Version: {{.version}}": "",
"Wait failed": "",
"Wait failed: {{.error}}": "",
"Wait until Kubernetes core services are healthy before exiting": "",
"Wait until Kubernetes core services are healthy before exiting.": "",
"Waiting for the host to be provisioned ...": "",
"Waiting for:": "",
"Where to root the NFS Shares (defaults to /nfsshares, only supported with hyperkit now)": "",
"You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ for more details": "",
"Where to root the NFS Shares, defaults to /nfsshares (hyperkit driver only)": "",
"You appear to be using a proxy, but your NO_PROXY environment does not include the minikube IP ({{.ip_address}}). Please see {{.documentation_url}} for more details": "",
"You can delete them using the following command(s): ": "",
"You may need to manually remove the \"{{.name}}\" VM from your hypervisor": "",
"You must specify a service name": "",
"Your host does not support KVM virtualization. Ensure that qemu-kvm is installed, and run 'virt-host-validate' to debug the problem": "",
"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 vm is not running, try minikube start.": "",
"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": "",
"addon list failed": "",
@ -402,10 +418,12 @@
"error parsing the input ip address for mount": "",
"error starting tunnel": "",
"failed to open browser: {{.error}}": "",
"if true, will embed the certs in kubeconfig.": "",
"kubectl and minikube configuration will be stored in {{.home_folder}}": "",
"kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/": "",
"kubectl proxy": "",
"logdir set failed": "",
"max time to wait per Kubernetes core services to be healthy.": "",
"minikube is not running, so the service cannot be accessed": "",
"minikube is unable to access the Google Container Registry. You may need to configure it to use a HTTP proxy.": "",
"minikube profile was successfully set to {{.profile_name}}": "",
@ -413,7 +431,6 @@
"minikube {{.version}} on {{.os}} ({{.arch}})": "您正在使用minikube {{.version}} 运行平台:{{.os}} ({{.arch}})",
"mount argument \"{{.value}}\" must be in form: \u003csource directory\u003e:\u003ctarget directory\u003e": "",
"mount failed": "",
"need to relocate them. For example, to overwrite your own settings:": "",
"profile sets the current minikube profile, or gets the current profile if no arguments are provided. This is used to run and manage multiple minikube instance. You can return to the default minikube profile by running `minikube profile default`": "",
"service {{.namespace_name}}/{{.service_name}} has no node port": "",
"stat failed": "",
@ -434,7 +451,6 @@
"usage: minikube addons open ADDON_NAME": "",
"usage: minikube config set PROPERTY_NAME PROPERTY_VALUE": "",
"usage: minikube config unset PROPERTY_NAME": "",
"usage: minikube delete": "",
"usage: minikube profile [MINIKUBE_PROFILE_NAME]": "",
"zsh completion failed": "",
"{{.addonName}} was successfully enabled": "",