K8s核心资源对象-Pod(Container)
K8s核心资源对象-Pod(Container)
基于1.25
Container相关字段
// Container represents a single container that is expected to be run on the host. |
主要分为:
- 镜像相关:Image、ImagePullPolicy
- 程序执行入口相关:Command、Args、WorkingDir
- 容器暴露端口:Ports
- 环境变量:Env、EnvFrom
- 卷相关:VolumeMounts、VolumeDevices
- 资源相关字段:Resource
- 容器生命周期相关:LifeCycle、TerminationMessagePath、TerminationMessagePolicy、LivenessProbe、ReadinessProbe、StartupProbe
- 安全上下文相关:SecurityContext
- 调试相关:Stdin、StdinOnce
镜像相关
Image
镜像的名称
ImagePullPolicy
镜像拉取策略:
Always:总是拉取,如果指定是lastes标签,默认是Always
IfNotPresent(default):镜像不存在本地才会拉取
Never:不回拉取镜像,镜像必须存在本地
// shouldPullImage returns whether we should pull an image according to |
容器进入执行入口相关
// ExpandContainerCommandAndArgs expands the given Container's command by replacing variable references `with the values of given EnvVar. |
Command
容器进程执行入口点数组,不再Shell中执行
- 如果未提供,使用容器镜像的ENTRYPOINT
Args
容器镜像的ENTRYPOINT参数
- 未提供,使用容器镜像CMD设置
WorkingDir
容器的工作目录
- 如果未指定,则使用容器运行时的默认值,默认值在容器镜像中的配置
容器暴露的端口
Ports是对外暴力的端口列表,有以下字段
- ConatnerPort:必须,在Pod的IP地址上公开的端口号,0~65536
- HostIP:绑定在外部端口的主机IP地址
- HostPort:在主机上公开的端口号
- 如果设置了HostNetwork,字段必须和ContainerPort匹配
- 0~65536
- name:Pod中命名的name都是唯一的名称。Service可以引用端口名称
- Protocol:端口协议,UDP|TCP|SCTP,默认TCP
- Ref:https://github.com/kubernetes/kubernetes/blob/88e994f6bf8fc88114c5b733e09afea339bea66d/pkg/kubelet/container/helpers.go#L338
|
环境变量Env、EnvFrom
在容器设置的环境变量列表,支持字符串、ConfigMap、Secret、metadata、spec.resource等多种方式
卷相关
VolumeMounts
挂载到容器文件系统中Pod卷
VolumeDevices
容器要使用的块设备列表,描述了容器内原始块的设备映射
资源相关
Resource主要是requests和limits
- requests:最小的资源用量
- 如果只设置了limits,默认是取limits一样的值
- limits:与允许使用最大资源用量,设置为cgroup的值
容器生命周期相关
Lifecycle
描述管理系统为响应容器生命周期事件采取的行动,对于postStart和preStop生命周期处理程序,容器管理会被阻塞,直到操作完成。
- postStart:创建容器成功之后马上调用postStart,处理程序启动失败,按照重启策略重启。过程中其他操作被阻塞
- preStop:preStop在容器因为API请求或管理事件(如存活探针/启动探针失败、抢占、资源竞用等)终止前调用。容器崩溃退出不调用
TerminationMessagePath
如何填充终止消息。字段File使用TerminationMessagePath填充容器失败的消息。FallbackToLogOnError则输出到容器最后。
- 日志输出限制2058字节或者80行,默认为File
LivenessProbe
容器存活探针,定期执行。如果探针失败,则容器重启
ReadinessProbe
容器服务就绪探针,定期执行。如果探针失败,从服务端点删除
StartupProbe
容器启动探针,StartupProbe表示这个Pod已经初始化。设置了此字段,会优先其他探针,如果失败,容器重启
- 一般用于记载预习数据
安全上下文
SecurityContext定义了容器的运行的安全选项
- 如果设置会覆盖PodSecurityContext
调试相关
Stdin
容器在运行时是否为sydin分配缓冲区
- 未设置,从容器的stdio读取数据始终未EOF,默认false
StdinOnce
容器运行某个attch之后,打开stdio通道之后是否关闭它。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joohwan!
评论