Merge branch 'master' into updateUbuntu
commit
5af4713c81
53
CHANGELOG.md
53
CHANGELOG.md
|
@ -1,5 +1,58 @@
|
|||
# Release Notes
|
||||
|
||||
## Version 1.27.1 - 2022-10-07
|
||||
|
||||
Features (Experimental):
|
||||
* QEMU Driver: Add support for dedicated network on macOS (socket_vmnet) [#14989](https://github.com/kubernetes/minikube/pull/14989)
|
||||
* QEMU Driver: Add support minikube service and tunnel on macOS [#14989](https://github.com/kubernetes/minikube/pull/14989)
|
||||
|
||||
Minor Imprevements:
|
||||
* Check if context is invalid during update-context command [#15032](https://github.com/kubernetes/minikube/pull/15032)
|
||||
* Use SSH tunnel if user specifies bindAddress [#14951](https://github.com/kubernetes/minikube/pull/14951)
|
||||
* Warn QEMU users if DNS issue detected [#15073](https://github.com/kubernetes/minikube/pull/15073)
|
||||
|
||||
Bug Fixes:
|
||||
* Fix status command taking a long time on docker driver while paused [#15077](https://github.com/kubernetes/minikube/pull/15077)
|
||||
* Fix not allowing passing only an exposed port to --ports [#15085](https://github.com/kubernetes/minikube/pull/15085)
|
||||
* Fix `minikube dashboard` failing on macOS [#15037](https://github.com/kubernetes/minikube/pull/15037)
|
||||
* Fix incorrect command in powershell command tip [#15012](https://github.com/kubernetes/minikube/pull/15012)
|
||||
|
||||
Version Upgrades:
|
||||
* Bump Kubernetes version default: v1.25.2 and latest: v1.25.2 [#14995](https://github.com/kubernetes/minikube/pull/14995)
|
||||
* Upgrade kubernetes dashboard from v2.6.0 to v2.7.0 [#15000](https://github.com/kubernetes/minikube/pull/15000)
|
||||
|
||||
For a more detailed changelog, including changes occurring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md).
|
||||
|
||||
Thank you to our contributors for this release!
|
||||
|
||||
- Anthony Nandaa
|
||||
- Jeff MAURY
|
||||
- Medya Ghazizadeh
|
||||
- Rob Leland
|
||||
- Steven Powell
|
||||
- Yuiko Mouri
|
||||
- cokia
|
||||
- klaases
|
||||
- ziyi-xie
|
||||
|
||||
Thank you to our PR reviewers for this release!
|
||||
|
||||
- eiffel-fl (9 comments)
|
||||
- medyagh (6 comments)
|
||||
- AkihiroSuda (2 comments)
|
||||
- klaases (2 comments)
|
||||
- t-inu (1 comments)
|
||||
|
||||
Thank you to our triage members for this release!
|
||||
|
||||
- klaases (31 comments)
|
||||
- RA489 (30 comments)
|
||||
- afbjorklund (17 comments)
|
||||
- nikimanoledaki (7 comments)
|
||||
- medyagh (3 comments)
|
||||
|
||||
Check out our [contributions leaderboard](https://minikube.sigs.k8s.io/docs/contrib/leaderboard/v1.27.1/) for this release!
|
||||
|
||||
## Version 1.27.0 - 2022-09-15
|
||||
|
||||
Kubernetes v1.25:
|
||||
|
|
4
Makefile
4
Makefile
|
@ -15,7 +15,7 @@
|
|||
# Bump these on release - and please check ISO_VERSION for correctness.
|
||||
VERSION_MAJOR ?= 1
|
||||
VERSION_MINOR ?= 27
|
||||
VERSION_BUILD ?= 0
|
||||
VERSION_BUILD ?= 1
|
||||
RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD)
|
||||
VERSION ?= v$(RAW_VERSION)
|
||||
|
||||
|
@ -76,7 +76,7 @@ MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download
|
|||
KERNEL_VERSION ?= 5.10.57
|
||||
# latest from https://github.com/golangci/golangci-lint/releases
|
||||
# update this only by running `make update-golint-version`
|
||||
GOLINT_VERSION ?= v1.49.0
|
||||
GOLINT_VERSION ?= v1.50.0
|
||||
# Limit number of default jobs, to avoid the CI builds running out of memory
|
||||
GOLINT_JOBS ?= 4
|
||||
# see https://github.com/golangci/golangci-lint#memory-usage-of-golangci-lint
|
||||
|
|
|
@ -63,11 +63,14 @@ var addonsEnableCmd = &cobra.Command{
|
|||
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS`,
|
||||
out.V{"addon": addon, "maintainer": maintainer})
|
||||
} else {
|
||||
out.Styled(style.Warning, `{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.`,
|
||||
out.Styled(style.Warning, `{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.`,
|
||||
out.V{"addon": addon})
|
||||
if addonBundle.VerifiedMaintainer != "" {
|
||||
out.Styled(style.Tip, `{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.`,
|
||||
out.V{"addon": addon, "maintainer": maintainer, "verifiedMaintainer": addonBundle.VerifiedMaintainer})
|
||||
} else {
|
||||
out.Styled(style.Warning, `{{.addon}} does not currently have an associated maintainer.`,
|
||||
out.V{"addon": addon})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,6 +68,7 @@ import (
|
|||
"k8s.io/minikube/pkg/minikube/notify"
|
||||
"k8s.io/minikube/pkg/minikube/out"
|
||||
"k8s.io/minikube/pkg/minikube/out/register"
|
||||
"k8s.io/minikube/pkg/minikube/pause"
|
||||
"k8s.io/minikube/pkg/minikube/reason"
|
||||
"k8s.io/minikube/pkg/minikube/style"
|
||||
pkgtrace "k8s.io/minikube/pkg/trace"
|
||||
|
@ -408,6 +409,8 @@ func startWithDriver(cmd *cobra.Command, starter node.Starter, existing *config.
|
|||
}
|
||||
}
|
||||
|
||||
pause.RemovePausedFile(starter.Runner)
|
||||
|
||||
return kubeconfig, nil
|
||||
}
|
||||
|
||||
|
@ -1253,24 +1256,48 @@ func validateFlags(cmd *cobra.Command, drvName string) {
|
|||
|
||||
// validatePorts validates that the --ports are not below 1024 for the host and not outside range
|
||||
func validatePorts(ports []string) error {
|
||||
_, portBindingsMap, err := nat.ParsePortSpecs(ports)
|
||||
var exposedPorts, hostPorts, portSpecs []string
|
||||
for _, p := range ports {
|
||||
if strings.Contains(p, ":") {
|
||||
portSpecs = append(portSpecs, p)
|
||||
} else {
|
||||
exposedPorts = append(exposedPorts, p)
|
||||
}
|
||||
}
|
||||
_, portBindingsMap, err := nat.ParsePortSpecs(portSpecs)
|
||||
if err != nil {
|
||||
return errors.Errorf("Sorry, one of the ports provided with --ports flag is not valid %s (%v)", ports, err)
|
||||
}
|
||||
for _, portBindings := range portBindingsMap {
|
||||
for exposedPort, portBindings := range portBindingsMap {
|
||||
exposedPorts = append(exposedPorts, exposedPort.Port())
|
||||
for _, portBinding := range portBindings {
|
||||
p, err := strconv.Atoi(portBinding.HostPort)
|
||||
if err != nil {
|
||||
return errors.Errorf("Sorry, one of the ports provided with --ports flag is not valid %s", ports)
|
||||
}
|
||||
if p > 65535 || p < 1 {
|
||||
return errors.Errorf("Sorry, one of the ports provided with --ports flag is outside range %s", ports)
|
||||
}
|
||||
if detect.IsMicrosoftWSL() && p < 1024 {
|
||||
return errors.Errorf("Sorry, you cannot use privileged ports on the host (below 1024) %s", ports)
|
||||
}
|
||||
hostPorts = append(hostPorts, portBinding.HostPort)
|
||||
}
|
||||
}
|
||||
for _, p := range exposedPorts {
|
||||
if err := validatePort(p, false); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, p := range hostPorts {
|
||||
if err := validatePort(p, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func validatePort(port string, isHost bool) error {
|
||||
p, err := strconv.Atoi(port)
|
||||
if err != nil {
|
||||
return errors.Errorf("Sorry, one of the ports provided with --ports flag is not valid: %s", port)
|
||||
}
|
||||
if p > 65535 || p < 1 {
|
||||
return errors.Errorf("Sorry, one of the ports provided with --ports flag is outside range: %s", port)
|
||||
}
|
||||
if isHost && detect.IsMicrosoftWSL() && p < 1024 {
|
||||
return errors.Errorf("Sorry, you cannot use privileged ports on the host (below 1024): %s", port)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -489,12 +489,12 @@ func TestValidatePorts(t *testing.T) {
|
|||
{
|
||||
isTarget: true,
|
||||
ports: []string{"0:80"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range [0:80]",
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"0:80/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range [0:80/tcp]",
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
|
@ -504,12 +504,12 @@ func TestValidatePorts(t *testing.T) {
|
|||
{
|
||||
isTarget: true,
|
||||
ports: []string{"0-1:80-81/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range [0-1:80-81/tcp]",
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"0-1:80-81/udp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range [0-1:80-81/udp]",
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: !isMicrosoftWSL,
|
||||
|
@ -519,22 +519,22 @@ func TestValidatePorts(t *testing.T) {
|
|||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"80:80"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [80:80]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"1023-1025:8023-8025"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [1023-1025:8023-8025]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"1023-1025:8023-8025/tcp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [1023-1025:8023-8025/tcp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"1023-1025:8023-8025/udp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [1023-1025:8023-8025/udp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 1023",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
|
@ -554,27 +554,72 @@ func TestValidatePorts(t *testing.T) {
|
|||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"127.0.0.1:80:80"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [127.0.0.1:80:80]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"127.0.0.1:81:81/tcp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [127.0.0.1:81:81/tcp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 81",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"127.0.0.1:81:81/udp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [127.0.0.1:81:81/udp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 81",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"127.0.0.1:80-83:80-83/tcp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [127.0.0.1:80-83:80-83/tcp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
|
||||
},
|
||||
{
|
||||
isTarget: isMicrosoftWSL,
|
||||
ports: []string{"127.0.0.1:80-83:80-83/udp"},
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024) [127.0.0.1:80-83:80-83/udp]",
|
||||
errorMsg: "Sorry, you cannot use privileged ports on the host (below 1024): 80",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"80"},
|
||||
errorMsg: "",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"80", "65535", "65536"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 65536",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"0", "80", "65535"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"cats"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is not valid: cats",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"127.0.0.1:81:0/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is outside range: 0",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"127.0.0.1:81:65536/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [127.0.0.1:81:65536/tcp] (Invalid containerPort: 65536)",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"1-65536:80-81/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-65536:80-81/tcp] (Invalid hostPort: 1-65536)",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"1-80:0-81/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-80:0-81/tcp] (Invalid ranges specified for container and host Ports: 0-81 and 1-80)",
|
||||
},
|
||||
{
|
||||
isTarget: true,
|
||||
ports: []string{"1-80:1-65536/tcp"},
|
||||
errorMsg: "Sorry, one of the ports provided with --ports flag is not valid [1-80:1-65536/tcp] (Invalid containerPort: 1-65536)",
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
|
|
|
@ -1,4 +1,30 @@
|
|||
[
|
||||
{
|
||||
"checksums": {
|
||||
"amd64": {
|
||||
"darwin": "aa60ff42b4d60b1a65552a5f527d78f68efa887e1eab0af013996badfbccc3c8",
|
||||
"linux": "159bc79f3914dadb7c9f56b6e9d5b73a1c54acb26dca8f1ea84b99ff5da42620",
|
||||
"windows": "d5957435f3a94a43ce0c764ecaf3b9c4f7c6f8bcafdc4ef7b2b86937ec5c311c"
|
||||
},
|
||||
"arm": {
|
||||
"linux": "f14348a7653672745e92eba934543c0a9f3fa14fbdeff3cf76da41e174769bf0"
|
||||
},
|
||||
"arm64": {
|
||||
"darwin": "c12ad4e16460e8cdf9f49a9cf6514878875453485570cafe4423fc4d3a69d590",
|
||||
"linux": "6a3fb0eaac110c35f018948838aa6ab0898e811a08f76e74b85d8573fb08b1d0"
|
||||
},
|
||||
"ppc64le": {
|
||||
"linux": "aae55c97d7fa9d3180843cffc4c6a504d6882c45a232bdef23e46ec83e191aae"
|
||||
},
|
||||
"s390x": {
|
||||
"linux": "cb22c8c54c4e9b441ec6680f38dc067909bc1f793a205202274eaff2cd947e9f"
|
||||
},
|
||||
"darwin": "aa60ff42b4d60b1a65552a5f527d78f68efa887e1eab0af013996badfbccc3c8",
|
||||
"linux": "159bc79f3914dadb7c9f56b6e9d5b73a1c54acb26dca8f1ea84b99ff5da42620",
|
||||
"windows": "d5957435f3a94a43ce0c764ecaf3b9c4f7c6f8bcafdc4ef7b2b86937ec5c311c"
|
||||
},
|
||||
"name": "v1.27.1"
|
||||
},
|
||||
{
|
||||
"checksums": {
|
||||
"amd64": {
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
[
|
||||
{
|
||||
"checksums": {
|
||||
"darwin": "aa60ff42b4d60b1a65552a5f527d78f68efa887e1eab0af013996badfbccc3c8",
|
||||
"linux": "159bc79f3914dadb7c9f56b6e9d5b73a1c54acb26dca8f1ea84b99ff5da42620",
|
||||
"windows": "d5957435f3a94a43ce0c764ecaf3b9c4f7c6f8bcafdc4ef7b2b86937ec5c311c"
|
||||
},
|
||||
"name": "v1.27.1"
|
||||
},
|
||||
{
|
||||
"checksums": {
|
||||
"darwin": "fca0cbabad64868cf00d37349b953b16c06bafa13569595ef7721bd9178b4a5c",
|
||||
|
|
|
@ -24,13 +24,13 @@ import (
|
|||
|
||||
const (
|
||||
// Version is the current version of kic
|
||||
Version = "v0.0.34-1664988738-15075"
|
||||
Version = "v0.0.35"
|
||||
// SHA of the kic base image
|
||||
baseImageSHA = "cd7ef1dc75e601c481238e44f98be8b254c59558b27f38b011091d9491c5d428"
|
||||
// The name of the GCR kicbase repository
|
||||
gcrRepo = "gcr.io/k8s-minikube/kicbase-builds"
|
||||
gcrRepo = "gcr.io/k8s-minikube/kicbase"
|
||||
// The name of the Dockerhub kicbase repository
|
||||
dockerhubRepo = "docker.io/kicbase/build"
|
||||
dockerhubRepo = "docker.io/kicbase/stable"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -174,7 +174,7 @@ func APIServerStatus(cr command.Runner, hostname string, port int) (state.State,
|
|||
rr, err := cr.RunCmd(exec.Command("sudo", "egrep", "^[0-9]+:freezer:", fmt.Sprintf("/proc/%d/cgroup", pid)))
|
||||
if err != nil {
|
||||
klog.Warningf("unable to find freezer cgroup: %v", err)
|
||||
return apiServerHealthz(hostname, port)
|
||||
return nonFreezerServerStatus(cr, hostname, port)
|
||||
|
||||
}
|
||||
freezer := strings.TrimSpace(rr.Stdout.String())
|
||||
|
@ -182,7 +182,7 @@ func APIServerStatus(cr command.Runner, hostname string, port int) (state.State,
|
|||
fparts := strings.Split(freezer, ":")
|
||||
if len(fparts) != 3 {
|
||||
klog.Warningf("unable to parse freezer - found %d parts: %s", len(fparts), freezer)
|
||||
return apiServerHealthz(hostname, port)
|
||||
return nonFreezerServerStatus(cr, hostname, port)
|
||||
}
|
||||
|
||||
rr, err = cr.RunCmd(exec.Command("sudo", "cat", path.Join("/sys/fs/cgroup/freezer", fparts[2], "freezer.state")))
|
||||
|
@ -196,7 +196,7 @@ func APIServerStatus(cr command.Runner, hostname string, port int) (state.State,
|
|||
klog.Warningf("unable to get freezer state: %s", rr.Stderr.String())
|
||||
}
|
||||
|
||||
return apiServerHealthz(hostname, port)
|
||||
return nonFreezerServerStatus(cr, hostname, port)
|
||||
}
|
||||
|
||||
fs := strings.TrimSpace(rr.Stdout.String())
|
||||
|
@ -207,6 +207,18 @@ func APIServerStatus(cr command.Runner, hostname string, port int) (state.State,
|
|||
return apiServerHealthz(hostname, port)
|
||||
}
|
||||
|
||||
// nonFreezerServerStatus is the alternative flow if the guest does not have the freezer cgroup so different methods to detect the apiserver status are used
|
||||
func nonFreezerServerStatus(cr command.Runner, hostname string, port int) (state.State, error) {
|
||||
rr, err := cr.RunCmd(exec.Command("ls"))
|
||||
if err != nil {
|
||||
return state.None, err
|
||||
}
|
||||
if strings.Contains(rr.Stdout.String(), "paused") {
|
||||
return state.Paused, nil
|
||||
}
|
||||
return apiServerHealthz(hostname, port)
|
||||
}
|
||||
|
||||
// apiServerHealthz checks apiserver in a patient and tolerant manner
|
||||
func apiServerHealthz(hostname string, port int) (state.State, error) {
|
||||
var st state.State
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/minikube/command"
|
||||
"k8s.io/minikube/pkg/minikube/cruntime"
|
||||
pkgpause "k8s.io/minikube/pkg/minikube/pause"
|
||||
"k8s.io/minikube/pkg/minikube/sysinit"
|
||||
"k8s.io/minikube/pkg/util/retry"
|
||||
)
|
||||
|
@ -63,7 +64,15 @@ func pause(cr cruntime.Manager, r command.Runner, namespaces []string) ([]string
|
|||
return ids, nil
|
||||
}
|
||||
|
||||
return ids, cr.PauseContainers(ids)
|
||||
if err := cr.PauseContainers(ids); err != nil {
|
||||
return ids, errors.Wrap(err, "pausing containers")
|
||||
}
|
||||
|
||||
if doesNamespaceContainKubeSystem(namespaces) {
|
||||
pkgpause.CreatePausedFile(r)
|
||||
}
|
||||
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
// Unpause unpauses a Kubernetes cluster, retrying if necessary
|
||||
|
@ -99,6 +108,10 @@ func unpause(cr cruntime.Manager, r command.Runner, namespaces []string) ([]stri
|
|||
return ids, errors.Wrap(err, "kubelet start")
|
||||
}
|
||||
|
||||
if doesNamespaceContainKubeSystem(namespaces) {
|
||||
pkgpause.RemovePausedFile(r)
|
||||
}
|
||||
|
||||
return ids, nil
|
||||
}
|
||||
|
||||
|
@ -115,3 +128,18 @@ func CheckIfPaused(cr cruntime.Manager, namespaces []string) (bool, error) {
|
|||
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// doesNamespaceContainKubeSystem returns true if kube-system is contained in the namespace list
|
||||
// This is used to only mark the apiserver as paused/unpaused when the kube-system namespace is specified
|
||||
func doesNamespaceContainKubeSystem(namespaces []string) bool {
|
||||
// nil slice indicates all namespaces
|
||||
if namespaces == nil {
|
||||
return true
|
||||
}
|
||||
for _, ns := range namespaces {
|
||||
if ns == "kube-system" {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -672,7 +672,7 @@ func validateNetwork(h *host.Host, r command.Runner, imageRepository string, kub
|
|||
}
|
||||
|
||||
// Non-blocking
|
||||
go tryRegistry(r, h.Driver.DriverName(), imageRepository, kubernetesVersion)
|
||||
go tryRegistry(r, h.Driver.DriverName(), imageRepository, kubernetesVersion, ip)
|
||||
return ip, nil
|
||||
}
|
||||
|
||||
|
@ -728,7 +728,7 @@ func trySSH(h *host.Host, ip string) error {
|
|||
}
|
||||
|
||||
// tryRegistry tries to connect to the image repository
|
||||
func tryRegistry(r command.Runner, driverName string, imageRepository string, kubernetesVersion string) {
|
||||
func tryRegistry(r command.Runner, driverName string, imageRepository string, kubernetesVersion string, ip string) {
|
||||
// 2 second timeout. For best results, call tryRegistry in a non-blocking manner.
|
||||
opts := []string{"-sS", "-m", "2"}
|
||||
|
||||
|
@ -747,6 +747,10 @@ func tryRegistry(r command.Runner, driverName string, imageRepository string, ku
|
|||
klog.Warningf("%s failed: %v", rr.Args, err)
|
||||
out.WarningT("This {{.type}} is having trouble accessing https://{{.repository}}", out.V{"repository": imageRepository, "type": driver.MachineType(driverName)})
|
||||
out.ErrT(style.Tip, "To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/")
|
||||
// using QEMU with the user network
|
||||
if driver.IsQEMU(driverName) && ip == "127.0.0.1" {
|
||||
out.WarningT("Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
/*
|
||||
Copyright 2022 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 pause
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
"k8s.io/minikube/pkg/minikube/command"
|
||||
)
|
||||
|
||||
const pausedFile = "paused"
|
||||
|
||||
// CreatePausedFile creates a file in the minikube cluster to indicate that the apiserver is paused
|
||||
func CreatePausedFile(r command.Runner) {
|
||||
if _, err := r.RunCmd(exec.Command("touch", pausedFile)); err != nil {
|
||||
klog.Errorf("failed to create paused file, apiserver may display incorrect status")
|
||||
}
|
||||
}
|
||||
|
||||
// RemovePausedFile removes a file in minikube cluster to indicate that the apiserver is unpaused
|
||||
func RemovePausedFile(r command.Runner) {
|
||||
if _, err := r.RunCmd(exec.Command("rm", "-f", pausedFile)); err != nil {
|
||||
klog.Errorf("failed to remove paused file, apiserver may display incorrect status")
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
---
|
||||
title: "v1.27.1 Benchmark"
|
||||
linkTitle: "v1.27.1 Benchmark"
|
||||
weight: -20221008
|
||||
---
|
||||
|
||||
![time-to-k8s](/images/benchmarks/timeToK8s/v1.27.1-time.png)
|
||||
|
||||
| | minikube version: v1.27.1 | kind v0.16.0 go1.19.1 linux/amd64 | k3d version v5.4.6 |
|
||||
|----------------------|---------------------------|-----------------------------------|--------------------|
|
||||
| Command Exec | 34.025 | 23.670 | 16.210 |
|
||||
| API Server Answering | 0.098 | 0.103 | 0.126 |
|
||||
| Kubernetes SVC | 0.088 | 0.079 | 0.083 |
|
||||
| DNS SVC | 0.085 | 0.081 | 0.084 |
|
||||
| App Running | 15.237 | 26.462 | 13.359 |
|
||||
| DNS Answering | 4.239 | 2.189 | 3.050 |
|
||||
| Total | 53.771 | 52.585 | 32.911 |
|
||||
|
||||
|
||||
|
||||
![cpu-to-k8s](/images/benchmarks/timeToK8s/v1.27.1-cpu.png)
|
||||
|
||||
| | minikube version: v1.27.1 | kind v0.16.0 go1.19.1 linux/amd64 | k3d version v5.4.6 |
|
||||
|--------------------|---------------------------|-----------------------------------|--------------------|
|
||||
| CPU Utilization(%) | 46.634 | 51.041 | 53.975 |
|
||||
| CPU Time(seconds) | 24.360 | 26.787 | 17.793 |
|
||||
|
|
@ -26,7 +26,7 @@ minikube start [flags]
|
|||
--apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine
|
||||
--apiserver-port int The apiserver listening port (default 8443)
|
||||
--auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true)
|
||||
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.34-1664988738-15075@sha256:cd7ef1dc75e601c481238e44f98be8b254c59558b27f38b011091d9491c5d428")
|
||||
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.35@sha256:e6f9b2700841634f3b94907f9cfa6785ca4409ef8e428a0322c1781e809d311b")
|
||||
--binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from.
|
||||
--cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true)
|
||||
--cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s)
|
||||
|
|
|
@ -0,0 +1,467 @@
|
|||
---
|
||||
title: "v1.27.1 - 2022-10-07"
|
||||
linkTitle: "v1.27.1 - 2022-10-07"
|
||||
weight: -109
|
||||
---
|
||||
<html>
|
||||
<head>
|
||||
<title>kubernetes/minikube - Leaderboard</title>
|
||||
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap" rel="stylesheet">
|
||||
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||
<script type="text/javascript">
|
||||
google.charts.load("current", {packages:["corechart"]});
|
||||
</script>
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
background-color: #f7f7fa;
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: rgba(66,133,244);
|
||||
margin-bottom: 0em;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
color: rgba(23,90,201);
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
color: #666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
h2.cli {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.board p {
|
||||
font-size: small;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.board {
|
||||
clear: right;
|
||||
display: inline-block;
|
||||
padding: 0.5em;
|
||||
margin: 0.5em;
|
||||
background-color: #fff;
|
||||
}
|
||||
.board:nth-child(4n+3) {
|
||||
border: 2px solid rgba(66,133,244,0.25);
|
||||
color: rgba(66,133,244);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+2) {
|
||||
border: 2px solid rgba(219,68,55,0.25);
|
||||
color: rgba rgba(219,68,55);
|
||||
}
|
||||
|
||||
.board:nth-child(4n+1) {
|
||||
border: 2px solid rgba(244,160,0,0.25);
|
||||
color: rgba(244,160,0);
|
||||
}
|
||||
|
||||
.board:nth-child(4n) {
|
||||
border: 2px solid rgba(15,157,88,0.25);
|
||||
color: rgba(15,157,88);
|
||||
}
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1>kubernetes/minikube</h1>
|
||||
<div class="subtitle">2022-09-15 — 2022-10-07</div>
|
||||
|
||||
|
||||
<h2>Reviewers</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Influential</h3>
|
||||
<p># of Merged PRs reviewed</p>
|
||||
<div id="chart_reviewCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewCounts);
|
||||
|
||||
function drawreviewCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Merged PRs reviewed', type: 'number'}, { role: 'annotation' }],
|
||||
["medyagh", 2, "2"],
|
||||
["AkihiroSuda", 2, "2"],
|
||||
["eiffel-fl", 1, "1"],
|
||||
["klaases", 1, "1"],
|
||||
["t-inu", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words written in merged PRs</p>
|
||||
<div id="chart_reviewWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewWords);
|
||||
|
||||
function drawreviewWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words written in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["eiffel-fl", 257, "257"],
|
||||
["medyagh", 177, "177"],
|
||||
["AkihiroSuda", 33, "33"],
|
||||
["klaases", 6, "6"],
|
||||
["t-inu", 6, "6"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Demanding</h3>
|
||||
<p># of Review Comments in merged PRs</p>
|
||||
<div id="chart_reviewComments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawreviewComments);
|
||||
|
||||
function drawreviewComments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Review Comments in merged PRs', type: 'number'}, { role: 'annotation' }],
|
||||
["eiffel-fl", 9, "9"],
|
||||
["medyagh", 2, "2"],
|
||||
["AkihiroSuda", 2, "2"],
|
||||
["klaases", 2, "2"],
|
||||
["t-inu", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_reviewComments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Pull Requests</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of Pull Requests Merged</p>
|
||||
<div id="chart_prCounts" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprCounts);
|
||||
|
||||
function drawprCounts() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of Pull Requests Merged', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 13, "13"],
|
||||
["klaases", 2, "2"],
|
||||
["profnandaa", 1, "1"],
|
||||
["ziyi-xie", 1, "1"],
|
||||
["cokia", 1, "1"],
|
||||
["free2create", 1, "1"],
|
||||
["YuikoTakada", 1, "1"],
|
||||
["jeffmaury", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prCounts'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Big Movers</h3>
|
||||
<p>Lines of code (delta)</p>
|
||||
<div id="chart_prDeltas" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprDeltas);
|
||||
|
||||
function drawprDeltas() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Lines of code (delta)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 979, "979"],
|
||||
["klaases", 59, "59"],
|
||||
["profnandaa", 4, "4"],
|
||||
["free2create", 4, "4"],
|
||||
["ziyi-xie", 2, "2"],
|
||||
["YuikoTakada", 0, "0"],
|
||||
["jeffmaury", 0, "0"],
|
||||
["cokia", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prDeltas'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most difficult to review</h3>
|
||||
<p>Average PR size (added+changed)</p>
|
||||
<div id="chart_prSize" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawprSize);
|
||||
|
||||
function drawprSize() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: 'Average PR size (added+changed)', type: 'number'}, { role: 'annotation' }],
|
||||
["spowelljr", 46, "46"],
|
||||
["klaases", 26, "26"],
|
||||
["profnandaa", 2, "2"],
|
||||
["free2create", 2, "2"],
|
||||
["ziyi-xie", 1, "1"],
|
||||
["cokia", 0, "0"],
|
||||
["YuikoTakada", 0, "0"],
|
||||
["jeffmaury", 0, "0"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_prSize'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
<h2>Issues</h2>
|
||||
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Active</h3>
|
||||
<p># of comments</p>
|
||||
<div id="chart_comments" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcomments);
|
||||
|
||||
function drawcomments() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of comments', type: 'number'}, { role: 'annotation' }],
|
||||
["klaases", 31, "31"],
|
||||
["RA489", 30, "30"],
|
||||
["afbjorklund", 17, "17"],
|
||||
["nikimanoledaki", 7, "7"],
|
||||
["medyagh", 3, "3"],
|
||||
["yuzhaopeng", 3, "3"],
|
||||
["spowelljr", 2, "2"],
|
||||
["CtrlZvi", 2, "2"],
|
||||
["greenchapter", 2, "2"],
|
||||
["ImaneKABKAB", 2, "2"],
|
||||
["TanjinAlam", 2, "2"],
|
||||
["ComradeProgrammer", 2, "2"],
|
||||
["organics2016", 1, "1"],
|
||||
["hypeitnow", 1, "1"],
|
||||
["hemanthkotaprolu", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_comments'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Most Helpful</h3>
|
||||
<p># of words (excludes authored)</p>
|
||||
<div id="chart_commentWords" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawcommentWords);
|
||||
|
||||
function drawcommentWords() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of words (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["afbjorklund", 847, "847"],
|
||||
["klaases", 842, "842"],
|
||||
["nikimanoledaki", 790, "790"],
|
||||
["Arun-N", 514, "514"],
|
||||
["RA489", 399, "399"],
|
||||
["LTL-updating", 310, "310"],
|
||||
["spowelljr", 303, "303"],
|
||||
["cecilphillip", 208, "208"],
|
||||
["oleastre", 181, "181"],
|
||||
["medyagh", 181, "181"],
|
||||
["varun-telus", 179, "179"],
|
||||
["kadern0", 175, "175"],
|
||||
["CtrlZvi", 113, "113"],
|
||||
["Hondough", 95, "95"],
|
||||
["JustinKirkJohnson", 87, "87"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_commentWords'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div class="board">
|
||||
<h3>Top Closers</h3>
|
||||
<p># of issues closed (excludes authored)</p>
|
||||
<div id="chart_issueCloser" style="width: 450px; height: 350px;"></div>
|
||||
<script type="text/javascript">
|
||||
google.charts.setOnLoadCallback(drawissueCloser);
|
||||
|
||||
function drawissueCloser() {
|
||||
var data = new google.visualization.arrayToDataTable([
|
||||
[{label:'',type:'string'},{label: '# of issues closed (excludes authored)', type: 'number'}, { role: 'annotation' }],
|
||||
["klaases", 23, "23"],
|
||||
["spowelljr", 11, "11"],
|
||||
["medyagh", 3, "3"],
|
||||
["afbjorklund", 1, "1"],
|
||||
|
||||
]);
|
||||
|
||||
var options = {
|
||||
axisTitlesPosition: 'none',
|
||||
|
||||
bars: 'horizontal', // Required for Material Bar Charts.
|
||||
axes: {
|
||||
x: {
|
||||
y: { side: 'top'} // Top x-axis.
|
||||
}
|
||||
},
|
||||
legend: { position: "none" },
|
||||
bar: { groupWidth: "85%" }
|
||||
};
|
||||
|
||||
var chart = new google.visualization.BarChart(document.getElementById('chart_issueCloser'));
|
||||
chart.draw(data, options);
|
||||
};
|
||||
</script>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -605,10 +605,10 @@ Halt the cluster:
|
|||
minikube stop
|
||||
```
|
||||
|
||||
Increase the default memory limit (requires a restart):
|
||||
Change the default memory limit (requires a restart):
|
||||
|
||||
```shell
|
||||
minikube config set memory 16384
|
||||
minikube config set memory 9001
|
||||
```
|
||||
|
||||
Browse the catalog of easily installed Kubernetes services:
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
|
@ -172,6 +172,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "Lade Kubernetes {{.version}} herunter ...",
|
||||
"Downloading VM boot image ...": "Lade VM boot image herunter ...",
|
||||
"Downloading driver {{.driver}}:": "Lade Treiber {{.driver}} herunter:",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "Dauer bis das Minikube-Zertifikat abläuft, Default ist drei Jahre (26280 Stunden).",
|
||||
"ERROR creating `registry-creds-acr` secret": "Fehler beim Erstellen des `registry-creds-acr` Secrets",
|
||||
"ERROR creating `registry-creds-dpr` secret": "Fehler beim Erstellen des `registry-creds-dpr` Secrets",
|
||||
|
@ -1034,7 +1035,8 @@
|
|||
"zsh completion.": "",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: Vorschlag: {{ .suggestion}}",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "{{.Driver}} verwendet derzeit den {{.StorageDriver}} Storage Treiber, erwäge zu overlay2 zu wechseln für bessere Performance",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "{{.count}} Node{{if gt .count 1}}s{{end}} angehalten.",
|
||||
|
|
|
@ -177,6 +177,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "Descargando Kubernetes {{.version}} ...",
|
||||
"Downloading VM boot image ...": "Descargando la imagen de arranque de la VM",
|
||||
"Downloading driver {{.driver}}:": "Descargando el controlador {{.driver}}:",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Due to issues with CRI-O post v1.17.3, we need to restart your cluster.": "Debido a problemas con CRI-O post v1.17.3, necesitamos reiniciar tu cluster.",
|
||||
"Due to networking limitations of driver {{.driver_name}} on {{.os_name}}, {{.addon_name}} addon is not supported.\nAlternatively to use this addon you can use a vm-based driver:\n\n\t'minikube start --vm=true'\n\nTo track the update on this work in progress feature please check:\nhttps://github.com/kubernetes/minikube/issues/7332": "Debido a las limitaciones de red del controlador {{.driver_name}} en {{.os_name}}, el complemento \"{{.addon_name}}\" no está soportado.\nPara usar este complemento, puedes utilizar un controlador basado en vm\n\n\t'minikube start --vm=true'\n\nPara realizar un seguimiento de las actualizaciones de esta función consulte:\nhttps://github.com/kubernetes/minikube/issues/7332",
|
||||
"Due to networking limitations of driver {{.driver_name}}, {{.addon_name}} addon is not supported. Try using a different driver.": "Debido a limitaciones de red del controlador {{.driver_name}}, el complemento \"{{.addon_name}}\" no está soportado. Intenta usar un controlador diferente.",
|
||||
|
@ -1029,7 +1030,8 @@
|
|||
"{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: Sugerencia: {{ .suggestion}}",
|
||||
"{{ .name }}: {{ .rejection }}": "{{ .name }}: {{ .rejection }}",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "",
|
||||
|
|
|
@ -173,6 +173,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "Téléchargement du préchargement de Kubernetes {{.version}}...",
|
||||
"Downloading VM boot image ...": "Téléchargement de l'image de démarrage de la VM...",
|
||||
"Downloading driver {{.driver}}:": "Téléchargement du pilote {{.driver}} :",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "Durée jusqu'à l'expiration du certificat minikube, par défaut à trois ans (26280h).",
|
||||
"ERROR creating `registry-creds-acr` secret": "ERREUR lors de la création du secret `registry-creds-acr`",
|
||||
"ERROR creating `registry-creds-dpr` secret": "ERREUR lors de la création du secret `registry-creds-dpr`",
|
||||
|
@ -1007,7 +1008,8 @@
|
|||
"{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: Suggestion: {{ .suggestion}}",
|
||||
"{{ .name }}: {{ .rejection }}": "{{ .name }} : {{ .rejection }}",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "{{.Driver}} utilise actuellement le pilote de stockage {{.StorageDriver}}, envisagez de passer à overlay2 pour de meilleures performances",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "{{.addon}} est un module complémentaire tiers et non maintenu ou vérifié par les mainteneurs de minikube, activez-le à vos risques et périls.",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "{{.addon}} est un module complémentaire tiers et non maintenu ou vérifié par les mainteneurs de minikube, activez-le à vos risques et périls.",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "{{.addon}} est un addon maintenu par {{.maintainer}}. Pour toute question, contactez minikube sur GitHub.\nVous pouvez consulter la liste des mainteneurs de minikube sur : https://github.com/kubernetes/minikube/blob/master/OWNERS",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "{{.addon}} est maintenu par {{.maintainer}} pour tout problème, contactez {{.verifiedMaintainer}} sur GitHub.",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "{{.count}} nœud{{if gt .count 1}}s{{end}} arrêté{{if gt .count 1}}s{{end}}.",
|
||||
|
|
|
@ -163,6 +163,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "ロード済み Kubernetes {{.version}} をダウンロードしています...",
|
||||
"Downloading VM boot image ...": "VM ブートイメージをダウンロードしています...",
|
||||
"Downloading driver {{.driver}}:": "{{.driver}} ドライバーをダウンロードしています:",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "minikube 証明書の有効期限。デフォルトは 3 年間 (26280h)。",
|
||||
"ERROR creating `registry-creds-acr` secret": "`registry-creds-acr` シークレット作成中にエラーが発生しました",
|
||||
"ERROR creating `registry-creds-dpr` secret": "`registry-creds-dpr` シークレット作成中にエラーが発生しました",
|
||||
|
@ -966,7 +967,8 @@
|
|||
"zsh completion.": "zsh のコマンド補完です。",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "{{ .name }}: 提案: {{ .suggestion}}",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "{{.Driver}} は現在 {{.StorageDriver}} ストレージドライバーを使用しています。性能向上のため overlay2 への切替を検討してください",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "{{.count}} 台のノードが停止しました。",
|
||||
|
|
|
@ -182,6 +182,7 @@
|
|||
"Downloading VM boot image ...": "가상 머신 부트 이미지 다운로드 중 ...",
|
||||
"Downloading driver {{.driver}}:": "드라이버 {{.driver}} 다운로드 중 :",
|
||||
"Downloading {{.name}} {{.version}}": "{{.name}} {{.version}} 다운로드 중",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "",
|
||||
"ERROR creating `registry-creds-acr` secret": "registry-creds-acr` secret 생성 오류",
|
||||
"ERROR creating `registry-creds-dpr` secret": "`registry-creds-dpr` secret 생성 오류",
|
||||
|
@ -1037,7 +1038,8 @@
|
|||
"zsh completion.": "",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} nodes stopped.": "{{.count}}개의 노드가 중지되었습니다.",
|
||||
|
|
|
@ -182,6 +182,7 @@
|
|||
"Downloading VM boot image ...": "Pobieranie obrazu maszyny wirtualnej ...",
|
||||
"Downloading driver {{.driver}}:": "",
|
||||
"Downloading {{.name}} {{.version}}": "Pobieranie {{.name}} {{.version}}",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "",
|
||||
"ERROR creating `registry-creds-acr` secret": "",
|
||||
"ERROR creating `registry-creds-dpr` secret": "",
|
||||
|
@ -1043,7 +1044,8 @@
|
|||
"{{ .name }}: Suggestion: {{ .suggestion}}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addonName}} was successfully enabled": "{{.addonName}} został aktywowany pomyślnie",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "",
|
||||
|
|
|
@ -161,6 +161,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "Скачивается Kubernetes {{.version}} ...",
|
||||
"Downloading VM boot image ...": "",
|
||||
"Downloading driver {{.driver}}:": "",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "",
|
||||
"ERROR creating `registry-creds-acr` secret": "",
|
||||
"ERROR creating `registry-creds-dpr` secret": "",
|
||||
|
@ -960,7 +961,8 @@
|
|||
"zsh completion.": "",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "Остановлено узлов: {{.count}}.",
|
||||
|
|
|
@ -161,6 +161,7 @@
|
|||
"Downloading Kubernetes {{.version}} preload ...": "",
|
||||
"Downloading VM boot image ...": "",
|
||||
"Downloading driver {{.driver}}:": "",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "",
|
||||
"ERROR creating `registry-creds-acr` secret": "",
|
||||
"ERROR creating `registry-creds-dpr` secret": "",
|
||||
|
@ -960,7 +961,8 @@
|
|||
"zsh completion.": "",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "",
|
||||
|
|
|
@ -208,6 +208,7 @@
|
|||
"Downloading VM boot image ...": "正在下载 VM boot image...",
|
||||
"Downloading driver {{.driver}}:": "正在下载驱动 {{.driver}}:",
|
||||
"Downloading {{.name}} {{.version}}": "正在下载 {{.name}} {{.version}}",
|
||||
"Due to DNS issues your cluster may have problems starting and you may not be able to pull images\nMore details available at: https://minikube.sigs.k8s.io/docs/drivers/qemu/#known-issues": "",
|
||||
"Duration until minikube certificate expiration, defaults to three years (26280h).": "",
|
||||
"ERROR creating `registry-creds-acr` secret": "",
|
||||
"ERROR creating `registry-creds-dpr` secret": "创建 `registry-creds-dpr` secret 时出错",
|
||||
|
@ -1153,7 +1154,8 @@
|
|||
"zsh completion.": "",
|
||||
"{{ .name }}: Suggestion: {{ .suggestion}}": "",
|
||||
"{{.Driver}} is currently using the {{.StorageDriver}} storage driver, consider switching to overlay2 for better performance": "",
|
||||
"{{.addon}} is a 3rd party addon and not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} does not currently have an associated maintainer.": "",
|
||||
"{{.addon}} is a 3rd party addon and is not maintained or verified by minikube maintainers, enable at your own risk.": "",
|
||||
"{{.addon}} is an addon maintained by {{.maintainer}}. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS": "",
|
||||
"{{.addon}} is maintained by {{.maintainer}} for any concerns contact {{.verifiedMaintainer}} on GitHub.": "",
|
||||
"{{.count}} node{{if gt .count 1}}s{{end}} stopped.": "",
|
||||
|
|
Loading…
Reference in New Issue