• k8s创建Pod的流程
  • 发布于 2个月前
  • 219 热度
    0 评论
一. 引言
Kubernetes(简称K8s)是一种主流的容器编排平台,它能够自动化地管理容器化应用程序的部署、扩展和管理。在Kubernetes中,Pod是最小的可部署单元,它包含一个或多个容器,并且共享网络和存储资源。

本文将介绍k8s创建Pod的流程,首先是k8s的架构、架构中组件,然后是创建的流程。

二. k8s架构
Kubernetes 架构是一个典型的二层架构和 server-client 架构。其中Master 作为中央的管控节点, Node 是真正运行业务负载的节点。所有外部的请求都需经过Master,Master再讲命令下发给Node。

1. Master节点

Master架构
如图所示,在Master节点中包含4个核心组件。

API server负责处理所有的REST API请求,包括对Kubernetes对象的创建、读取、更新和删除等操作。API server还负责验证和授权请求,以确保只有经过身份验证的用户才能执行相应的操作。

Controller指的是一组负责维护Kubernetes对象状态的控制器。根据配置的期望状态和实际状态之间的差异,自动调整集群中的资源,以确保集群中的对象状态与期望状态保持一致。例如,Deployment控制器会根据Deployment对象的定义,确保指定数量的Pod副本在集群中运行,并在需要时自动扩展或缩小Pod副本数量。

Scheduler 负责根据Pod的调度需求,将Pod调度到可用的节点上。Scheduler会根据Pod的资源需求、节点的资源利用率和Pod的亲和性/反亲和性规则等因素,选择最佳的节点进行调度。

etcd用于存储集群的配置数据、状态信息和元数据等。确保集群中的所有节点都可以访问和更新相同的数据。Kubernetes的所有组件都可以使用etcd来存储和读取数据,以确保集群中的所有组件都能够共享相同的状态信息。

2. Node节点

如上图所示在Node节点中存在着很多的Pod,其中:
.Kubelet组件负责管理Node节点上的Pod;
.Container Runtime则是真正负责管理容器的生命周期,包括创建、启动、停止销毁容器等操作;
.Storage Plugin用于管理 Kubernetes 集群中的存储资源,包括持久卷(Persistent Volume)和持久卷声明(Persistent Volume Claim);
.NetWork Plugin 用于管理 Kubernetes 集群中的网络资源,包括 Pod 的网络连接、IP 地址分配、网络策略;

.Kube-proxy是一个网络代理,主要是将集群内部的服务暴露给外部网络。


3. 创建一个Pod
如下图所示,是一个Pod创建的交互流程。

流程:用户通过UI提交一个Pod部署请求,这个请求先经过API Server,然后API Server将创建信息存储到etcd中,并且会通知到Scheduler,接着Scheduler会进行一次决策,当完成调度后,通知API Server,然后将调度的结果存储到etcd中,并提醒kubelet,最后kubelet去调动Container runtime来真正去执行这个容器和容器的运行环境。

三. 小结
本文介绍了Kubernetes的架构和创建Pod的流程。其中Master节点包含API server、Controller、Scheduler和etcd四个核心组件,Node节点中包含了Kubelet、Container Runtime、Storage Plugin、Network Plugin和kube-proxy等组件。创建一个Pod的流程是用户通过UI提交一个Pod部署请求,API Server将创建信息存储到etcd中,并通知Scheduler进行调度,完成调度后通知API Server,最后kubelet去调动Container Runtime来执行容器和容器的运行环境。

用户评论