-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Fix issues with older versions of k8s for basic clusters #8248
Conversation
Hi @hakman. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/assign @rifelpet |
@hakman: GitHub didn't allow me to request PR reviews from the following users: johngmyers. Note that only kubernetes members and repo collaborators can review this PR, and authors cannot review their own PRs. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/ok-to-test |
I was able to create a validated cluster with Kubernetes 1.10.13. 1.9.11 did not come up. If it's been broken with nobody complaining, I'm not sure the value of fixing it. Is it broken in kops 1.15? |
@johngmyers anything 1.12+ should be ok. The value is only for minimum supported version. If we want to say 1.9+, these should be fixed. Otherwise, minimum supported version should be 1.12. |
Appears to have been broken in kops 1.15.0 per this commit |
The change is minimal enough. No objections. |
I'd like to discuss this at office hours today. It seems that our two options are to either fix the broken support for these older k8s versions or update our deprecation policy to drop those versions as well. |
Agreed @rifelpet. In any case, best to know what the blockers are first. |
With @rifelpet's help, e2e tests for older versions are up and running. Tweaks are still needed, but we can see what versions at least come up In some 1.11 jobs, the clusters are up enough to run some tests, but
For some reason the tests don't validate the cluster before preceding, maybe we should add this instead of the simple |
Based on discussions we had at last office hours, assigning to Justin to check why PodPriority is needed. |
We need |
The PR for the aforementioned commit was #6897. Looks like it got cherry-picked back to kops 1.13. |
So I dug into this. As @hakman pointed out there are two things happening:
I think we now have more testing for older versions (thanks @rifelpet and @hakman), and we understand how this happened. The other option to the fix in this PR is to not set the PodPriorityClass for the older versions of k8s (before 1.11) - i.e. either skip MarkPodAsClusterCritical or pass in the cluster and have it be a no-op for older clusters versions. As we're likely dropping support for < 1.11 very soon, this would only matter for a cherry pick of this PR; arguably it is more consistent with our policy of not changing existing versions. But OTOH it's already broken... |
I don't recall our deprecation policy as intending to take on a new requirement to fix preexisting brokenness in handling ancient versions. I don't object to taking a fix as minimal as this PR, but I would not want to spend the effort fixing, say, kops 1.16's handling of k8s 1.6. I think adding logic to make the setting of podPriorityClass conditional on version (and presumably whether the feature gate is enabled) would be a bit much, especially since we haven't yet gotten an actual user complaint. |
In theory, checking the k8s version before using MarkPodAsClusterCritical() should be pretty simple. In practice, for etcd is not so trivial. I can't find a simple way to check the Kubernetes version here: kops/protokube/pkg/protokube/etcd_manifest.go Line 168 in ff29cab
Unless there is something I'm missing, the feature gate is the simplest way to get things working again for 1.9 and 1.10. |
@justinsb removed the PodPriority part from this, will create a separate PR for explaining that 1.9 requires PodPriority feature gate. |
/retest |
/lgtm |
/retest |
Release notes added for PodPriority feature gate requirement for Kubernetes 1.9. I think this is now in line with what we discussed in office hours. |
/lgtm |
/approve |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: hakman, rifelpet 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 |
…-origin-release-1.17 Automated cherry pick of #8248: Fix issues with older versions of k8s for basic clusters
…-origin-release-1.16 Automated cherry pick of #8248: Fix issues with older versions of k8s for basic clusters
…-origin-release-1.15 Automated cherry pick of #8248: Fix issues with older versions of k8s for basic clusters
Currently, Kops is not able to start a basic cluster with Kubernetes < 1.12 for a few reasons:
{}