-
Notifications
You must be signed in to change notification settings - Fork 39k
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
StatefulSet should allow optional burst mode (don't wait for readiness) #39363
Comments
Same as #39207. We encountered this problem for a while... IMHO, this doesn't mean that we need to change readiness guarantee. But we need a special phase that isn't coupled to networking and we can use it to check service has been bootstrapped. |
If you set the annotation for tolerate unready you should see DNS entries almost instantly. Can you double check that? |
You mean this field?
Didn't realize it. Will give a try! |
@smarterclayton What do you think about |
See the other petset examples: https://github.com/kubernetes/charts/blob/master/incubator/zookeeper/templates/zookeeper-petset.yaml#L12 and #25283, #37093 |
That would break existing applications. Readiness is a good thing, it's
unusual for software to tolerate unreadiness. Tolerate-unready-endpoint
also breaks deployments (you'd have things taking traffic that can't serve
it)
…On Wed, Jan 4, 2017 at 6:42 AM, Prashanth B ***@***.***> wrote:
See the other petset examples: https://github.com/kubernetes/
charts/blob/master/incubator/zookeeper/templates/zookeeper-petset.yaml#L12
and #25283 <#25283>, #37093
<#37093>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#39363 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ABG_pzKPEcMGw574bQHO1K5JMMZgHEfbks5rO4WvgaJpZM4LZVwL>
.
|
@hongchaodeng Can we close this issue as resolved? |
There's been some discussion that for a subset of apps the SS controller should be able to fill out gaps more quickly - to not wait for readiness to continue. We'd need to clearly explain what the risks are for that:
The benefit of such a change would be that for apps that can form stable quorums safely they can do so much more quickly. For instance, and etcd set of 3 with an env var EXPECT_INITIAL=3 could only allow 0-2 to join before 3+ joins. And could disallow 5-6 from joining until 3-4 check in. This would also allow readiness to be more effective (pod is ready once it joins quorum, instead of before). This is something that would have to be opt in and may have implications for future update scenarios (we'd want to talk through that before adding anything beyond an alpha feature). @kubernetes/sig-apps-feature-requests for additional opinions and comments. Was raised to be in the context of ES data nodes (which are non-voting) and AP stores which don't assume quorum is even possible (like infinispan). I'd be willing to endorse an alpha annotation that allows SS to proceed to create new pods in this fashion. |
(Im repurposing this since in spirit both outcomes described are desirable) |
Relevant to #38418 - same problem as I described above in a different form. |
@smarterclayton I think #38418 is somewhat separate, but I concur that we should allow an annotation that optimizes for burst roll outs. |
Yeah, that works for me. We could consider "burst: majority" or a percentage to allow someone who isn't dependent on ordering to ensure that the controller will keep trying to fill the slots to achieve a majority even if the rate of evictions > rate of renewal. But burst=all would be the first knob to try probably. |
Moving to 1.7 as late to happen in 1.6. Feel free to switch back if this is incorrect. |
@smarterclayton @hongchaodeng Just to clarify, |
Correct. I was going to open a PR for the bursting if I get a chance in the next few days. |
That's awesome. After getting started with StatefulSets, I can definitely
see why this feature is important. I really appreciate all this great work
from the community. Everytime I need something, it is is either already in
K8s, or being worked on. It's amazing!
…On Mon, Apr 24, 2017 at 12:09 PM, Clayton Coleman ***@***.***> wrote:
Correct. I was going to open a PR for the bursting if I get a chance in
the next few days.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#39363 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAbbLi6o_g7AJvHCMbXm6Q1wHiBOJ6Fmks5rzOVQgaJpZM4LZVwL>
.
|
The original purpose of this issue seems to be addressed by |
Bursting was implemented in 1.7 in alpha and will be beta in 1.8. |
Is this a request for help? (If yes, you should use our troubleshooting guide and community support channels, see http://kubernetes.io/docs/troubleshooting/.): No
What keywords did you search in Kubernetes issues before filing this one? (If you have found any duplicates, you should instead reply there.):
Petset
DNS
StatefulSet
Is this a BUG REPORT or FEATURE REQUEST? (choose one): BUG REPORT
Kubernetes version (use
kubectl version
): 1.5.1Environment:
What happened:
DNS appears to not register host names for petset members (e.g. mongo-0.mongo...) until that Pod passes a readiness check.
This is problematic because you may want to configure everything to use that hostname (e.g. registering a replication participant with mong) prior to declaring that the cluster is ready.
Given that there is nothing about readiness in the DNS address (unlike a traditional Service) we
should register DNS before the Pod is "ready".
I suspect this is because we are re-using the standard endpoints controller here, we probably need
a special case for stateful set.
How to reproduce it (as minimally and precisely as possible):
Create a StatefulSet with a readiness delay of 20 seconds.
Exec into the pod and try to resolve the DNS address of the Pod
observe it fails.
Wait until the Pod is ready
observe it works.
Anything else do we need to know:
Nope
@bprashanth @smarterclayton
The text was updated successfully, but these errors were encountered: