部署--前端服务健康检查

9/7/2021 Kubernetes

# pod 健康检查--探针

livenessProbe(存活探针):容器是否正在运行,如果存活探测失败,则 kubelet 会杀死容器,并进行重启机制;

readinessProbe(就绪探针):判断容器是否准备好接受请求,如果就绪探测失败,端点控制器将从与 Pod 匹配的所有 Service 的端点中删除该 Pod 的 IP 地址

  • Probe三种检查方法

    • exec:在容器内执行 指定一段命令。如果命令退出时 返回码为 0 则认为诊断成功。
    • tcpSocket:对指定端口上的容器的IP地址 进行TCP检查(三次握手)。如果端口打开,TCP 连接成功,则诊断被认为是成功的。
    • httpGet:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码在 200~400 之间,则诊断被认为是成功的。监测的是 路径上的文件在不在。
# yaml 文件
  readinessProbe:
    httpGet:
      path: /healthcheck
      port: 80
    initialDelaySeconds: 10
    periodSeconds: 20
  livenessProbe:
    httpGet:
      path: /healthcheck
      port: 80
    initialDelaySeconds: 10
    periodSeconds: 20
 
# default.conf
location ~ ^/healthcheck {
    access_log /var/log/nginx/health_access.log main;
    default_type text/html;
    return 200 'ok!';
}

# vue路由配置
{
  path: '/healthcheck',
  component: resolve => require(['../views/404.vue'], resolve)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  • 在vue项目中,路由增加/healthcheck路径,随便指向一个页面;

  • nginx配置文件--路径如果包含/healthcheck,则返回状态码200;

  • k8s的yaml文件--存活探针和就绪探针,让其执行 HTTP Get请求/healthcheck。