首页 > 其他分享 >在K8S中,Pod创建过程包括什么?

在K8S中,Pod创建过程包括什么?

时间:2024-01-27 13:55:07浏览次数:38  
标签:容器 创建 Server kubelet API Pod K8S

在Kubernetes(K8s)中,Pod的创建过程通常包括以下步骤:

  1. 提交Pod定义
    用户通过kubectl命令行工具或者调用API Server接口,提交一个包含Pod配置信息的YAML或JSON文件。这个配置文件详细描述了Pod的元数据(如名称、标签等)、容器镜像、环境变量、端口映射、卷挂载以及其他运行时参数。

  2. 接收并验证请求
    Kubernetes API Server接收到创建Pod的请求后,会进行一系列的验证,确保提交的资源配置是有效的,并且符合集群的安全策略和准入控制规则。

  3. 持久化资源状态
    当配置信息验证成功后,API Server将Pod的规格信息写入etcd分布式存储系统中,这样集群的所有组件都能获取到最新的Pod创建请求。

  4. 调度Pod
    调度器(Scheduler)监听etcd中的事件,当发现新的未被调度的Pod时,它根据Pod的资源需求、节点标签选择器以及各种调度策略,为Pod选择合适的Node节点。

  5. 通知kubelet
    一旦调度完成,API Server会通知目标节点上的kubelet代理,告诉它应该在其管理的节点上启动一个新的Pod。

  6. kubelet初始化Pod
    kubelet接收到指令后,在本地执行Pod创建流程,包括:

    • 检查所需镜像是否已下载至本地,如果没有则从指定的镜像仓库拉取。
    • 创建命名空间、网络命名空间以及必要的网络设备和端点。
    • 根据Pod模板创建并启动容器,设置环境变量、挂载卷等。
    • 监控容器的状态,包括健康检查(Liveness Probe, Readiness Probe等)。
  7. 容器运行与监控
    容器运行后,kubelet持续监控其生命周期和资源使用情况。如果容器失败或不符合预期状态,kubelet会按照Pod定义中的重启策略进行处理。

  8. 更新Pod状态
    随着Pod创建过程的推进,kubelet不断向API Server报告Pod和容器的最新状态。当所有容器均达到期望状态(例如Ready状态),Pod将被视为处于“Running”状态,并可对外提供服务。

综上所述,创建Pod是一个涉及多个组件协同工作的复杂过程,从用户提交请求到最终容器成功运行,Kubernetes集群内的各个组件共同保证了Pod能够稳定、高效地运行在适当的节点上。

标签:容器,创建,Server,kubelet,API,Pod,K8S
From: https://www.cnblogs.com/huangjiabobk/p/17991364

相关文章

  • `pandas.ExcelFile.parse` 和 `pandas.read_excel` 都是 pandas 库中用于从 Excel 文
    `pandas.ExcelFile.parse`和`pandas.read_excel`都是pandas库中用于从Excel文件读取数据并创建DataFrame的方法¹。这两个方法的主要区别在于它们的使用场景和语法。-`pandas.read_excel`是一个函数,它可以直接读取Excel文件并返回一个DataFrame¹。这个函数非常适合......
  • `pandas.ExcelFile.book` 是一个属性,它存储了底层 Excel 读取库(如 xlrd 或 openpyxl)创
    有点像excelwriter?`pandas.ExcelFile.book`是一个属性,它存储了底层Excel读取库(如xlrd或openpyxl)创建的workbook对象¹。你可以通过这个属性来访问Excel文件的更多详细信息,比如工作表的名字、单元格的格式等等。下面是一个如何使用`pandas.ExcelFile.book`的例子³:``......
  • 在K8S中各个组件及其作用?
    Kubernetes(简称K8s)是一个强大的容器编排系统,其主要组件及其作用如下:kube-apiserver:集群的主入口点,提供了RESTfulAPI接口供用户或内部组件与集群进行交互。它负责验证和配置数据,并将所有请求持久化存储在etcd中。etcd:分布式键值存储系统,用于保存集群的所有关键配置数据......
  • K8S中组件是如何实现高可用?
    在Kubernetes(K8S)中,各个组件实现高可用的主要方法包括冗余部署和自动故障恢复机制。以下是Kubernetes主要组件的高可用性实现方式:kube-apiserver:高可用策略:通过在多个节点上部署多个API服务器实例,并使用负载均衡器(如云服务商提供的负载均衡或自建的负载均衡解决方案如HAProxy......
  • linux创建新用户
    1、创建用户名和密码sudoadduser2、授予sudo权限回到root账户,输入chmodu+w/etc/sudoers授予读写权限输入vim/etc/sudoers找到这行rootALL=(ALL)ALL,在他下面添加xxxALL=(ALL)ALL(这里的xxx是你的用户名)(注意ALL三个字母全是大写的!!!)3、给docker命令sudo权限为了......
  • Windows内核开发-[2]、创建第一个驱动程序
    使用VisualStudio2022创建一个EmptyWDMDriver工程  工程创建后,添加一个MyFirstDriver.cpp文件,输入以下内容1#include<ntddk.h>23VOIDDriverUnload(PDRIVER_OBJECTDriverObject)4{5if(DriverObject!=NULL)6{7DbgPrint("Driver......
  • k8s 报错: node(s) didn't match Pod's node affinity.
    前言k8s集群中,有pod出现了Affinity,使用kubectldescribepod命令,发现了报错2node(s)didn'tmatchPod'snodeaffinity.这是因为节点被打上了污点,导致了pod没有节点可以起来解决kubectlgetnodes-ojson|jq'.items[].spec'orkubectlgetnodes-oyaml找到......
  • 数据库安全||MySQL数据库安全中MySQL权限表:包括用户管理、权限管理等&用户管理:创建、
    MySQL数据库安全:MySQL数据库安全:MySQL权限表:包括用户管理、权限管理等。用户管理:创建、修改、删除用户账号。权限管理:查看、授予和撤销用户权限。1.MySQL数据库中的权限表是存储用户权限信息的核心部分,它们位于mysql数据库中。这些权限表包含了用户账号、密码、权限以及其他与用户......
  • k8s .netcore webapi
    .netcorewebapi迁移到到k8s1.  kcreatedeploymentaaa--image=aaa-image:1.2 -r=2, 然后把生成的deploy,-oyaml,删除不必要信息,保存为yamlapiVersion:apps/v1kind:Deploymentmetadata: labels:  app:my-app name:my-app namespace:app-ns......
  • IDEA基于maven创建Java web项目
    idea:2022.2.3 IDEA新建项目,更改项目名称,有需要的可以更改项目地址,将Buidsystem从intelliJ更改到Maven 在pom.xml中添加依赖<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><......