Differences between istio outlier detection and readiness probe

Hey Guys ,

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. Readiness probes are based on configured readiness checks in the container. They are executed by K8s to deterimine if the pod is ready or not. Outlier detection is based on actual request failures - if 5 consecutive requests fail for example, Istio will mark it as outlier and eject it from load balancer pool. So where as the final outcome is that they are removed from load balancer pool, they serve two different purposes.
  2. Yes
  3. If 30s, the pod is added back to pool and requests are served to that pod again. if again 5 consecutive requests fail - it will be ejected for a period of let us 60s (exponential backoff)
  4. Readiness and outlier detection solve two different problems and both are necessary to be configured for better resiliency.