Merge branch 'master' into gvisor-containerd-shim_v0.0.2
commit
d8c380da85
|
@ -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)
|
||||
|
|
28
Makefile
28
Makefile
|
@ -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
1
OWNERS
|
@ -6,6 +6,7 @@ reviewers:
|
|||
- sharifelgamal
|
||||
- RA489
|
||||
- medyagh
|
||||
- josedonizetti
|
||||
approvers:
|
||||
- tstromberg
|
||||
- afbjorklund
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -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(®istryMirror, "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},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 = ""
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
apiVersion: extensions/v1beta1
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: metrics-server
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -15,6 +15,8 @@ metadata:
|
|||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
glusterfs: pod
|
||||
glusterfs-node: pod
|
||||
k8s-app: storage-provisioner-gluster
|
||||
template:
|
||||
metadata:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 "$@"
|
|
@ -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 = ""
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
|
@ -1,2 +0,0 @@
|
|||
# Whether to use chroot instead of pivot_root in the runtime
|
||||
no_pivot_root = true
|
|
@ -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
11
go.mod
|
@ -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
23
go.sum
|
@ -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=
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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]
|
||||
`,
|
||||
|
|
|
@ -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()))
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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'")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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}}": ""
|
||||
}
|
|
@ -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": "",
|
||||
|
|
Loading…
Reference in New Issue