Pod的定义?
Pod是K8S中创建和管理的最小单元
一个Pod包含多少容器?
至少包含一个pause容器(基础容器/父容器/根容器)和一个或多个应用容器(业务容器/用户容器)
同一个Pod的容器都是运行在同一个node节点上的,并共享 net mnt uts pid ipc 命名空间
通常一个Pod会包含一个应用容器(或多个紧密相关的边车容器),应用容器最好只运行一个应用进程
pause容器的作用?(给Pod容器组做环境初始化)
作为Linux命名空间共享的基础,为Pod里的其它容器提供网络、存储资源的共享 (为pod里面的其他容器提供网络和存储资源共享 )
作为PID=1的init管控类进程管理整个Pod容器组的生命周期 (管控整个pod容器组的生命周期)
Pod的3种类型:
自主式Pod:由scheduler调度到node节点运行的;不被控制器管理;没有自愈能力,一旦Pod挂掉了,不会被重新拉起;没有副本管理能力,不能滚动更新;配置信息是存储在etcd中
控制器管理的Pod:由scheduler调度到node节点运行的;被控制器管理;有自愈能力,一旦Pod挂掉了,会被控制器重新拉起;有副本管理能力,支持滚动更新;配置信息是存储在etcd中
静态Pod:不由scheduler调度到node节点运行的,而是由kubelet自行管理的;始终与kubelet运行在同一个node节点上;不能通过向apiserver发送请求直接删除
在node节点的/etc/kubernetes/manifests/目录中放置Pod的yaml配置文件,kubelet就会自动根据yaml配置文件创建静态Pod;反之删除目录中的yaml配置文件,kubelet则会删除静态Pod
Pod的3种容器:
pause容器(基础容器/父容器/根容器):给Pod容器组做环境初始化,具体功能见上
pause容器是Pod最先启动的容器
init容器(初始化容器/init container):可以在应用容器启动前基于共享存储为应用容器提供运行依赖环境和工具包;还可以阻塞或延迟应用容器的启动
init容器是在pause容器之后启动;如果Pod定义了多个init容器,它们是串行启动的,即要在上一个init容器成功的完成启动和退出后才会启动下一个init容器
应用容器(业务容器/用户容器/main container):提供应用程序业务
应用容器是在所有init容器都成功的完成启动和退出后才会启动;如果Pod定义了多个应用容器,它们是并行启动的
Pod容器的3种镜像拉取策略:imagePullPolicy(与image字段同一层级)
IfNotPresent:优先使用node节点本地已存在的镜像,如果本地没有则从仓库拉取镜像。是标签为非latest的镜像的默认拉取策略
Always:总是从仓库拉取镜像,无论node节点本地是否已存在镜像。是标签为latest或无标签的镜像的默认拉取策略

Never:仅使用node节点本地镜像,总是不从仓库拉取镜像

Pod容器的3种重启策略:restartPolicy(与containers字段同一层级)
Always:当Pod容器退出时,总是重启容器,无论容器退出状态码如何。是默认的容器重启策略

Never:当Pod容器退出时,总是不从前容器,无论容器退出状态码如何

OnFailure:当Pod容器异常退出时(容器退出状态码为非0),才会重启重启;正常退出的容器(容器退出状态码为0),不会重启

注:deployment statefulset daemonset 控制器的Pod容器重启策略只能设置为Always
1万+

被折叠的 条评论
为什么被折叠?



