mirror of https://github.com/dapr/docs.git
Merge pull request #479 from dapr/healthDoc
Adding doc on Kubernetes health Probe configuration with Dapr /healthz
This commit is contained in:
commit
306ae0f3ec
|
|
@ -0,0 +1,79 @@
|
|||
# Dapr Health
|
||||
|
||||
Dapr now provides a way to determine it's health using HTTP /healthz endpoint.
|
||||
With that capability, Dapr process or side car can be probed for its readiness and liveness.
|
||||
|
||||
Refer Dapr for health API spec [here](../../reference/api/health_api.md)
|
||||
|
||||
Dapr `/healthz` endpoint can be used for health probes with any orchestrator and it is not tied to kubernetes only.
|
||||
|
||||
However in this document, you will read about readiness/liveness in Kubernetes and how the Dapr side car is
|
||||
injected with that kubernetes probe configuration using the Dapr health endpoint.
|
||||
|
||||
## Kubernetes Liveness and Readiness
|
||||
|
||||
Kubernetes uses Readiness and Liveness probes to determines the health of the container.
|
||||
|
||||
The kubelet uses liveness probes to know when to restart a container.
|
||||
|
||||
For example, liveness probes could catch a deadlock, where an application is running, but unable to make progress. Restarting a container in such a state can help to make the application more available despite bugs.
|
||||
|
||||
The kubelet uses readiness probes to know when a container is ready to start accepting traffic.
|
||||
A Pod is considered ready when all of its containers are ready. One use of this signal is to control which Pods are used as backends for Services. When a Pod is not ready, it is removed from Service load balancers.
|
||||
|
||||
|
||||
### Configure Liveness probe in Kubernetes
|
||||
|
||||
In the Pod configuration file, liveness probe is added in the containers spec section as below :
|
||||
|
||||
```
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8080
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 3
|
||||
```
|
||||
|
||||
In the above example, the periodSeconds field specifies that the kubelet should perform a liveness probe every 3 seconds. The initialDelaySeconds field tells the kubelet that it should wait 3 seconds before performing the first probe. To perform a probe, the kubelet sends an HTTP GET request to the server that is running in the container and listening on port 8080. If the handler for the server’s /healthz path returns a success code, the kubelet considers the container to be alive and healthy. If the handler returns a failure code, the kubelet kills the container and restarts it.
|
||||
|
||||
Any code greater than or equal to 200 and less than 400 indicates success. Any other code indicates failure.
|
||||
|
||||
### Configure Readiness probe in Kubernetes
|
||||
|
||||
Readiness probes are configured similarly to liveness probes. The only difference is that you use the readinessProbe field instead of the livenessProbe field.
|
||||
|
||||
```
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /healthz
|
||||
port: 8080
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 3
|
||||
```
|
||||
|
||||
### Dapr Side Car Container Health with Kubernetes
|
||||
|
||||
As Dapr now has its HTTP health endpoint `/v1.0/healthz` port 3500 , this can be used with Kubernetes for readiness and liveness probe. When the Dapr side car is injected , the readiness and liveness probes are configured in the pod configuration file.
|
||||
|
||||
```
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: v1.0/healthz
|
||||
port: 3500
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
timeoutSeconds : 5
|
||||
failureThreshold : 3
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: v1.0/healthz
|
||||
port: 3500
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 10
|
||||
timeoutSeconds : 5
|
||||
failureThreshold: 3
|
||||
```
|
||||
|
||||
Please refer the above Dapr Kubernetes probe configuration parameters [here](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/).
|
||||
|
||||
Loading…
Reference in New Issue