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
Pet Set in beta #28718
Comments
Sticky ips ;) I don't think Cassandra and other tech is going to play nice without ip addresses. Java DNS is hosed, and products that have been around awhile are still using ip addresses. I think Elastic does as well. Need to check. |
Btw unless someone gets to it, I will ask if my client, or I can contribute Kafka on pet set. We are going to be using it in production soon. |
Go for it. Keep communicating hurdles you run into.
Duly noted. grr. |
@bprasanth you need an issue for sticky ip addresses? |
We've had lots of very positive results with low TTL DNS in Java with JBoss On Fri, Jul 8, 2016 at 7:44 PM, Chris Love notifications@github.com wrote:
|
I'd put reducing the complexity required to make a "correct" petset at the On Fri, Jul 8, 2016 at 7:48 PM, Clayton Coleman ccoleman@redhat.com wrote:
|
@smarterclayton it is about if it can be fixed, it is about how distributed systems have implemented it. I need to check on elastic, but I am 90% certain that Cassandra is not going to fix it. Going to file an issue with them anyways. |
This is less of a problem for modern databases like etcd, but it is a problem by and large. With a better event model the system can pass down observations about the current state of the cluster to individual members. The exact events will probably depend on the type of PetSet. Obviously we can't have a type=Cassandra, and say, "tell me when the seeds are down", but we can say something like "index 0,1" are always seeds, send all members of the set a role based event if they fail a probe. This requires bidirectional event/response infrastructure. I think the easiest way to do this is with a sidecar (might need shared pid namespaces). For example we could add the following fields to petset checkIndices: 0
jsonProbe:
httpGet:
path: / Where the json probe returns whatever metadata a member needs to elect itself into that role, if any (eg: transaction id). All the sidecars would then heartbeat the probe, and race for the position on failure. The winner writes their index into checkIndices and the process continues. Did you mean something like this? Getting it right is tricky (shortcomings of a http health check, flapping leaders, leader resurrection etc), but it's probably what a lot of people are doing themselves. |
@kubernetes/huawei |
ElasticSearch uses dedicated k8s plugin for node discovery. We are using it now in k8s 1.2 and we don't need sticky IPs for that. |
@haizaar you know of any other use case by any chance? |
No :( We are ES-only shop.
|
Ceph Monitors and etcd need sticky IPs as far as I know. Or at least fixed dns names. Currently i use a service per 1 Pod deployment with hostpath volume and node Selector. |
Petset already gives you fixed dns names http://kubernetes.io/docs/user-guide/petset/#network-identity. If you have some working form of ceph with petset I'd be glad to help work out the kinks/understand what we need to grow petset. I believe theres a prototype etcd in the works: kubernetes-retired/contrib#1295 |
@damoon I am looking for a use case that requires IP addresses to be sticky. Otherwise, I will not ask for it. I think we are coming up dry. |
@bprashanth what about autoscaling, and deletes? Do we want to keep Pet Set deletions manual? |
Most pets are not going to run amock in the 1000s. For those that do, you can write a custom autoscaler. Ideally we would integrate with HPA but unless someone has hard use cases for a broad category of pets that need autoscaling I'm tempted to punt on that for beta. we should add a flag that allows auto-GC of the pvc when a pet is killed. |
@bprashanth I kinda don't agree. These are persistent data stores, and having autoscaling based on memory or cpu would be HUGE. These apps are the backbone of most systems, and often scaling challenge. |
HPA is already aware of how to scale RCs, teaching it to bump up the replica count on a petset can happen without any additional features or api changes, if someone does the plumbing. @kubernetes/autoscaling autoscaling cross zone/region is a different story (i.e mysql-us-central is saturated, spin up a new petset for mysql-asia and have it replicate data). For that we need WAN deployment prototypes. |
Not probably - are, and having to rediscover every failure. Distributed On Sat, Jul 9, 2016 at 8:06 PM, Prashanth B notifications@github.com
|
ceph: http://docs.ceph.com/docs/hammer/rados/operations/add-or-rm-mons/#changing-a-monitor-s-ip-address ceph mons NEED static ips etcd: fixed dns names are good enough. but it seems, a dns request from a pod targeting itself fails for some reason. seems kubedns tries to prevent services to call themself recursively. |
Lets maintain a list of apps that needs ip on the sticky ips bug (#28969) so we can at least start by cautioning users in documentation. Currently you can create a Service pet pet for sticky ips. @damoon can you comment on the deployment style you'd use for ceph. It sounds like one might want to run ceph as a daemon set and only the monitors as a petset, if petset had sticky ips? |
i think the petset can join the concept of (
what's more, we can supply a common image(like peer) to find every role's identity information(like dns-name etc.) by init-containers, and store these information to a specific config file, so users can get these information from the config file, start their apps by themselves. |
@bprashanth basically when it comes to ceph monitor nodes, once they get deployed their IP address can not be changed. That's why we need sticky IP addresses. Other components can have their IP changed. |
My take on beta: Before Code Freeze:
After Code Freeze but before 1.5:
Right after 1.5:
Soon after that:
Everything else is for second beta or GA or not doing. |
Theres something else we (well I) kind-of (read: completely) forgot. There's a useful feature we added to Services. The annotations is shown in many petset examples: https://github.com/kubernetes/kubernetes/blob/master/test/e2e/testing-manifests/petset/zookeeper/service.yaml#L6 It enables pets to make decisions about their peers being ready/unready using internal protocols, so eg: a http readiness probe timeout doesn't end up removing the DNS records for zookeeper-0, forcing a re-election. You can still create petsets without this annotation, of course, just don't give them a readiness probe. But that means no service can leverage the magic of a readiness probe (i.e there are 2 kinds of services, the governing Service, which always needs DNS, and any other type of overlay Service, which should ideally not direct traffic to an "unhealthy" pet). Thoughts on renaming this to |
Guys this is a show stopper #33727 can we get it in by code freeze and back ported. We are about to go into prod with a bunch of pets, and seamless upgrades are super important to our sla. |
for us, being able to get the index/ordinal in an environment variable would be very useful. #30427 is tracking this and it would be great if it was included for 1.5 |
The API changes are too significant and we're past the window for that (in On Mon, Oct 31, 2016 at 3:30 PM, Alex Ouzounis notifications@github.com
|
Automatic merge from submit-queue Move Statefulset (previously PetSet) to v1beta1 **What this PR does / why we need it**: #28718 **Which issue this PR fixes** _(optional, in `fixes #<issue number>(, #<issue_number>, ...)` format, will close that issue when PR gets merged)_: fixes # **Special notes for your reviewer**: depends on #35663 (PetSet rename) cc @erictune @foxish @kubernetes/sig-apps **Release note**: ``` release-note v1beta1/StatefulSet replaces v1alpha1/PetSet. ```
I've created a detailed documentation plan for PetSets, to be completed by 1.5 docs freeze: kubernetes/website#1655 |
Moving to 1.6 per @smarterclayton 's comment |
I think Clayton was talking about #28718 (comment). PetSet should be in beta under the alias "StatefulSet" in 1.5. I'll leave it to the people actively working on the transition to decide when to close this, and what to migrate out into a "PetSet in GA" bug. |
Ack @bprashanth At least it does not sound like a stop ship for 1.5, so marking as non-release-blocker. Please correct if i am mistaken. |
I need this in my Production life. |
@bprashanth @foxish Is it appropriate to move this to the next milestone or clear the 1.5 milestone? (and remove the non-release-blocker tag as well) |
petset is beta in 1.5 and I think all issues discussed here have spin off bugs |
Important petset issues in no particular order:
IMO the following features would make PetSet more usable and should gate beta:
Richer events would be really nice but I don't think it blocks beta unless we need it for 2 or 3. Lack of public ips will probably block WAN deployments.
@smarterclayton @kubernetes/sig-apps anything else?
The text was updated successfully, but these errors were encountered: