0
votes

I’m a newbie to istio and k8s, recently I’ve been exploring istio outlier detection and I’m kinda confused for couple of things.Please correct me if I’m wrong:

1.Outlier detections are based on pods and readiness probes based on containers? But actually both will remove unhealty pods out of “lb”(svc or subnets’ connection pool )

2.The best scenario I can think of is that , we might configure our readiness probe lets say 30s interval but outlier detection will take the unhealth pod out of pool when they get 5** .

3.The outlier dections will add the pod back after BaseEjectionTime , I presume the case is like , one pod got picked out from pool and then liveness probe shows unhealth and restart the container. After all this the pod is healthy again and added back to the pool ?

4.Ideally if the readiness probe run every second and no false alarms , does that works the same as outlier detections? Or because it needs to talk to apiserver and there might be network latency and scheduler issue blah blah so istio is more efficient ?

5.Just curious how they two work together in production , any best practice ?

Any comments/thoughts are appreciated , thank you everyone !

1

1 Answers

0
votes

The best explanation on how the istio outlier detection works is covered by this article. I recommend reading it.

The health checking probes allow to detect when pod is ready or responds according to specific configuration. Outlier detection on the other hand controls the number of errors before a service is ejected from the connection pool.

When the k8s health checks are failed the pod is restarted. In case of outlier detection, the endpoint that triggered outlier detection is suspended on envoy level and is given time to recover.

There can be a scenario where outlier detection triggers without any changes in k8s heath checks.

Also note that the interval and base ejection times of istio outlier detection are dynamic and can be longer each time they are triggered and not very precise.