Add health check using TCP socket (#8246)

This commit is contained in:
Shamsher Ansari 2020-11-09 22:09:42 +05:30 committed by GitHub
parent dcd0e8c93f
commit 353444de45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 2 deletions

View File

@ -17,8 +17,9 @@ test: yes
[Kubernetes liveness and readiness probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/)
describes several ways to configure liveness and readiness probes including:
1. Command
1. HTTP request
1. [Command](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-command)
1. [HTTP request](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-liveness-http-request)
1. [TCP Probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-a-tcp-liveness-probe)
The command approach works with Istio regardless of whether or not mutual TLS is enabled.
@ -86,6 +87,7 @@ to disable the probe rewrite option. Make sure you add the annotation to the
anywhere else (for example, on an enclosing deployment resource).
{{< text yaml >}}
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
@ -114,6 +116,7 @@ spec:
port: 8001
initialDelaySeconds: 5
periodSeconds: 5
EOF
{{< /text >}}
This approach allows you to disable the health check probe rewrite gradually on individual deployments,
@ -128,6 +131,40 @@ to disable the probe rewrite globally. **Alternatively**, update the configurati
$ kubectl get cm istio-sidecar-injector -n istio-system -o yaml | sed -e 's/"rewriteAppHTTPProbe": true/"rewriteAppHTTPProbe": false/' | kubectl apply -f -
{{< /text >}}
## Liveness probes using the TCP socket
A third type of liveness probe uses a TCP socket.
{{< text yaml >}}
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: liveness-tcp
spec:
selector:
matchLabels:
app: liveness-tcp
version: v1
template:
metadata:
labels:
app: liveness-tcp
version: v1
spec:
containers:
- name: liveness-tcp
image: docker.io/istio/health:example
ports:
- containerPort: 8001
livenessProbe:
tcpSocket:
port: 8001
initialDelaySeconds: 5
periodSeconds: 5
EOF
{{< /text >}}
## Cleanup
Remove the namespace used for the examples:

View File

@ -51,6 +51,7 @@ liveness-6857c8775f-zdv9r 2/2 Running 0 4m
ENDSNIP
! read -r -d '' snip_disable_the_http_probe_rewrite_for_a_pod_1 <<\ENDSNIP
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
@ -79,12 +80,43 @@ spec:
port: 8001
initialDelaySeconds: 5
periodSeconds: 5
EOF
ENDSNIP
snip_disable_the_probe_rewrite_globally_1() {
kubectl get cm istio-sidecar-injector -n istio-system -o yaml | sed -e 's/"rewriteAppHTTPProbe": true/"rewriteAppHTTPProbe": false/' | kubectl apply -f -
}
! read -r -d '' snip_liveness_probes_using_the_tcp_socket_1 <<\ENDSNIP
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: liveness-tcp
spec:
selector:
matchLabels:
app: liveness-tcp
version: v1
template:
metadata:
labels:
app: liveness-tcp
version: v1
spec:
containers:
- name: liveness-tcp
image: docker.io/istio/health:example
ports:
- containerPort: 8001
livenessProbe:
tcpSocket:
port: 8001
initialDelaySeconds: 5
periodSeconds: 5
EOF
ENDSNIP
snip_cleanup_1() {
kubectl delete ns istio-io-health
}