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

Kubernetes 之资源对象 Pod详解

官网:https://kubernetes.io/docs/concepts/workloads/pods/

简介

Pod 是 Kubernetes 中最小的可部署、可调度单元。 Kubernetes 不是直接管理单个容器,而是管理 Pod。一个 Pod 里面可以有一个容器,也可以有多个紧密协作的容器。这些容器共享存储、网络资源和运行规范;Pod 内的内容会被共同调度到同一台 Node 上运行。

Pod 内部三种容器详解

(1) Pause 基础设施容器(隐形容器,必存在,yaml 不配置)

特点:

  • 镜像:k8s.gcr.io/pause,很小,只有几百 KB
  • 所有 Pod 自动生成,不用在 yaml 定义,看不到配置
  • 整个 Pod 的网络基石

核心作用:

  • 创建 Pod 网络命名空间:pause 占住 net、uts 命名空间,后面所有业务 /init 容器加入这个网络,实现同 Pod 共用一个 IP、localhost互通
  • 共享 PID、挂载命名空间
  • 僵尸进程回收:回收容器产生的孤儿进程,避免容器残留
  • 一句话:Pause=Pod 的网络底座,没有它就没有 PodIP

(2) InitContainer 初始化容器(initContainers 字段配置)

运行规则:

  • 串行执行,从上到下逐个运行,上一个 init 成功退出,才运行下一个
  • 所有 Init 全部正常退出 (exit=0) 之后,才启动业务容器
  • 任意 Init 异常报错退出,Pod 反复重启(CrashLoopBackOff),业务永远起不来

常用场景:

  • 等待依赖服务就绪:等 MySQL、CoreDNS 启动完再启业务
  • 拉取配置文件、解压资源到共享目录
  • 目录权限初始化、预创建文件

简易 yaml 片段 展示具体位置:

spec: initContainers: name: init-wait image: busybox command: ["sh","-c","until nslookup mysql;do sleep 2;done"] #等待mysql解析成功 containers: name: nginx image: nginx

(3) 业务容器 containers(yaml 的 containers 数组,分两种:主容器 + Sidecar 边车)

Init 全部完成后,所有 containers 里的容器并行同时启动

a.  主业务容器

  • 跑核心业务:Nginx、Java 项目、MySQL,实现产品功能。

b .Sidecar 边车容器(本质还是业务容器,分工辅助)

  • 和主容器同网络、同存储,不处理业务,只做配套运维工作
  • 日志边车:Filebeat 采集主容器日志,推送 ELK
  • 代理边车:Envoy/Istio 做流量管控、熔断限流
  • 配置同步边车:实时同步配置文件
  • 示例:Nginx (主)+Filebeat (边车),共用 emptyDir 日志目录。

完整启动时序总结

  • kubelet 创建 Pause 容器 → 分配 PodIP、初始化网络
  • 依次运行所有 Init 容器,全部执行成功退出
  • 一次性启动所有 containers(主 + 边车)

配置文件 展示:

spec: initContainers: # 初始化容器,串行先跑完 - name: init-xxx image: busybox containers: # 业务+边车全都在这,并行启动 # 主业务容器 - name: nginx-main image: nginx ports: - containerPort:80 # sidecar边车容器(同pod,共享网络/存储) - name: filebeat-sidecar image: filebeat:7.9 volumeMounts: - name: logdir mountPath: /usr/local/nginx/logs


Pod 分类

1 .静态 Pod(Static Pod)    

静态 Pod 是节点 kubelet 直接管理的 Pod,完全不经过 API Server、调度器、控制器,仅靠节点本地 yaml 文件驱动运行

kubeadm 搭建集群时,控制平面组件(apiserver、etcd、scheduler、controller-manager)全部以静态 Pod 运行目录默认: /etc/kubernetes/manifests 

静态 Pod 始终都会绑定到特定节点的 Kubelet 上。这些 Pod 在节点的特定目录中定义(默认:/etc/kubernetes/manifests ),kubelet 会监视并管理这些 Pod 的生命周期。

静态 Pod 特性:

  • 无控制器管理:不由 Deployment、ReplicaSet 等控制器管理;
  • 节点级别:仅存在于定义它们的特定节点上;
  • API 服务器可见:可在集群中通过 kubectl get pods 查看;
  • 无法通过 kubectl 管理:只能通过修改节点上的配置文件进行操作;
  • 高优先级:在控制器管理的 Pod 之前启动。
http://www.jsqmd.com/news/1068061/

相关文章:

  • Celery 和 Apache Airflow 都可用于定时任务调度与全量数据批量分析,但定位、架构和适用场景有显著区别
  • Java 集合 - Java集合框架详解与应用
  • 毕业设计 深度学习yolo藻类细胞检测识别(科研辅助系统)(源码+论文)
  • pikachu详细通关教程
  • YOLO系列目标检测数据集大全【第四十一期】
  • 基于 Harmony 6.0 应用的乡村助农直播应用首页实现
  • UniLaViRA/HumanoidMimicGen/VERA/Tabero/S-Cheetah/FGO六大具身SOTA全网独家复现|零样本跨体导航/人形数据扩增/视频动作映射/触觉柔顺控力/仿生四足
  • 视频协议传输全解析:从 HTTP/HTTPS 到 HLS/DASH 的完整旅程
  • Java 集合 - 用好 SortedMap 和 NavigableMap,优化 Java 集合排序与操作效率
  • 后端常见问题
  • 继电器项目
  • RAG 系统化学习教程(含查询改写、混合检索、重排序、上下文增强与评估闭环)
  • 2026山东大学软件学院项目实训-宠物情绪识别(七)
  • 震动感应灯
  • Kimi LeetCode 3343. 统计平衡排列的数目 Java实现
  • 手把手教你学Simulink——基于单周期控制(One‑Cycle Control, OCC)的无桥 PFC 整流器仿真
  • 告别重复操作!OpenClaw 2.7.9 电脑自动化完整落地实操
  • 3PEAK思瑞浦 TPA8101-SOAR WSOP8 隔离放大器和调制器
  • 鸿蒙 NDK开发:使用命令行CMake构建工程(三)
  • Windows系统文件FM20.DLL丢失找不到问题解决
  • 为什么你越讨好别人,越没人把你当回事?
  • 腾讯犀牛鸟开源计划启动!一行命令部署 OpenTenBase,速通 issue 拿面试绿通
  • 监督学习与无监督学习是什么?关键区别在有没有答案
  • 【HarmonyOS 6】仿AI唤起屏幕边缘流光特效
  • 基于 Harmony 6.0 应用的车辆保养提醒管家实现
  • Shell脚本为何成为AI智能体视觉(TVA)的“反射弧”(7)
  • 衍射-全息混合架构:实现被动光学实时图像分类的光子AI系统
  • 卫星联邦学习CroSatFL:跨聚合机制如何破解星上智能节能难题
  • 智能合约库验证:上下文合约与模块化架构的测试策略对比
  • 软件质量控制中的统计过程控制