kubelet创建pod流程
流程图
OCI(Open Container Initiative)是一个由docker社区发起的项目,Docker、containerd
CNI(Container Network Interface)网络配置:为容器分配IP地址、配置网络接口、设置路由
CSI(Container Storage Interface),存储卷的创建与删除:支持动态创建和删除持久存储卷。卷的挂载与卸载:将存储卷挂载到容器中,使得容器能够读写数据。
文字版pod创建全流程
-
用户把资源清单发送到api-server
-
api-server对来源数据进SSL证书验证、语法验证、权限验证(RBAC),验证通过后把相关信息写入到etcd
-
controler-manager通过watch实践监听到了etcd数据的变化,发现有控制器deploy 需要创建
scheduler通过watch监听到etcd数据发生变化,
1.kubelet组件调用 CRI(Container Runtime Interface容器运行接口)
符合cri规范的有:containerdd
、cri-o
、podman
、cri-docker
(也叫 docker-shim
K8S 1.24移除)
2.run创建容器。OCI(开源容器提议),runc符合这一点。大部分CRI底层都是调用的 runc
容器创建阶段:
3.启动 pause 基础架构容器负责网络名称空间初始化
4.如果有初始化容器就会初始化容器
5.启动业务容器后先调用postStart函数;(启动容器时一次性
6.调用startupProbe探针;(启动容器时一次性)
7.周期性调用 livenessProbe 和 readinessProbe(启动容器后周期性执行)
8.当容器退出时,调用preStop函数,该函数必须在优雅终止。(terminationGracePeriodSeconds,若不定义,默认值为30s)之前结束;