购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.8.1 存活探针

存活探针用于周期性监控应用程序是否运行。存活探针配置如下:

在上述配置中,“livenessProbe”部分定义了存活探针,各字段含义如下。

httpGet:发送HTTP请求来判断健康状态。

· path:访问路径,默认是“/”。

· port:请求端口。

此外,还可以指定:

· host:请求的IP地址,默认是Pod IP。

· scheme:请求协议,支持HTTP和HTTPS,默认是HTTP。

· httpHeaders:自定义HTTP头。

initialDelaySeconds:容器启动后等待多少秒开始执行探针,这通常根据应用程序的启动时间来设置。

periodSeconds:执行探针的时间间隔(单位秒),默认是10秒。

综上所述,kubelet将在容器启动10秒后发送第一个探针,该探针向地址“http://<Pod IP>:80/index.html”发送HTTP请求。如果响应的HTTP状态码不是200~400,则kubelet组件判定探针失败,触发重新启动容器。随后,每间隔20秒执行一次存活探针。

创建Pod资源:

     [root@k8s-master ~]# kubectl apply -f pod-liveness.yaml

通过“kubectl logs pod-liveness”命令查看Pod日志,将看到探针发送的HTTP请求日志,如下所示:

  192.168.1.73 - - [12/Jun/2023:06:06:20 +0000] "GET /index.html HTTP/1.1"
200 615 "-" "kube-probe/1.26" "-"

我们尝试模拟应用程序故障,看看会发生什么。

删除容器中的“index.html”文件,使其无法被访问:

    [root@k8s-master ~]# kubectl exec -it pod-liveness -- rm -f /usr/share/
  nginx/html/index.html

在Pod日志中,你将看到访问请求失败的日志,如下所示:

    192.168.1.72 - - [22/Dec/2023:02:27:26 +0000] "GET /index.html HTTP/1.1"
  404 153 "-" "kube-probe/1.28" "-"

查看Pod事件,你也可以看到探针执行失败并触发重新启动容器:

同时,Pod对象中记录了重新启动的次数:

如果下一次探针仍然失败,则继续执行相同的操作。

实际上,重新启动容器的过程就是销毁并重新创建当前容器,以将其恢复到初始状态。 nkLpRy/FwrfhKgqGxI2jrkuOmEH7h3EqMZqujvU5kV9SmVXSPyctjz8Mz4pnNhsX

点击中间区域
呼出菜单
上一章
目录
下一章
×