4.1.1 介绍存活探针

liveness probe 检查容器是否仍在运行.

三种探测容器的机制:

image.png
image.png

4.1.2 创建基于 HTTP 的存活探针

image.png

模拟:

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: hello-liveness
  5. spec:
  6. containers:
  7. - image: jdxj/study_kubernetes:v0.2.0
  8. name: test-study-k8s
  9. livenessProbe:
  10. httpGet:
  11. path: /
  12. port: 8080
  13. ports:
  14. - containerPort: 8080
  15. protocol: TCP

4.1.3 使用存活探针

查看 pod:

  • RESTARTS: 重启次数
$ kubectl get po hello-liveness
NAME             READY   STATUS    RESTARTS   AGE
hello-liveness   1/1     Running   0          2m25s

查看为什么重启:

image.png
image.png

  • 137 = 128 + x (9, kill)

注意:

  • 当容器被强行终止时, 会创建一个全新的容器, 而不是重启原来的容器

4.1.4 配置存活探针的附加属性

  • delay=0s: 容器启动后立即探测
  • timeout=1s: 容器必须在 1s 内响应
  • period=10s: 每 10s 探测一次
  • failure=3: 连续失败3次后重启容器

这些属性可以在 yaml 中配置:

image.png
image.png

注意:

  • 一定要配置延迟

4.1.5 创建有效的存活探针

存活探针应该检查什么

  • 配置特定的 url: /health
  • 只是回返一个响应也会有用
  • 应用程序内部对重要组件进行检查
  • 不要检查外部依赖 (数据库)

保持探针轻量

  • 探针的 CPU 时间计入容器的 CPU 时间配额

无须在探针中实现重试循环

Kubernetes 会重复探测, 不用自己实现.

存活探针小结

  • 如果手动创建 pod, 那么当节点崩溃后, 不会在其他机器上重建
  • ReplicationController 会