学习笔记十九:K8S生成pod过程

K8S生成pod过程

  • 流程图
  • 具体生成过程
    • 用户提交 Pod 定义
    • API Server 处理请求
    • 调度器分配节点(Scheduling)
    • 目标节点上的 Pod 创建
    • 网络配置
    • 状态上报与监控
    • 控制器管理(Controller Manager)
    • 就绪与服务发现
  • 关键错误场景
  • 高级特性

流程图

在这里插入图片描述

具体生成过程

用户提交 Pod 定义

用户通过提交 Pod 的 YAML/JSON 配置文件发送到 kube-apiserver。

kubectl apply -f pod.yaml 

API Server 处理请求

  • 认证与授权:API Server 验证用户身份(如 TLS 证书、Token)并检查权限(RBAC)。
  • 准入控制(Admission Control):
    • Mutating Admission Controllers:可能修改 Pod 配置(例如注入 Sidecar 容器)。
    • Validating Admission Controllers:验证配置的合法性(如资源限制是否合规)。
  • 持久化存储:验证通过后,Pod 的元数据写入 etcd 数据库,此时 Pod 状态为 Pending。

调度器分配节点(Scheduling)

  • kube-scheduler 监听 API Server,发现未绑定的 Pod。
  • 根据调度策略选择合适节点:
    • 资源需求(CPU/内存)。
    • 节点选择器(nodeSelector)、亲和性(affinity)、污点与容忍(tolerations)。
  • 更新 Pod 的 nodeName 字段并写入 etcd,触发事件(如 Scheduled)。

目标节点上的 Pod 创建

  • kubelet 监听 API Server,发现分配到本节点的 Pod。
  • Pod 配置同步:kubelet 从 API Server 获取 Pod 定义。
  • 存储卷挂载:按配置挂载持久卷(PV)、ConfigMap、Secret 等。
  • 容器运行时交互:
    • 拉取镜像:通过容器运行时(如 containerd)拉取镜像,失败时状态为 ImagePullBackOff。
    • 创建容器:
      • 先创建 pause 容器(共享网络命名空间)。
      • 按顺序启动 Init 容器(若有),全部成功后继续。
      • 启动主容器,执行生命周期钩子(如 postStart)。

网络配置

  • CNI 插件调用:kubelet 调用 CNI 插件为 Pod 分配 IP、设置网络(如 Calico、Flannel)。
  • 网络策略(NetworkPolicy)可能由 CNI 插件或其他组件(如 Cilium)实施。

状态上报与监控

  • kubelet 持续监控容器状态,定期向 API Server 上报:
    • 容器启动成功 → Pod 状态变为 Running。
    • 容器崩溃或探针失败 → 状态为 CrashLoopBackOff 或 Unhealthy。
  • 事件流记录:各组件(调度器、kubelet)通过 API Server 记录事件(如 Pulled, Started),可通过 kubectl describe pod 查看。

控制器管理(Controller Manager)

  • 若 Pod 属于高层资源(如 Deployment、ReplicaSet):
    • 控制器确保实际状态与期望状态一致(例如重启失败的 Pod 或维持副本数)。
    • 自愈机制:自动替换不健康的 Pod(如节点故障时重新调度)。

就绪与服务发现

  • 就绪探针(Readiness Probe) 通过后,Pod IP 被加入 Service 的 Endpoints。
  • kube-proxy 更新节点上的 iptables/ipvs 规则,允许流量路由到新 Pod。

关键错误场景

  • 调度失败:无合适节点 → Pod 保持 Pending,需检查资源请求、节点标签或污点。
  • 镜像拉取失败:私有镜像权限问题 → 状态为 ImagePullBackOff。
  • 容器崩溃:应用启动错误 → CrashLoopBackOff,需检查日志(kubectl logs)。

高级特性

  • Init 容器:按顺序运行,全部成功后才启动主容器。
  • Sidecar 注入:通过 Admission Controller(如 Istio 的自动注入)动态修改 Pod 配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16436.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(一)Axure制作移动端登录页面

你知道如何利用Axure制作移动端登录页面吗?Axure除了可以制作Web端页面,移动端也是可以的哦,下面我们就一起来看一下Axure制作移动端登录页面的过程吧。 第一步:从元件中拖入一个矩形框,并设置其尺寸为:37…

【C++】——精细化哈希表架构:理论与实践的综合分析

先找出你的能力在哪里,然后再决定你是谁。 —— 塔拉韦斯特弗 《你当像鸟飞往你的山》 目录 1. C 与哈希表:核心概念与引入 2. 哈希表的底层机制:原理与挑战 2.1 核心功能解析:效率与灵活性的平衡 2.2 哈希冲突的本质&#x…

第5章 数据库系统(选择|案例|论文)(重点★★★★★)

5.1 数据库管理系统1 数据库是长期存储在计算机内的、有组织的、可共享的数据集合,数据库系统是指在计算机信息系统中引入数据库后的系统,一般由数据库、数据库管理系统 (DataBaseManagement System,DBMS)、应用系统、数据库管理员(DataBase…

jenkins备份还原配置文件

下载ThinBackup插件 方式1 从插件市场直接下载 Manage Jenkins->Manage Plugins->可选插件搜索 注意:有时可能因为网络或者版本问题下载不了,好像是默认下载最新版本,可选择手动安装! 方式二 手动安装插件 点击查看手…

Vue笔记(八)

一、Pinia (一)手动添加Piaia到Vue项目 1.安装Pinia:使用包管理器进行安装,在项目目录下运行 npm install pinia 或 yarn add pinia ,为项目引入Pinia状态管理库。 2.创建Pinia实例:在项目的JavaScript代…

vue纯静态实现 视频转GIF 功能(附源码)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实现后的效果二、使用步骤1.引入库2.下载or复制出来js3. 前端实现 总结 前言 一天一个小demo 今天来一个vue纯静态实现 视频转GIF 功能 上一篇我们讲到了…

嵌入式八股文面试题(二)C语言算法

相关概念请查看文章&#xff1a;C语言概念。 1. 如何实现一个简单的内存池&#xff1f; 简单实现&#xff1a; #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…

【Python】集合

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;Python 文章目录 1. 集合的创建2. 集合的基本操作2.1 访问集合元素2.2 添加元素2.3 删除元素 3. 集合的数学运算3.1 交集&#xff08;& 或 intersection() 方法&#xff09;3.2 并集&#xff08;| 或 union() 方法&#xf…

Flutter_学习记录_基本组件的使用记录_2

1. PopupMenuButton的使用 代码案例&#xff1a; import package:flutter/material.dart;// ----PopupMemuButtonDemo的案例---- class PopupMemuButtonDemo extends StatefulWidget {const PopupMemuButtonDemo({super.key});overrideState<PopupMemuButtonDemo> crea…

基于java手机销售网站设计和实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

初识计算机网络

从此篇我将开始网络新篇章&#xff01; 1. 网络发展史 最初的计算机之间相互独立存在&#xff0c;每个计算机只能持有自己的数据&#xff0c;数据无法共享。此时的计算机为独立模式 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#x…

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中&#xff0c;遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…

【PS 2022】Adobe Genuine Service Alert 弹出

电脑总是弹出Adobe Genuine Service Alert弹窗 1. 不关掉弹窗并打开任务管理器&#xff0c;找到Adobe Genuine Service Alert&#xff0c;并右键进入文件所在位置 2 在任务管理器中结束进程并将文件夹中的 .exe 文件都使用空文档替换掉 3. 打开PS不弹出弹窗&#xff0c;解决&a…

Vue2生命周期面试题

在 Vue 2 中&#xff0c;this.$el 和 this.$data 都是 Vue 实例的属性&#xff0c;代表不同的内容。 1. this.$el this.$el 是 Vue 实例的根 DOM 元素&#xff0c;它指向 Vue 实例所控制的根节点元素。在 Vue 中&#xff0c;el 是在 Vue 实例创建时&#xff0c;指定的根元素&…

unity 安装Entities

因为Entities目前不支持用资源名动态加载资源&#xff01;没错&#xff0c;AssetsBundle或Addressables都不能用于Entities&#xff1b;也就意味着现阶段不能用Entities开发DLC或热更游戏。 Entities必须使用SubScene&#xff0c;而SubScene不能从资源动态加载&#xff0c;路被…

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务&#xff1a;从数据准备到模型训练与测试 1. 引言 在计算机视觉领域&#xff0c;图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始&#xff0c;逐步构建模型、训练模型&#xff0c;并在测试…

团结引擎 Shader Graph:解锁图形创作新高度

Shader Graph 始终致力于为开发者提供直观且高效的着色器构建工具&#xff0c;持续推动图形渲染创作的创新与便捷。在团结引擎1.4.0中&#xff0c;Shader Graph 迎来了重大更新&#xff0c;新增多项强大功能并优化操作体验&#xff0c;助力开发者更轻松地实现高质量的渲染效果与…

C# OpenCV机器视觉:模仿Halcon各向异性扩散滤波

在一个充满创意与挑战的图像处理工作室里&#xff0c;阿强是一位热情的图像魔法师。他总是在追求更加出色的图像效果&#xff0c;然而&#xff0c;传统的图像处理方法有时候并不能满足他的需求。 有一天&#xff0c;阿强听说了 Halcon 中的各向异性扩散滤波功能&#xff0c;它…

超详细的数据结构3(初阶C语言版)栈和队列。

文章目录 栈和队列1.栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 总结 栈和队列 1.栈 1.1 概念与结构 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的⼀端进行插⼊和删除元素操作。进⾏数据插⼊和删除操作的⼀端称为栈顶&#xff0c;另…

利用邮件合并将Excel的信息转为Word(单个测试用例转Word)

利用邮件合并将Excel的信息转为Word 效果一览效果前效果后 场景及问题解决方案 一、准备工作准备Excel数据源准备Word模板 二、邮件合并操作步骤连接Excel数据源插入合并域预览并生成合并文档 效果一览 效果前 效果后 场景及问题 在执行项目时的验收阶段&#xff0c;对于测试…