news 2026/6/23 15:52:36

Kubernetes 之资源对象 Pod详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 之前启动。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 15:48:52

专业的金属矿山数智化标杆服务商

在当今的数字化转型浪潮中,金属矿山行业正面临着前所未有的挑战与机遇。山东艾特智能技术有限公司(以下简称“山东艾特”)作为行业的领军者,凭借其在金属矿山数智化领域的深厚积累和技术优势,为矿山企业提供了从技术研…

作者头像 李华
网站建设 2026/6/23 15:46:14

2026 年命理研究工具的功能和配套内容,会不会买了之后就不再更新了?第三方学习路径观察

命理研究工具的功能和配套内容,会不会买了之后就不再更新了? 这个问题在 2026 年越来越常见,核心原因是命理工具的使用场景已经从“快速排一张盘”进入到“长期研究、客户复盘和专业表达”的阶段。第三方观察来看,判断工具是否适合…

作者头像 李华
网站建设 2026/6/23 15:36:36

大语言模型推理优化:从思维链到潜在状态轨迹的范式跃迁

1. 项目概述:从“显式”到“隐式”的推理范式跃迁 最近在折腾大语言模型(LLM)推理优化时,一个绕不开的话题就是“思维链”。我们习惯了让模型在生成答案前,先“自言自语”地写下一段推理过程,这确实让它在解…

作者头像 李华
网站建设 2026/6/23 15:30:51

构建高质量专业基准:从知识抽取到专家协同的BAGEL数据集实践

1. 项目概述:为什么我们需要BAGEL基准?在人工智能,特别是大语言模型(LLM)如火如荼发展的今天,我们经常听到一个词:“幻觉”。模型可能会一本正经地胡说八道,尤其是在面对专业、垂直领…

作者头像 李华
网站建设 2026/6/23 15:24:31

阿尔伯塔软件项目管理 V 笔记(三)

E. 一份总结当时进展的旧备忘录。 https://github.com/OpenDocCN/cs-notes-pt3-zh/raw/master/docs/albt-swpjmgt5/img/8a2978ee313ff24c28578b60df801f0e_3.png 制品的定义是包容性的。这意味着任何被某人认为对项目重要或有意义的东西都可以被视为制品。因此,所…

作者头像 李华
网站建设 2026/6/23 15:24:21

SVG viewBox本质:空间坐标系标尺与跨平台动画核心原理

1. 这不是“属性”,而是一把空间标尺:为什么90%的SVG动画卡在viewBox上 你有没有试过把一个精心设计的SVG图标放进Vue组件,结果它要么缩成针尖大小,要么撑满整个屏幕还糊成一片?或者用Greensock做路径动画时&#xff0…

作者头像 李华