• 博客访问: 806955
  • 博文数量: 239
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-05 14:37
  • 认证徽章:
个人简介

走路 行心 修缘(需要交流的请加我的QQ 273936024)

文章分类

全部博文(239)

文章存档

2018年(49)

2017年(63)

2016年(39)

2015年(20)

2014年(29)

2013年(39)

分类: Docker/K8

2018-05-13 15:00:31

一:前言
对Pod的健康状态检查可以通过两类探针来检查:LivenessProbe和ReadinessProbe
1.LivenessProbe探针: 用于判断容器是否存活,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针返回值永远是“Success”.

2.ReadinessProbe探针: 用于判断容器是否启动完成,可以接收请求。如果ReadinessProbe 探针检测到失败,则Pod的状态将被修改。Endpoint Controller将从Service的Endpoint中删除包括该容器所在Pod的Endpoint.

二:LivenessProbe实现方式

1.ExecAction: 在容器内部执行一个命令,如果该命令的返回码为0,则表面容器健康。

点击(此处)折叠或打开

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   labels:
  5.     test: liveness
  6.   name: liveness-exec
  7. spec:
  8.   containers:
  9.   - name:liveness
  10.     image:busybox
  11.     args:
  12.     - /bin/sh
  13.     - -c
  14.     - echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600
  15.     livenessProbe:
  16.       exec:
  17.         command:
  18.         - cat
  19.         - /tmp/health
  20.     initialDelaySeconds: 15
  21.     timeoutSeconds: 1
通过执行“cat /tmp/health”命令来判断一个容器运行是否正常。而该Pod运行之后,在创建/tmp/health文件的10s之后将删除该文件,而LivenessProbe健康检查的初始探测时间(initialDelaySeconds)为15s,探测结果将是Fail,将导致kubelet杀掉该容器并重启它。

2.TCPSocketAction: 通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表面容器健康。

点击(此处)折叠或打开

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: pod-with-healthcheck
  5. spec:
  6.   containers:
  7.   - name: nginx
  8.     image: nginx
  9.     ports:
  10.     - containerPort: 80
  11.   livenessProbe:
  12.     tcpSocket:
  13.       port: 80
  14.     initialDelaySeconds: 30
  15.     timeoutSeconds: 1
3. HTTPGetAction: 通过容器的IP地址,端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器状态健康。

点击(此处)折叠或打开

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4.   name: pod-with-healthcheck
  5. spec:
  6.   containers:
  7.   - name: nginx
  8.     image: nginx
  9.     ports:
  10.     - containerPort: 80
  11.   livenessProbe:
  12.     httpGet:
  13.       port: 80
  14.       path: /_status/healthz
  15.     initialDelaySeconds: 30
  16.     timeoutSeconds: 1
kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查。

三:说明

1.initialDelaySeconds:启动容器后进行首次健康检查的等待时间,单位为s
2.timeoutSeconds: 健康检查发送请求后等待响应的超时时间,单位为s. 当超时发生时,kubelet会认为容器已经无法提供服务,将会重启该容器。
阅读(27) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册