背景
基于之前的文章,我们把服务程序部署在了Kubernetes上。本篇文章总结了4个在Kubernetes上常用的高级技巧。服务程序是Django开发的,但是本文总结的技巧跟程序开发语言无关。
技巧1. 就绪性(Readiness)和存活性(Liveness)检查
- 就绪性(Rediness)检查:当为 true 时,表示容器已准备好接受访问。常用在容器需要一些时间来准备环境后,再开始接受访问。
- 存活性(Liveness)检查:这是 Kubernetes 定期运行的检查项,以确保容器处于活动状态并运行,如果失败,容器将被视为死亡,并将被终止并启动新容器。
二者在配置方面相似,但在调用时有所不同。
注意:我们说的是“容器”而不是“pod”,检查是针对每个容器的。
检查方式
上述检查项Kubernetes有以下三种检查方式:
- command : 如果成功则返回 0,否则返回错误信息。
- httpGet:如果返回值在 200 到 399 之间,则表示成功。
- tcpSocket:如果 Kubernetes 可以打开 TCP 端口的连接,则表示成功,否则表示失败。
配置探针(Probes)
使用下属3种探针:
- initialDelaySeconds : 在容器启动后,检查启动前的时间,默认为 0秒。
- periodSeconds:检查的间隔时间,默认10秒。
- failureThreadhold:如果探测失败后重试的次数,默认为 3次。
示例
采用 "httpGet"的方式做就绪性(Readiness)和存活性(Liveness)检查。
在Django应用的容器部分中,添加django-example_checks.yaml:
containers:
- name: web-app
image: django-example:v1.0
ports:
- containerPort: 80
readinessProbe: #