石铜路网站建设,编程培训班在线培训,建设网站注意哪几点,推广策划方案模板Pod详解与进阶 文章目录 Pod详解与进阶一、Pod详解1.pod定义2.pause容器作用3.Pod 的 3 种类型4.Pod 的 3 种容器5.Pod 的 3 种镜像拉取策略6.Pod 的 3 种容器重启策略 二、Pod进阶1.资源限制2.Pod 容器的 3 种探针#xff08;健康检查#xff09;3.探针的 3 种探测方式探针参…Pod详解与进阶 文章目录 Pod详解与进阶一、Pod详解1.pod定义2.pause容器作用3.Pod 的 3 种类型4.Pod 的 3 种容器5.Pod 的 3 种镜像拉取策略6.Pod 的 3 种容器重启策略 二、Pod进阶1.资源限制2.Pod 容器的 3 种探针健康检查3.探针的 3 种探测方式探针参数 4.Pod 应用容器生命周期的启动动作和退出动作 一、Pod详解
1.pod定义
Pod 是 K8S 最小的创建和运行管理单元
一个 Pod 能包含几个容器
1个 pause容器基础容器/父容器/根容器
1个或多个应用容器业务容器通常一个Pod最好只包含一个应用容器一个应用容器最好只运行一个业务进程同一个Pod里的容器都是运行在同一个Node节点上的并且共享 NET MNT UTS IPC PID 命名空间
2.pause容器作用
是作为共享 NET MNT UTS IPC PID 命名空间的基础
给Pod里的其它容器提供网络、存储资源的共享
作为PID1的进程init进程管理整个Pod容器组的生命周期3.Pod 的 3 种类型
控制器管理的Pod由scheduler进行调度的被控制器管理的有自愈能力一旦Pod挂掉了会被重新拉起有副本管理、滚动更新等功能自主式Pod由scheduler进行调度的不被控制器管理没有自愈能力一旦Pod挂掉了不会被重新拉起没有副本管理、滚动更新等功能静态Pod不由scheduler调度的而是由kubelet自行管理的始终与kubelet运行在同一个Node节点上不能被直接删除静态Pod资源配置文件默认放置在/etc/kubernetes/manifests目录中当此目录中有Pod资源配置文件存在或者消失时kubelet会自动创建或删除静态Pod
4.Pod 的 3 种容器
pause容器基础容器/父容器/根容器给Pod的容器组作环境初始化具体见上init容器初始化容器/init container可以为应用容器事先提供运行环境或辅助工具还可以阻塞或延迟应用容器的启动如果Pod有多个init容器时是串行启动的要在上一个init容器成功的完成启动、运行和退出后才会启动下一个init容器应用容器业务容器/main container提供应用程序业务如果Pod有多个应用容器时是并行启动的应用容器要在所有init容器都成功的完成启动、运行和退出后才会启动5.Pod 的 3 种镜像拉取策略
yaml中字段设置spec.containers.imagePullPolicyIfNotPresent优先使用本地已存在的镜像如果本地没有则从仓库拉取镜像。是标签为非latest的镜像的默认镜像拉取策略Always总是从仓库拉取镜像无论本地是否已存在镜像。是标签为latest或无标签的镜像的默认镜像拉取策略Never仅使用本地镜像总是不从仓库拉取镜像6.Pod 的 3 种容器重启策略
yaml中字段设置spec.restartPolicyAlways当Pod中的容器退出时总是重启容器无论容器退出状态码如何。是默认的容器重启策略OnFailure当Pod中的容器异常退出时容器退出状态码为非0才会重启容器正常退出的容器容器退出状态码为0不会重启Never当Pod中的容器退出时总是不重启容器无论容器退出状态码如何。二、Pod进阶
1.资源限制
spec.containers.resources.requests.cpu|memory 设置Pod容器创建时需要预留的资源量 容器应用最低配置 requests limitsspec.containers.resources.limits.cpu|memory 设置Pod容器能够使用的资源量上限如果容器进程内存使用量超过limits.memory会引发OOMCPU资源量单位 cpu个数 1 2 0.1 0.5 0.25 毫核 100m 250m 1000m 1500m
内存资源量单位整数默认单位为字节 2的底数单位Ki Mi Gi Ti 10的底数单位K M G Tkubectl describe -n 命名空间 pod pod名称 查看Pod中每个容器的资源量限制
kubectl describe node node名称 查看Node节点中的每个Pod或总的资源限制使用情况2.Pod 容器的 3 种探针健康检查
存活探针livenessProbe探测是否正常运行。如果探测失败则kubelet杀掉容器Pod容器会根据重启策略决定是否重启就绪探针readinessProbe探测Pod是否进入就绪状态ready状态栏1/1并做好接收service请求的准备。如果探测失败则Pod会变成未就绪状态ready状态栏0/1service资源会删除所关联的端点endpoints并不再转发请求给就绪探测失败的Pod启动探针startupProbe探测容器内的应用是否启动成功。在启动探针探测成功之前存活探针和就绪探针都会暂时处于禁用状态直到启动探针探测成功
3.探针的 3 种探测方式
exec在command字段中指定在容器内执行的Linux命令来进行探测如果命令返回码为0则认为探测成功如果返回码为非0则认为探测失败tcpSocket向指定的Pod容器端口发送tcp连接请求如果端口正确且tcp连接成功则认为探测成功如果tcp连接失败则认为探测失败httpGet向指定的Pod容器端口和URL路径发送http get请求如果http响应状态码为2XX 3XX则认为探测成功如果响应状态码为4XX 5XX则认为探测失败探针参数
initialDelaySeconds指定容器启动后延迟几秒开始探测
periodSeconds每天探测的间隔时间秒数
failureThreshold探测连续失败几次后判断探测失败
timeoutSeconds指定探测超时等待时间秒数4.Pod 应用容器生命周期的启动动作和退出动作
spec.containers.lifecycle.postStart 配置子字段 exec.command 设置 Pod 容器启动时额外的命令操作spec.containers.lifecycle.preStop 配置子字段 exec.command 设置 Pod 容器运行中被kubelet杀掉退出时所执行的命令操作不包含容器自行退出的情况