当前位置: 首页 > news >正文

学习笔记十九: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 配置。

相关文章:

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

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

Qwen2-VL:增强视觉语言模型对世界任意分辨率的感知能力

1、摘要 Qwen2-VL系列是Qwen-VL模型的高级升级版本,它重新定义了传统视觉处理中预设分辨率的方法。Qwen2-VL引入了Naive Dynamic Resolution机制,使模型能够动态处理不同分辨率的图像,并将其转换为不同数量的视觉标记。这种机制使模型能够生…...

原神新版本角色牌上新 七圣召唤增添新玩法

在原神这款游戏中,5.4版本更新后七圣召唤玩法将新增2张角色牌和对应天赋牌、3张行动牌,并进行部分卡牌平衡调整,今天就给大家介绍一下。 一、角色牌【基尼奇】 1.元素战技:选一个我方角色,自身附属钩索链接并进入夜魂…...

Spring 中的 事务 隔离级别以及传播行为

1. 事务隔离级别(Isolation Level) 事务隔离级别定义了事务在并发环境下的行为,主要解决以下问题: 脏读(Dirty Read):一个事务读取了另一个未提交事务的数据。 不可重复读(Non-Re…...

为多个GitHub账户配置SSH密钥

背景 当需要同时使用多个GitHub账户(例如工作和个人账户)时,默认的SSH配置可能导致冲突。本文介绍如何通过生成不同的SSH密钥对并配置SSH客户端来管理多个账户。 操作步骤 生成SSH密钥对 为每个GitHub账户生成独立的密钥对,并指…...

OSPF基础(3):区域划分

OSPF的区域划分 1、区域产生背景 路由器在同一个区域中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。OSPF域如果仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸…...

android studio无痛入门

在Android Studio中创建和管理项目主要涉及以下几个步骤: 1. 创建新项目 打开Android Studio,点击“Start a new Android Studio project”或者“File” > “New” > “New Project”。 选择一个模板,例如“Empty Activity”&#xff0…...

免费windows pdf编辑工具Epdf

Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …...

CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战

前一篇文章,学习率调整策略 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started CNN 卷积神经网络 CNN什么是卷积工作原理深度学习的卷积运算提取特征不同特征核的效果比较卷积核感受野共享权重池化 示例源码 …...

LeetCode 128: 最长连续序列

LeetCode 128: 最长连续序列 题目: 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums […...

大语言模型需要的可观测性数据的关联方式

可观测性数据的关联方式及其优缺点 随着现代分布式架构和微服务的普及,可观测性(Observability)已经成为确保系统健康、排查故障、优化性能的重要组成部分。有效的可观测性数据关联方式不仅能够帮助我们实时监控系统的运行状态,还…...

【韩顺平linux】部分上课笔记整理

整理一下一些韩顺平老师上课时候的笔记 课程:【小白入门 通俗易懂】韩顺平 一周学会Linux linux环境:使用阿里云服务器 笔记参考 : [学习笔记]2021韩顺平一周学会Linux 一、自定义函数 基本语法 应用实例: 计算两个参数的和…...

python调用pc的语音借口

先安装: pip install pyttsx3再运行: import pyttsx3 # 初始化语音引擎 def init_engine():engine pyttsx3.init()# 设置中文语音voices engine.getProperty(voices)for voice in voices:if chinese in voice.name.lower():engine.setProperty(voice…...

【Golang学习之旅】Golang 内存管理与 GC 机制详解

文章目录 前言1. Go 语言的内存管理的简述2. Golang 内存管理机制2.1 Go 语言的内存分配模型2.2 Go 变量分配示例2.3 Go 语言的内存池(sync.Pool) 3. Golang 垃圾回收(GC)机制详解3.1 Go 的 GC 机制概述3.2 GC 触发条件3.3 手动触…...

Kamailio 各个功能的共同点、不同点及应用场景

Kamailio 各个功能的共同点、不同点及应用场景: 功能共同点不同点应用场景SIP 注册服务器处理用户注册请求,维护用户位置信息专注于用户设备的注册和注销,维护设备位置企业内部通信系统,确保用户设备的动态注册和注销SIP 代理服务…...

Linux(CentOS)安装 Nginx

CentOS版本:CentOS 7 Nginx版本:1.24.0 两种安装方式: 一、通过 yum 安装,最简单,一键安装,全程无忧。 二、通过编译源码包安装,需具备配置相关操作。 最后附:设置 Nginx 服务开…...

string 与 wstring 的字符编码

测试代码: #include<stdio.h> #include<stdlib.h> #include<windows.h> #include <locale.h> #include <string> #include <iostream>// 函数用于计算UTF-8字符串中的字符数 int utf8_strlen(const char* str) {int len = 0;for (; *s…...

C#面试常考随笔14: 方法如何传递不定数量的参数?params关键字怎么使用?

使用params关键字&#xff0c;就可以像python传参那样传递多个参数&#xff0c;类似元组 主要作用 params 关键字的主要作用是让方法可以接受不定数量的参数&#xff0c;而不需要在调用方法时显式地创建数组来传递多个参数。这为方法调用提供了更大的灵活性&#xff0c;使得代…...

开发一款类似《王者荣耀》的游戏是一个复杂的系统工程,涉及多个领域的知识和技术。以下是从多个角度详细阐述如何开发的思维。

一、明确游戏定位与核心玩法 游戏类型 MOBA&#xff08;Multiplayer Online Battle Arena&#xff09;&#xff1a;强调团队合作、策略性和即时战斗。确定游戏模式&#xff08;如5v5、3v3等&#xff09;和地图设计。 核心玩法 角色设计&#xff1a;英雄技能、属性、成长曲线。…...

VMware下Linux和macOS安装VSCode一些总结

本文介绍VMware下Linux和macOS安装VSCode的一些内容&#xff0c;包括VSCode编译器显示中文以及安装.NET环境和Python环境。 VSCode下载地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 一.Linux系统下 1.安装中文包 按 Ctrl Shift P 打开命令面板。输…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...