什么是探针
探针是一种用于探测、检测、测量或监测某些物理或化学性质的工具或设备,通常由一个或多个传感器和一个数据采集和处理单元组成。探针可以被用于各种应用,例如对生物体进行检测、监测环境污染、测试材料性能等。在计算机领域中,探针也可以指一种用于监测应用程序或系统性能的工具。
K8S的3大探针
Liveness
存活探针可以检查容器是否存活,是否需要重新启动容器;有助于提高应用的可用性。
Readiness
就绪探针只有等容器可以提供服务了,才会使用K8S的服务注册机制提供服务,例如:service后端的pod,只有就绪探针没有问题才能提供服务。(如果应用有自己的注册中心,这个配置估计达不到想象中的效果)
Startup
启动探针可以了解容器何时准备启动,如果配置了这类探针,你就可以控制容器在启动成功后再进行存活性和就绪态检查, 确保这些存活、就绪探针不会影响应用的启动。 启动探针可以用于对慢启动容器进行存活性检测,避免它们在启动运行之前就被杀掉。
K8S探针探测的4大形式
脚本
定义一组需要容器内执行的脚本命令
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness
image: registry.k8s.io/busybox
args:
- /bin/sh
- -c
- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
执行如下命令
/bin/sh -c "touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600"
http
container需要提供http get接口,kubelet会调用http请求,根据response status来判断之后的操作。
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
tcp
测试端口的连通性,判断进程是否可用
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-http
spec:
containers:
- name: liveness
image: registry.k8s.io/liveness
args:
- /server
livenessProbe:
httpGet:
path: /healthz
port: 8080
httpHeaders:
- name: Custom-Header
value: Awesome
initialDelaySeconds: 3
periodSeconds: 3
gRPC
开启GRPCContainerProbe来支持grpc调用
apiVersion: v1
kind: Pod
metadata:
name: etcd-with-grpc
spec:
containers:
- name: etcd
image: registry.k8s.io/etcd:3.5.1-0
command: [ "/usr/local/bin/etcd", "--data-dir", "/var/lib/etcd", "--listen-client-urls", "http://0.0.0.0:2379", "--advertise-client-urls", "http://127.0.0.1:2379", "--log-level", "debug"]
ports:
- containerPort: 2379
livenessProbe:
grpc:
port: 2379
initialDelaySeconds: 10