| ▲ | stackskipton 3 hours ago | ||||||||||||||||||||||||||||||||||||||||
SRE here, Strong disagree with do not fail readiness and liveness checks on upstream dependencies failing. There are several reason to do so and unless you have extreme start up time, what's the problem with restarting? Maybe DNS has changed on you but you are stuck with bad local cache because you poorly respect TTLs (Looking at you Java), reseting the process will clear that cache away. Maybe TCP connections are in stuck weird state, resetting the process generally helps with that. Maybe someone gave you bad ENV VARs and you cannot connect to database, by refusing to progress the rollout, no outage generated. So yea, if you are not ready to do work including critical upstream dependencies, don't lie to system and say you are. | |||||||||||||||||||||||||||||||||||||||||
| ▲ | dilyevsky 2 hours ago | parent | next [-] | ||||||||||||||||||||||||||||||||||||||||
1. was already mentioned in sibling - cascade failures 2. you'll have massive number of restarts for various flake reasons and missing things that got papered over with restarts until you hit 1 and everything is broken. another popular version of this is "just restart when memory leaks too much" | |||||||||||||||||||||||||||||||||||||||||
| ▲ | arccy 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
Thundering herd / cascading outages. You take out a large enough portion of your fleet, and the remaining load overloads your remaining nodes one by one as they restart, so you can never have enough healthy nodes. | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
| ▲ | figmert an hour ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
My favourite: misconfigured Linkerd setup that causes CA certs to rotate every month :) Definitely worth restarting on that | |||||||||||||||||||||||||||||||||||||||||
| ▲ | peterabbitcook 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
What are your feelings about using initContainers and wait-for-it to skirt the thundering-herd problem? | |||||||||||||||||||||||||||||||||||||||||
| ▲ | connicpu an hour ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
The better solution is to not have too many critical upstream services :) | |||||||||||||||||||||||||||||||||||||||||
| ▲ | cmckn 2 hours ago | parent | prev | next [-] | ||||||||||||||||||||||||||||||||||||||||
> what's the problem with restarting? Exponential backoff can delay recovery up to kubelet’s maxContainerRestartPeriod (default 5m). | |||||||||||||||||||||||||||||||||||||||||
| ▲ | javier2 2 hours ago | parent | prev [-] | ||||||||||||||||||||||||||||||||||||||||
cascading failures on upstream services. then you get 20 different services failing instead of the single one. | |||||||||||||||||||||||||||||||||||||||||