Gc主要由kubelet执行,kubelet进程启动时会自动创建两个GC,一个负责回收image 另一个负责回收container。Images回收会5分钟执行一次,container会1分钟执行一次。

 

Kubelet里有关于回收机制的参数,可以自定义配置,也可使用其默认配置。

 

  1. image回收参数

主要分三个参数:

A:--minimum-image-ttl-duration     (容器运行完之后的生存时间,默认为0)

B:--image-gc-high-threshold        (磁盘最高消耗百分比,默认为90%。表明当磁盘占用高达90%时,会自动触发image回收机制)

C:--image-gc-low-threshold         (磁盘最低消耗百分比,默认为80%,当磁盘占用低于80%时将不会触发image回收)

 

  1. container回收

主要分为三个参数:

A:--minimum-container-ttl-duration        (容器运行结束之后可以存活的时间,默认为0)

B:--maximum-dead-container-per-container (一个pod上可以留下运行结束之后的容器的个数,默认为2)

C:--maximum-dead-containers               (一个node上可以留下运行结束之后的容器个数,默认为240)

当不需要回收container时,自定义将A参数设置为0,BC参数设置为负数,则不会有回收container行为。

 

Kubelet判断回收的对象是根据探测针反馈来执行的。探测针分为LivenessProbe探测针与ReadinessProbe探针两种。

 

  1. LivenessProbe探针:判断容器是否健康。若不健康,则回收并根据重启策略重启container。只要container里不包含探针则表明该容器健康。

 

探针健康判断机制为:

A:ExecAction :在container内部执行命令 状态码为0,则健康。反之,不健康。

B:TcpSocketAction:使用 container的ip+port 执行tcp检查,若能访问则表明健康,反之,则不健康。

C:HttpGetAction:使用container ip+port和调用HTTP get方法,响应状态码在200与400之间则健康。反之,则不健康。

 

2.Readiness探针:判断容器是否启动完成且准备接受请求,若失败,则将pod状态修改,并从service的endpoint中删除该容器所在的pod的ip。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐