Pod 由一个或多个紧密耦合的容器组成它们之间共享网络、存储等资源Pod 是 Kubernetes 中最小的工作单元Pod 中的容器会一起启动和停止。1.创建pod一个pod只有一个业务容器kubectl logs mypod命令用于查看名为mypod的 Pod 中唯一容器的标准输出一个pod有多个业务容器2.一个pod从无到有的创建过程第一阶段指挥中心受理 (Control Plane)用户发起请求执行 kubectl apply -f pod.yaml。kubectl 会将 YAML 转换成 JSON 并发送给API Server。安检与登记 (API Server)认证 (Authn)你ns用户是谁是否有权访问集群授权 (Authz)你是否有权在这个命名空间创建 Pod准入控制 (Admission Control)比如检查你的资源配额是否超出。入库 (etcd)一切通过后API Server 把 Pod 的原始信息存入etcd。此时 Pod 的状态是 Pending。第二阶段选址专家调度 (Scheduler)发现任务Scheduler一直盯着 API Server。它发现有一个新 Pod 还没分配 Node。选址决策预选 (Predicates)排除掉 CPU 不够、内存不足或污点不匹配的机器。优选 (Priorities)在剩下的机器里打分比如哪台机器镜像已经下好了、哪台负载更低。宣布结果Scheduler 选好 Node 后告诉 API Server“把这个 Pod 给 Node-A”。API Server 把绑定信息更新到etcd。第三阶段分厂落地执行 (Worker Node)领任务 (Kubelet)Node-A 上的Kubelet也在盯着 API Server。它发现“噢有个 Pod 分配给我了”。动工准备 (CRI/CNI/CSI)网络 (CNI)Kubelet 调用网络插件给 Pod 分配 IP。存储 (CSI)挂载需要的卷。容器运行时 (CRI)Kubelet 调用 containerd 或 docker 去拉取镜像并创建容器。状态反馈容器启动后Kubelet 会持续观察容器健康状况并将结果汇报给 API Server。大功告成API Server 将 Pod 状态更新为 Running。你在终端输入 kubectl get pods 就能看到它绿了核心知识点API Server 是唯一入口不管是 etcd 还是各个组件它们之间从不直接发消息全部通过 API Server 中转。List-Watch 机制这是 K8s 的灵魂。组件Scheduler, Kubelet不是等通知而是主动向 API Server 发起长连接“监听”自己感兴趣的资源变化。etcd 是唯一的真理来源只要 etcd 里没写这个 Pod 就不算创建成功只要 etcd 里写了系统就会想尽办法让它变成现实自愈性。
pod创建
Pod 由一个或多个紧密耦合的容器组成它们之间共享网络、存储等资源Pod 是 Kubernetes 中最小的工作单元Pod 中的容器会一起启动和停止。1.创建pod一个pod只有一个业务容器kubectl logs mypod命令用于查看名为mypod的 Pod 中唯一容器的标准输出一个pod有多个业务容器2.一个pod从无到有的创建过程第一阶段指挥中心受理 (Control Plane)用户发起请求执行 kubectl apply -f pod.yaml。kubectl 会将 YAML 转换成 JSON 并发送给API Server。安检与登记 (API Server)认证 (Authn)你ns用户是谁是否有权访问集群授权 (Authz)你是否有权在这个命名空间创建 Pod准入控制 (Admission Control)比如检查你的资源配额是否超出。入库 (etcd)一切通过后API Server 把 Pod 的原始信息存入etcd。此时 Pod 的状态是 Pending。第二阶段选址专家调度 (Scheduler)发现任务Scheduler一直盯着 API Server。它发现有一个新 Pod 还没分配 Node。选址决策预选 (Predicates)排除掉 CPU 不够、内存不足或污点不匹配的机器。优选 (Priorities)在剩下的机器里打分比如哪台机器镜像已经下好了、哪台负载更低。宣布结果Scheduler 选好 Node 后告诉 API Server“把这个 Pod 给 Node-A”。API Server 把绑定信息更新到etcd。第三阶段分厂落地执行 (Worker Node)领任务 (Kubelet)Node-A 上的Kubelet也在盯着 API Server。它发现“噢有个 Pod 分配给我了”。动工准备 (CRI/CNI/CSI)网络 (CNI)Kubelet 调用网络插件给 Pod 分配 IP。存储 (CSI)挂载需要的卷。容器运行时 (CRI)Kubelet 调用 containerd 或 docker 去拉取镜像并创建容器。状态反馈容器启动后Kubelet 会持续观察容器健康状况并将结果汇报给 API Server。大功告成API Server 将 Pod 状态更新为 Running。你在终端输入 kubectl get pods 就能看到它绿了核心知识点API Server 是唯一入口不管是 etcd 还是各个组件它们之间从不直接发消息全部通过 API Server 中转。List-Watch 机制这是 K8s 的灵魂。组件Scheduler, Kubelet不是等通知而是主动向 API Server 发起长连接“监听”自己感兴趣的资源变化。etcd 是唯一的真理来源只要 etcd 里没写这个 Pod 就不算创建成功只要 etcd 里写了系统就会想尽办法让它变成现实自愈性。