【K8s】整体认识K8s之pod
是什么?
K8s能够管理创建部署的最小计算单元。包含一个或多个容器,一个pod里的容器共享命名空间。
Pod的根容器
当创建一个pod时,kubelet会先启动pod容器,他为自己创建一个独立的命名空间。再启动pod内的业务容器,使用参数让他们加入这个已创建好的命名空间,而不是创建新的。
他也能充当PID 1的角色,避免僵尸进程(占用进程id资源)。
Pod生命周期
Pending(挂起):pod已被k8s系统接受,但有一个或多个容器镜像未被创建。等待时间包括调度pod的时间和下载镜像的时间。
ContainerCreating(容器创建中):pod已被调度到节点,但正在创建容器或拉取镜像
Running(运行中):pod已被绑定到一个节点,里面的所有容器已被创建,并且至少有一个容器在运行。
Succeed(成功):所有pod被成功终止
Failed(失败):所有pod都被终止,并且至少有一个因为失败终止
Terminating(终止中):pod被删除,正在优雅退场
Init容器
在pod的应用容器启动前运行做准备工作,如果他不启动其他容器不会启动。他可以包括一些容器镜像里没有的实用工具和安装脚本。
Sidecar容器
提供辅助功能,与主容器并行运行。如日志追踪。
静态pod
由各自节点的kubelet进行管理,而不是api-server进行监管。他在/etc/kubernetes/manifests/目录下存储,无法通过kubectl delete删除他们,只能从目录下移除。kube-apiserver, kube-controller-manager, kube-scheduler, etc这些组件的 Pod 定义文件就放在主节点的 /etc/kubernetes/manifests/目录下。静态pod名字后边有节点的标识。