Kubernetes(k8s)中Pod的创建过程是一个涉及多个组件协作的复杂流程,下面将详细描述这个过程,确保内容的详尽性和深度。

一、用户提交创建请求

Pod的创建始于用户通过kubectl命令行工具或其他Kubernetes API客户端提交创建请求。用户通常需要编写一个描述Pod及其容器配置、资源需求和其他相关设置的YAML文件。这个文件是Pod的规格(spec)的声明性描述。使用kubectl apply -f <yaml文件>命令,用户将Pod规格提交给Kubernetes API server。

二、API Server的认证与接收

API server接收到Pod创建请求后,首先进行身份认证和授权检查,确保请求来自合法的用户且具备相应的权限。一旦通过认证和授权,API server会解析YAML文件中的信息,并将其转换为Pod对象的API表示。这个表示包含了Pod的所有配置细节,如容器的镜像、环境变量、资源限制等。

三、写入etcd存储

API server将Pod对象的初始状态写入etcd,这是一个分布式的键值存储系统,用于持久化保存Kubernetes集群的状态信息。etcd的写入操作是原子的,确保了数据的一致性和可靠性。通过将Pod对象的状态存储在etcd中,Kubernetes集群中的其他组件可以访问和监视这些状态变化。

四、Scheduler调度

Kubernetes Scheduler是一个核心组件,负责将Pod分配到集群中的合适节点上。Scheduler通过监视API server上的Pod对象来发现新创建的Pod。当Scheduler检测到尚未被调度的Pod时,它会根据一系列调度算法和策略(如资源需求、节点亲和性、反亲和性等)来选择一个最合适的节点。这个选择过程考虑了集群的当前状态、节点的资源可用性以及Pod的特定需求。一旦选定节点,Scheduler会将Pod与所选节点的绑定信息更新到API server中。

五、Kubelet创建并运行Pod

被选中的节点上的kubelet代理会监视API server以获取分配给该节点的Pod。当kubelet检测到有新的Pod被调度到其所在节点时,它会开始创建并运行Pod中的容器。kubelet首先根据Pod规格中的信息拉取容器镜像(如果本地不存在),然后设置容器的网络环境、挂载存储卷等。kubelet还负责确保容器的健康状态,并在需要时重启容器以恢复其正常运行。此外,kubelet还会定期向API server报告Pod的状态信息,以便集群中的其他组件和用户可以了解Pod的当前状态。

六、状态更新与反馈

在Pod创建和运行过程中,kubelet会不断向API server报告Pod的状态信息(如运行中、成功、失败等)。API server将这些状态更新写入etcd中保存。这样,用户和其他Kubernetes组件可以通过API server查询Pod的当前状态,以便进行监控和管理操作。同时,如果Pod的状态发生变化(如容器崩溃或资源不足),kubelet会及时报告这些变化,并触发相应的故障处理机制(如自动重启容器或重新调度Pod到其他节点)。

总结来说,Kubernetes中Pod的创建过程涉及多个组件的协作和交互,包括用户提交请求、API server的认证与接收、etcd的存储与状态更新、Scheduler的调度以及kubelet的创建与运行等步骤。这个过程确保了Pod能够在Kubernetes集群中正确创建并按预期运行。

k8s创建Pod的流程的更多相关文章

  1. k8s创建pod流程

    kubernetes 创建Pod 的 工作流: step.1 kubectl 向 k8s api server 发起一个create pod 请求(即我们使用Kubectl敲一个create pod命 ...

  2. k8s创建pod和service的过程

    一.概念介绍 更详细的参见:https://www.kubernetes.org.cn/5335.html 1.K8s K8s 是一种用于在一组主机上运行和协同容器化应用程序的系统,提供应用部署.规划 ...

  3. K8s创建pod yaml文件详解

    kubernetes创建pod的yaml文件,参数说明 apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中 kind: Pod #指定创建资源的角色/类型 ...

  4. CentOS 7 yum安装 k8s 创建Pod一直处于ContainerCreating状态 问题解决

    问题描述 使用CentOS7的 yum 包管理器安装了 Kubernetes 集群,使用 kubectl 创建服务成功后,执行 kubectl get pods,发现AGE虽然在不断增加,但状态始终不 ...

  5. pod(一):Kubernetes(k8s)创建pod的两种方式

    目录 一.系统环境 二.前言 三.pod 四.创建pod 4.1 环境介绍 4.2 使用命令行的方式创建pod 4.2.1 创建最简单的pod 4.2.2 创建pod,指定镜像下载策略 4.2.3 创 ...

  6. kubernetes/k8s CRI分析-kubelet创建pod分析

    先来简单回顾上一篇博客<kubernetes/k8s CRI 分析-容器运行时接口分析>的内容. 上篇博文先对 CRI 做了介绍,然后对 kubelet CRI 相关源码包括 kubele ...

  7. k8s组件通信或者创建pod生命周期

    Kubernetes 多组件之间的通信原理: apiserver 负责 etcd 存储的所有操作,且只有 apiserver 才直接操作 etcd 集群 apiserver 对内(集群中的其他组件)和 ...

  8. kubectl 创建 Pod 背后到底发生了什么?

    原文链接:kubectl 创建 Pod 背后到底发生了什么? 想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run - ...

  9. 12.深入k8s:kubelet创建pod流程源码分析

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 在上一篇中,我们知道在kubelet中,工作核心就是围绕着整个syn ...

  10. 9.1 k8s pod版本更新流程及命令行实现升级与回滚

    1.创建 Deployment root@k8-deploy:~/k8s-yaml/controllers/deployments# vim nginx-deployment.yaml apiVers ...

随机推荐

  1. Cheat Engine 官方教程汉化

    CE修改器官方教程汉化版,区别于前款教程,官方教程中使用的是Tutorial64位程序,如下是经过翻译后的官方文档. 第一步:欢迎 当教程启动时,您应该会看到类似的东西,您只需在阅读帮助文本后单击&q ...

  2. C/C++ Qt 命令行版网络通信

    通常情况下Qt如果需要建立网络通信则必须依附于图形界面,但如果是新手入门,图形界面则显得太过于繁琐不利于学习原理,如下本人实现了命令行版本的网络通信案例,能够让读者更好的理解Qt是如何创建网络通信套接 ...

  3. 性能暴增70%!AMD线程撕裂者RPO 7000将于10月19日发布: 96核心Zen 4史无前例

    据wccftech最新报道,AMD的下一代Ryzen Threadripper(线程撕裂者)PRO 7000"Storm Peak"CPU将于10月19日作为终极工作站解决方案亮相 ...

  4. 绝对凶器!NVIDIA Titan Z细节全曝光

    AMD Radeon R9 295X2已经拉开了新一代双芯卡皇大战的序幕,接下来就等NVIDIA GeForce GTX Titan Z的登场了.最新消息显示,它比原计划推迟了一个星期,将在5月8日正 ...

  5. delphi IDE 代码 恢复

  6. Linux-计算毫秒数

    date +%s返回自划时代以来的秒数. date +%s%N返回秒数+当前纳秒数. 因此,echo $(($(date +%s%N)/1000000))是你需要的毫秒数 date +"%T ...

  7. JS leetcode 有序数组的平方 题解分析,灵活运用Math.pow与Math.abs方法

    壹 ❀ 引 郁闷的周一,晚上来做一道简单的算法题提提神,题目来自leetcode977. 有序数组的平方,题目描述如下: 给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也 ...

  8. .NET周刊【2月第1期 2024-02-04】

    祝大家新年快乐,龙年大吉~ 国内文章 C#/.NET/.NET Core优秀项目和框架2024年1月简报 https://www.cnblogs.com/Can-daydayup/p/18000401 ...

  9. 延时队列 DelayQueue

    当用户超时未支付时,给用户发提醒消息.另一种场景是,超时未付款,订单自动取消.通常,订单创建的时候可以向延迟队列种插入一条消息,到时间自动执行.其实,也可以用临时表,把这些未支付的订单放到一个临时表中 ...

  10. ESP8266 ESP-01S模块使用及AT命令

    ESP-01S PIN定义 工作时连线方法 ESP-01S USB2TTL/MCU GND GND TX(GPIO1) RX RX(GPIO3) TX 3.3V 3.3V 相关文件下载 固件及烧录软件 ...