当前位置: 首页 > news >正文

K8S之Pod详解与进阶

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里的其它容器提供网络、存储资源的共享
作为PID=1的进程(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会引发OOM
CPU资源量单位: cpu个数  1  2  0.1  0.5  0.25     毫核  100m   250m   1000m   1500m
内存资源量单位:整数(默认单位为字节)      2的底数单位(Ki Mi Gi Ti)    10的底数单位(K M G T)kubectl 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/1),service资源会删除所关联的端点(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杀掉退出时所执行的命令操作(不包含容器自行退出的情况)
http://www.lryc.cn/news/119222.html

相关文章:

  • 【小曾同学赠书活动】开始啦—〖测试设计思想〗
  • 【Docker晋升记】No.1--- Docker工具核心组件构成(镜像、容器、仓库)及性能属性
  • ROBOGUIDE教程:FANUC机器人X型焊枪气动点焊焊接
  • 二、 根据用户行为数据创建ALS模型并召回商品
  • [golang gin框架] 45.Gin商城项目-微服务实战之后台Rbac微服务之角色权限关联
  • Redis中的数据类型
  • java spring cloud 企业工程管理系统源码+二次开发+定制化服务 em
  • Java程序猿搬砖笔记(十五)
  • flask----内置信号的使用/django的信号/ flask-script/sqlalchemy介绍和快速使用/sqlalchemy介绍和快速使用
  • Zookeeper 面试题
  • ELK 企业级日志分析系统(二)
  • Linux版本 centOS 7,java连接mysql
  • 开发工具IDEA的下载与初步使用【各种快捷键的设置,使你的开发事半功倍】
  • YoloV5/YoloV7优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列
  • freeswitch的mod_xml_curl模块动态获取configuration
  • CANdelaStudio 使用介绍
  • 锚框【动手学深度学习】
  • Qt扫盲-Qt Model/View 理论总结 [上篇]
  • 【猿灰灰赠书活动 - 01期】- 【Python网络爬虫入门到实战】
  • 小兔鲜项目 uniapp (1)
  • 盛弘电气2021秋招笔试题
  • Poco框架(跨平台自动化测试框架)
  • 使用RANSAC算法在点云中拟合原始3D形状:pyRANSAC-3D的介绍和应用
  • GPT-3.5 人工智能还是人工智障?——西红柿炒钢丝球!!
  • 移动技术相关基本概念
  • 数学建模—分类模型
  • 腾讯云SA3服务器AMD处理器CPU网络带宽性能详解
  • Vue组件之间的传值汇总
  • Cadence OrCAD Capture CIS批量替换GND符号的方法
  • 图像的转置之c++实现(qt + 不调包)