pod的状态,拉取策略
1.pod状态
Pending pod未调度,或者pod已经调度正在拉取镜像
Running pod已经运行
Failed pod内容器运行停止
Success pod内容器运行成功结束
Unknown master与node失联,pod状态无法正常获取到
2.重启策略:
Always: 当容器终止退出后,总是 重启容器,默认策略
OnFailure: 当容器异常退出(退出状态码非0)时,才重启容器
Nerver: 当容器终止退出,从不重启容器.
2.1健康检查有以下3种类型
livenssProbe(存活检查):如果检查失败,将杀死容器,根据pod的restartPoilcy来操作.
readinessProbe(就绪检查):如果检查检查失败,kubernetes会把pod从service endpoints中剔除.
startupProbe(启动检查)
2.2支持以下三种检查方式:
httpGet: 发送HTTP请求,返回200-400范围状态码为成功
exec: 执行shell命令返回状态码是0为成功.
tcpSocket:发起TCP Socket建立成功.
Init Container
init container:顾名思义,用于初始化工作,执行完就结束,可以理解为一次性任务.
支持大部分应用容器部署,但不支持健康检查
优先应用容器执行.
应用场景:
环境检查:例如确保应用容器依赖的服务启动后再启动应用容器
初始化配置:例如给应用容器准备配置文件
示例:部署一个web网站,网站程序没有打到镜像中,而是希望从代码库中动态拉取放到应用容器中.
apiVersion: v1
kind: Pod
metadata:
name: init-demo
spec:
initContainers:
- image: busybox
name: download
command:
- wget
- "-O"
- "/opt/index.html"
- http://registry.thunisoft.com
volumeMounts:
- mountPath: "/opt"
name: wwwroot
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: wwwroot
mountPath: /usr/share/nginx/html
volumes:
- name: wwwroot
emptyDir: {}
因此,pod中会有这几种类型的容器:
Infrastructure Container: 基础容器
维护整个pod网络空间
InitContainers: 初始化容器
先于业务容器开始执行
Containers: 业务容器
并行启动