-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support multi-control plane - HA clusters #17909
Conversation
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: prezha The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/ok-to-test |
This comment has been minimized.
This comment has been minimized.
TestValidatePorts unit test failure will be fixed in pr #17906 |
there is one gotcha with kubeadm 1.29 and kube-vip as discussed, the fix can be added on the kube-vip side. |
thank you for this PR I will look forward to review this ! thank you. @prezha |
thanks, @neolit123, for pointing that out, we'll look into the details |
This comment has been minimized.
This comment has been minimized.
taking into account this comment, the latest commit contains a testrun
TestHA passed - logs://cc: @neolit123 |
This comment has been minimized.
This comment has been minimized.
i wonder why Line 3 in 49595dc
Line 38 in 49595dc
|
@prezha The issue is that the prow image was built with Go 1.20.6 but the slices package was added in Go 1.21, I'll build a new version of the prow |
https://pkg.go.dev/path: "The path package should only be used for paths separated by forward slashes, such as the paths in URLs. This package does not deal with Windows paths with drive letters or backslashes; to manipulate operating system paths, use the path/filepath package." - user os can be eg, windows => use 'filepath' to reference local paths - kic/iso use linux os => use 'path' to reference "internal" paths (independently of user's os)
@spowelljr thanks for clarifying! |
@prezha would u please take a look at the HA tests failing on all the drivers (except Qemu)
These are the flake rates of all failed tests.
|
@medyagh not sure where you see that: all the ha tests ran against the previous commit (cc4dc8c) have passed but for Hyper-V_Windows, partially KVM_Linux_crio (vm node shutdown timeout) and QEMU_macOS (probably an irrelevant issue: 'Failed to connect to "/var/run/socket_vmnet": Connection refused')? |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This reverts commit 0919c45.
This comment has been minimized.
This comment has been minimized.
This reverts commit ca3119b.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
@prezha can you plz take a look at the KVM test failures for the HA tests? https://storage.googleapis.com/minikube-builds/logs/17909/33398/KVM_Linux_containerd.html |
/retest-this-please |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
kvm2 driver with docker runtime
Times for minikube start: 51.9s 49.3s 53.2s 49.5s 49.7s Times for minikube ingress: 26.2s 24.0s 26.0s 22.7s 26.0s docker driver with docker runtime
Times for minikube start: 24.7s 23.8s 24.9s 21.6s 22.6s Times for minikube ingress: 20.8s 20.8s 20.8s 19.8s 20.8s docker driver with containerd runtime
Times for minikube start: 21.6s 20.3s 23.8s 23.5s 21.2s Times for minikube ingress: 48.3s 32.3s 30.3s 30.3s 30.3s |
These are the flake rates of all failed tests.
Too many tests failed - See test logs for more details. To see the flake rates of all tests by environment, click here. |
do you mind adding some details in the PR description how does the Load Balancing the control plane work (for refernce for future) |
Thank you @prezha for this PR this been long waited feature for minikube and I look forward for us to iron the follow ups to this PR and fix up the rough edges before the release before KubeCon Great work |
fixes #17908
fixes #17509
fixes #17680
closes #17681
fixes #17685
fixes #7366
summary
improvements introduced in this pr
minikube start --ha
flag and new APIServerHAVIP ClusterConfig/KubernetesConfig param (reserving & taking the last ip in allocated nodes' subnet)minikube profile list
:Degraded
(with two control-plane nodes) andHAppy
(three+ control-plane nodes) to indicate specific ha cluster statesbackup
/restore
kubernetes & cni config for ha with ephemeral vm (iso-based) nodes, essential for ha to come up after cluster restart (see "further potential improvements" below for details)potential further "minikube ha cluster improvements" for other PRs (we can have a separate tracking issue for these)
minikube
can be used to try & test ha cluster topology (refs: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/ and https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/)minikube node add --control-plane
flag to support upgrading non-ha to ha cluster would be beneficial for our usersrefs:
some after examples (more are covered in TestHA integration tests)