k8s中pod基础

pod 的定义?

pod是k8s最小的创建和运行单元

一个pod能包含几个容器?

1个pause容器(基础容器,父容器,根容器)

一个或多个应用容器(业务容器)

通常一个pod最好只包含一个应用容器,一个应用容器里最好只运行一个业务进程

同一个pod里的容器,是运行在同一个node节点上的,并且共享 net ,mnt,pid,ipc ,uts命名空间

pause容器作用?

是作为共享net mnt pid ipc uts命名空间的基础,给pod中的其他容器提供网络,存储资源的共享,作为pid=1的进程(init进程)管理整个pod中容器组的生命周期

pod的分类:

自主式pod:由apiserver创建由scheduler进行调度,不被控制器管理的pod没有自愈能力,一旦pod挂掉是不会被重新拉起的,也没有副本管理,滚动升级等功能

控制器管理的pod

静态pod 由scheduler进行调度,被控制器管理的,有自愈能力,一旦pod挂掉会重新拉起,有副本管理,滚动升级等功能

静态pod:由scheduler调度,而不是kubelet自行管理,始终与kubletet运行在同一个node结点上,静态pod资源配置文件默认保存在 /etc/kubernetes/manifests,当这个目录中有文件出现或消失时会创建或删除静态pod

pod中的容器

pause容器(基础容器,父容器,跟容器)给pod中容器环境初始化,具体见上

init容器(初始化容器,init container)可以为应用容器事先提供运行环境或辅助工具,还可以阻塞或延迟容器启动。pod有多个init容器时,是串行启动的,要在上一个init容器成功的完成启动,运行和退出后才会启动下一个init容器

应用容器(业务容器,main container)提供应用程序业务,pod有多个应用容器时,默认是并行启动的,应用容器要在所有init容器都成功的完成启动,运行和退出后才会启动

pod容器镜像拉去策略3种 imagepullpolicy字段位置再spec.containers的下一层级里

ifNotPresent:优先使用本地存在的镜像,如果本地则从仓库中拉去镜像

always:总是从仓库拉取镜像,无论本地是否已存在镜像

Never:仅使用本地镜像,并总是不从仓库拉去镜像

image: XXX:latest 或 XXX 镜像的标签为latest或无标签时,默认的镜像拉取策略为 Always

image: XXX:xxx 镜像的标签为非latest时,默认的镜像拉取策略为 IfNotPresent

docker run 启动的容器的重启策略

--restart=no|aways|unless-stopped|on-failure:N

pod容器重启策略(三种):不设置默认为always

Always 当pod中的容器退出时,总是重启容器,无论状态码如何,为默认的重启策略

Never 当pod中的容器退出时,总是不重启容器,无论容器推出状态码如何

OnFilure 当pod中的容器异常退出(容器推出状态码为非0)时,才会重启容器;正常退出(容器退出状态码为0)时不重启容器

pod 容器的资源限制

spec.containers.resources.requests.cpu/memory 设置pod容器创建时需要的资源量

spec.containers.resources.limits.cpu/memory设置pod容器能够使用的资源量上限,如容器进程内存使用量超出limite.memory会引起oom(Out of Memory)

cpu资源量单位:cpu数 1 2 0.1 0.25 毫核 1000m(1个cpu) 2000m 100m 250m

内存资源量单位:整数(默认为字节) 2的底数单位(Ki Mi Gi Ti) 10的底数单位(K M G T)

kubectl describe node XXX 查看node节点中 每个pod或 总的 资源限制

kubectl describe pod XXX 查看pod中 每个容器的资源量限制

你可能感兴趣的:(kubernetes,容器,云原生)