Kubernetes权威指南

3 深入掌握Pod(3)

2020-08-25  本文已影响0人  ZYvette

3.6 在容器内获取Pod信息(Downward API)

我们知道,每个Pod在被成功创建出来之后,都会被系统分配唯一的名字、IP地址,并且处于某个Namespace中,那么我们如何在Pod的容器内获取Pod的这些重要信息呢?答案就是使用DownwardAPI。
Downward API可以通过以下两种方式将Pod信息注入容器内部。
(1)环境变量:用于单个变量,可以将Pod信息和Container信息注入容器内部。
(2)Volume挂载:将数组类信息生成为文件并挂载到容器内部。

A. 环境变量方式:将Pod信息注入为环境变量

image.png

B. 环境变量方式:将容器资源信息注入为环境变量

image.png

C. Volume挂载方式

image.png

3.7 Pod生命周期和重启策略

image.png

Pod的重启策略与控制方式息息相关,当前可用于管理Pod的控制器包括ReplicationController、Job、DaemonSet及直接通过kubelet管理(静态Pod)。

3.8健康检查和服务可用性检查

kubernetes Pod的健康检查:

kubelet定期执行这两类探针来诊断容器的健康状况。

(1)LivenessProbe探针:用于判断容器是否存活(Running状态)
(2)ReadinessProbe探针:用于判断容器服务是否可用(Ready状态),达到Ready状态的Pod才可以接收请求。

配置方式

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

image.png

上图含义是:
a. 创建health文件,10s之后删除文件
b. 健康探测:15s后开始首次执行,查看文件。
因为15s后文件不存在,所以探测结果为Fail。导致kubelet杀掉该容器并重启它。

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


image.png

C. HTTPGetAction:通过容器的IP地址、端口号及路径调用HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器健康。

image.png

kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查。

相关配置:
◎ initialDelaySeconds:启动容器后进行首次健康检查的等待时间,单位为s。
◎ timeoutSeconds:健康检查发送请求后等待响应的超时时间,单位为s。当超时发生时,kubelet会认为容器已经无法提供服务,将会重启该容器。

https://zhuanlan.zhihu.com/p/158664888

Pod Readiness Gates

通过Pod Readiness Gates机制,用户可以将自定义的ReadinessProbe探测方式设置在Pod上,辅助Kubernetes设置Pod何时达到服务可用状态(Ready)。为了使自定义的ReadinessProbe生效,用户需要提供一个外部的控制器(Controller)来设置相应的Condition状态。

image.png

新增的自定义Condition的状态(status)将由用户自定义的外部控制器设置,默认值为False。Kubernetes将在判断全部readinessGates条件都为True时,才设置Pod为服务可用状态(Ready为True)。

上一篇 下一篇

猜你喜欢

热点阅读