Kubernetes Pod 入门

前言

如果你刚接触 Kubernetes(简称 K8s),那一定绕不开 “Pod” 这个核心概念。Pod 是 K8s 集群里最小的部署单元,就像一个 “容器工具箱”—— 它不直接跑业务,而是把容器和集群的网络、存储资源打包在一起,让应用能在集群中稳定运行。不管是简单的 Nginx 服务,还是需要多个组件协作的复杂应用,都得靠 Pod 落地。今天这篇文章就用 “大白话 + 实战” 的方式,带你吃透 Pod 的核心知识,从概念到配置全搞懂。

一、Pod 基础详解

1.1 Pod 的基本概念

简单说,Pod 是 K8s 里 “最小的可部署单元”,代表集群中的一个运行进程。你可以把它理解为 “容器的封装盒”:里面能装一个或多个联系紧密的容器,这些容器共享 Pod 的网络、存储等资源,就像住在同一个房子里的室友,共用客厅和网络。

K8s 不会直接管理容器,所有的高级功能(比如自动重启、滚动升级)都是通过控制器(像 Deployment、StatefulSet 这些 “管理工具”)围绕 Pod 实现的。所以搞懂 Pod,就是入门 K8s 的第一步。

1.2 Pod 的使用方式

根据里面装的容器数量,Pod 主要有两种用法,其中单容器 Pod 最常见。

1.2.1 单容器 Pod

这是最普遍的用法:一个 Pod 里只装一个容器。此时 Pod 就像给容器穿了件 “外套”,K8s 管理的是这个 “外套”,而不是里面的容器。比如部署一个 Nginx 服务,就可以用单容器 Pod。

简单配置示例(直接复制就能用):

apiVersion:v1# K8s 的 API 版本,Pod 用 v1 就行kind:Pod# 资源类型是 Podmetadata:name:single-container-pod# Pod 的名字,自己随便起spec:containers:-name:nginx# 容器的名字image:nginx:1.14# 要使用的镜像(相当于容器的“安装包”)
1.2.2 多容器 Pod

一个 Pod 里装多个容器,这些容器通常是 “工作搭档”—— 比如一个主应用容器(跑业务)和一个边车容器(收集日志、处理配置)。它们共享网络和存储,能通过localhost直接通信,不用走复杂的网络配置。

简单配置示例:

apiVersion:v1kind:Podmetadata:name:multi-container-podspec:containers:-name:app# 主应用容器image:my-app:latest# 自己的业务镜像-name:sidecar# 边车容器(辅助作用)image:log-collector:latest# 日志收集镜像

1.3 Pause 容器(基础容器)

每个 Pod 里都藏着一个 “隐形地基”—— Pause 容器(也叫基础容器)。它不用我们手动配置,K8s 会自动创建,主要做两件关键事:

  1. 提供 Pod 级别的 “基础环境”(Linux 命名空间),让里面的所有容器能共享网络和存储;
  2. 维护 Pod 的网络端点,让容器间通信更高效。

你可以在集群节点上执行docker ps命令,看到这个 “隐形容器”,它的镜像通常是这样的:registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0,作用就是 “稳住” 整个 Pod 的基础资源。

1.4 Pod 中的共享资源

Pod 里的容器之所以能协作,核心是共享了两种关键资源:网络和存储。

1.4.1 网络共享
  • 每个 Pod 会分配一个唯一的 IP 地址(相当于这个 “房子” 的门牌号);
  • 所有容器共享这个 IP 和端口,就像室友共用一个门牌号,互相拜访(通信)直接喊 “localhost + 端口” 就行;
  • 要和集群外的服务通信,就得通过宿主机的端口映射(相当于给房子装个对外的大门)。
1.4.2 存储共享
  • Pod 可以创建多个 “共享文件夹”(叫 Volume),所有容器都能访问;
  • 这些 “文件夹” 支持持久化存储,就算容器重启,里面的数据也不会丢(比如数据库的存储卷,重启后数据还在)。

1.5 Pod 的使用场景

Pod 不是随便用的,主要适合两种场景:

  1. 单一进程应用:最常见,一个 Pod 跑一个业务容器(比如 Nginx、MySQL),简单直接;
  2. 多进程协作:多个容器一起完成任务(比如主应用 + 日志收集器 + 配置更新器),它们必须紧密配合,缺一不可。

1.6 Pod 的类型

根据管理方式,Pod 分两种,生产环境里几乎都用第二种。

1.6.1 自主式 Pod

直接手动创建的 Pod,就像 “没人管的孩子”:如果它所在的节点出故障(比如宕机),这个 Pod 会被删除,而且不会自动重建,适合临时测试。

1.6.2 控制器管理的 Pod

由 K8s 的 “管理工具”(控制器,比如 Deployment)创建的 Pod,就像 “有监护人的孩子”:

  • 支持自动修复(节点故障了,会在其他节点重建 Pod);
  • 能管理多个副本(比如同时跑 3 个 Nginx Pod,负载均衡);
  • 支持滚动升级(更新应用时不中断服务),是生产环境的首选。

1.7 Pod 容器的分类

一个 Pod 里的容器分工明确,主要分三类:

1.7.1 基础容器(Infrastructure Container)

就是前面说的 Pause 容器,K8s 自动创建,维护基础资源,对我们透明(不用管它)。

1.7.2 初始化容器(Init Containers)

“准备工作专员”,必须在应用容器启动前跑完,而且要按顺序执行(第一个做完,第二个才开始)。主要做这些事:

  • 等待依赖服务就绪(比如先等数据库启动,再启动应用);
  • 生成配置文件、设置权限等初始化操作;
  • 如果初始化失败,K8s 会根据重启策略重试,直到成功。
1.7.3 应用容器(Main Containers)

我们真正要部署的业务容器,比如 Nginx、MySQL,是 Pod 的核心。只有所有初始化容器都成功后,应用容器才会并行启动。

1.7.4 示例:等待myservicemydb服务就绪的初始化容器

下面用一个实战例子,带你看懂初始化容器的作用:我们要启动一个应用,但它必须等myservicemydb两个服务启动后才能运行。

步骤 1:创建带初始化容器的 Pod

新建文件myapp-pod.yaml,内容如下:

apiVersion:v1kind:Podmetadata:name:myapp-pod# Pod 名字labels:app:myappspec:# 应用容器(要等初始化完成才启动)containers:-name:myapp-containerimage:busybox:1.28# 轻量级工具镜像command:['sh','-c','echo 应用启动成功! && sleep 3600']# 模拟应用运行# 初始化容器(按顺序执行)initContainers:# 第一个:等 myservice 服务就绪-name:init-myserviceimage:busybox:1.28command:['sh','-c','until nslookup myservice; do echo 等 myservice...; sleep 2; done;']# 第二个:等 mydb 服务就绪-name:init-mydbimage:busybox:1.28command:['sh','-c','until nslookup mydb; do echo 等 mydb...; sleep 2; done;']
步骤 2:查看 Pod 状态(初始化阻塞)

执行命令创建 Pod:kubectl apply -f myapp-pod.yaml,然后查看状态:

kubectl get pods

会看到 Pod 状态是Init:0/2(两个初始化容器都没完成),因为myservicemydb还没创建,初始化容器一直在等。

步骤 3:创建依赖服务,让初始化完成

分别创建myservicemydb服务(模拟依赖就绪):

  1. 新建myservice.yaml
apiVersion:v1kind:Servicemetadata:name:myservicespec:ports:-protocol:TCPport:80targetPort:9376

执行:kubectl apply -f myservice.yaml

  1. 新建mydb.yaml
apiVersion:v1kind:Servicemetadata:name:mydbspec:ports:-protocol:TCPport:80targetPort:9377

执行:kubectl apply -f mydb.yaml

步骤 4:验证应用启动

再查看 Pod 状态:kubectl get pods,会发现状态变成Running(应用启动成功)。执行命令查看日志:

kubectl logs myapp-pod -c myapp-container

会输出应用启动成功!,说明初始化容器完成了依赖检查。

二、Pod 的核心配置

Pod 的稳定运行,关键靠两个核心配置:镜像拉取策略和重启策略。

2.1 镜像拉取策略(imagePullPolicy)

容器是基于 “镜像” 启动的(镜像相当于容器的 “安装包”),这个策略决定了 K8s 怎么获取镜像,有三种选择:

策略作用适用场景
IfNotPresent本地有镜像就用,没有才从网上拉(默认)生产环境(高效)
Always每次启动都重新从网上拉镜像开发环境(实时更)
Never只用地本地镜像,绝不从网上拉离线环境

配置示例(给 Nginx 容器设置 Always 策略):

spec:containers:-name:nginximage:nginx:1.14imagePullPolicy:Always# 每次启动都拉新镜像
2.1.1 镜像拉取策略案例

我们用一个实战案例,看看策略配置错了会怎么样:

步骤 1:创建一个有问题的 Pod

新建pod1.yaml

apiVersion:v1kind:Podmetadata:name:pod-test1spec:containers:-name:nginximage:nginximagePullPolicy:Alwayscommand:["echo","SUCCESS"]# 问题所在:执行完就退出

执行创建命令:kubectl create -f pod1.yaml

步骤 2:观察异常状态

查看 Pod 状态:kubectl get pods -o wide,会发现状态是CrashLoopBackOff(崩溃循环重启)。

原因:echo "SUCCESS"执行完就结束了,容器生命周期结束,但重启策略是默认的Always(一直重启),而且镜像拉取策略是Always,所以每次重启都要重新拉镜像,反复循环。

步骤 3:修复配置

修改pod1.yaml,删除错误命令,修改拉取策略:

apiVersion:v1kind:Podmetadata:name:pod-test1spec:containers:-name:nginximage:nginx:1.14imagePullPolicy:IfNotPresent# 本地有就不用拉

执行更新:kubectl apply -f pod1.yaml

步骤 4:验证结果

再查看状态:kubectl get pods -o wide,会显示Running(正常运行)。在集群节点上执行curl -I Pod的IP,会返回HTTP/1.1 200 OK,说明 Nginx 正常工作。

2.2 重启策略(restartPolicy)

这个策略决定了容器退出后,K8s 要不要重启它,也有三种选择:

策略作用适用场景
Always不管退出码是什么,都重启(默认)长期服务(如 Nginx)
OnFailure只有容器非正常退出(退出码非 0)才重启重要任务(怕意外崩溃)
Never退出后绝不重启一次性任务(如数据备份)

注意:K8s 不能直接重启 Pod,只能删除后重建,这个策略只针对容器。

配置示例(设置 OnFailure 策略):

spec:containers:-name:busyboximage:busyboxargs:['sh','-c','sleep 30; exit 3']# 30 秒后非正常退出restartPolicy:OnFailure# 非正常退出才重启
2.2.1 重启策略案例
步骤 1:创建默认策略的 Pod

新建pod3.yaml

apiVersion:v1kind:Podmetadata:name:foospec:containers:-name:busyboximage:busyboxargs:['sh','-c','sleep 10; exit 3']# 10 秒后非正常退出

执行创建:kubectl apply -f pod3.yaml

步骤 2:观察重启情况

10 秒后查看状态:kubectl get pods,会发现RESTARTS(重启次数)变成 1,说明默认的Always策略生效了,一直在重启。

步骤 3:修改为 Never 策略

修改pod3.yaml,添加重启策略:

apiVersion:v1kind:Podmetadata:name:foospec:containers:-name:busyboximage:busyboxargs:['sh','-c','sleep 10; exit 3']restartPolicy:Never# 绝不重启

执行更新:kubectl delete -f pod3.yaml && kubectl apply -f pod3.yaml

步骤 4:验证结果

实时监控状态:kubectl get pods -w,10 秒后容器退出,状态变成Error,但RESTARTS一直是 0,说明不再重启,策略生效。

总结

Pod 是 K8s 的 “基础积木”,核心要点其实很简单:

  1. 本质是 “容器封装盒”,里面有基础容器(Pause)、初始化容器(做准备)、应用容器(跑业务);
  2. 容器共享网络和存储,适合单一进程或紧密协作的多进程场景;
  3. 生产环境用 “控制器管理的 Pod”,配合IfNotPresent镜像拉取策略和Always重启策略,稳定又高效;
  4. 遇到问题用kubectl get pods(看状态)、kubectl describe pod 名字(查原因)、kubectl logs 名字 -c 容器名(看日志),基本能解决大部分问题。

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

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

相关文章

AI分类器效果调优:云端实时监控与调整

AI分类器效果调优:云端实时监控与调整 引言 作为一名算法工程师,你是否遇到过这样的困扰:模型训练完成后部署上线,却无法实时掌握它的表现?当用户反馈分类结果不准确时,你只能靠猜想来调整参数&#xff1…

计算机毕业设计 | SpringBoot+vue社团管理系统 大学社团招新(附源码+论文)

1,绪论 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理社团管理系统的相关信息成为必然…

亲测好用专科生必备TOP8AI论文软件测评

亲测好用专科生必备TOP8AI论文软件测评 2026年专科生论文写作工具测评:为何需要这份榜单? 随着AI技术在学术领域的广泛应用,越来越多的专科生开始借助智能工具提升论文写作效率。然而,面对市场上琳琅满目的AI论文软件,…

分类器持续学习方案:Elastic Weight Consolidation实战

分类器持续学习方案:Elastic Weight Consolidation实战 引言 想象一下,你训练了一只聪明的导盲犬来识别10种不同的指令。某天你想教它认识第11种指令时,却发现它完全忘记了之前学过的所有指令——这就是机器学习中著名的"灾难性遗忘&q…

Kubernetes Pod 进阶实战:资源限制、健康探针与生命周期管理

前言 掌握 Pod 基础配置后,进阶能力才是保障 K8s 应用稳定运行的关键。想象一下:如果容器无节制占用 CPU 和内存,会导致其他服务崩溃;如果应用卡死但 K8s 不知情,会持续转发流量造成故障;如果容器启动时依赖…

AI模型横向评测:ChatGPT、Gemini、Grok、DeepSeek全面PK,结果出人意料,建议收藏

文章对四大AI进行九大场景测试,Gemini以46分夺冠,但各AI优势不同:ChatGPT擅长问题解决和图像生成,Gemini在事实核查和视频生成上优异,Grok在深度研究上有亮点,DeepSeek仅支持基础文本处理。结论是没有完美的…

从 “开题卡壳” 到 “答辩加分”:paperzz 开题报告如何打通毕业第一步

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 开题报告https://www.paperzz.cc/proposal 开题报告是毕业论文的 “第一道关卡”—— 不仅要定研究方向、理清楚研究思路,还要做 PPT 给导师答辩,不少学生卡在 “思路写…

计算机毕业设计 | SpringBoot社区物业管理系统(附源码)

1, 概述 1.1 课题背景 近几年来,随着物业相关的各种信息越来越多,比如报修维修、缴费、车位、访客等信息,对物业管理方面的需求越来越高,我们在工作中越来越多方面需要利用网页端管理系统来进行管理,我们…

Qwen3-VL-WEBUI镜像优势解析|附Qwen2-VL同款部署与测试案例

Qwen3-VL-WEBUI镜像优势解析|附Qwen2-VL同款部署与测试案例 1. 引言:为何选择Qwen3-VL-WEBUI镜像? 随着多模态大模型在视觉理解、图文生成和跨模态推理等任务中的广泛应用,开发者对高效、易用且功能强大的部署方案需求日益增长。…

开题不慌:paperzz 开题报告功能,让答辩从 “卡壳” 到 “顺畅”

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 开题报告https://www.paperzz.cc/proposal 对于高校学子而言,“开题报告” 是毕业论文的 “第一关”—— 既要讲清研究价值,又要理明研究思路,还要准备逻辑清…

DeepSeek V4即将发布:编程能力全面升级,中国大模型迎关键突破!

DeepSeek即将发布新一代大模型V4,其核心是显著强化的编程能力,已在多项基准测试中超越主流模型。V4在处理超长编程提示方面取得突破,对真实软件工程场景尤为重要。该模型训练过程稳定,未出现性能回退问题,体现了DeepSe…

paperzz 开题报告功能:从模板上传到 PPT 生成,开题环节的 “躺平式” 操作指南

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 开题报告https://www.paperzz.cc/proposal 对于毕业生来说,“开题报告” 是论文流程里的第一道 “关卡”:既要写清楚研究思路,又要做开题 PPT,还…

大模型不是风口而是新大陆!2026年程序员零基础转行指南,错过再无十年黄金期_后端开发轻松转型大模型应用开发

2025年是大模型转型的黄金期,百万级岗位缺口与高薪机遇并存。文章为程序员提供四大黄金岗位选择及适配策略,介绍三种转型核心方法:技能嫁接法、高回报技术栈组合和微项目积累经验。同时给出六个月转型路线图,强调垂直领域知识与工…

揭秘6款隐藏AI论文神器!真实文献+查重率低于10%

90%学生不知道的论文黑科技:导师私藏的「学术捷径」曝光 你是否经历过这些论文写作的崩溃瞬间? 深夜对着空白文档发呆,选题太偏找不到文献支撑?导师批注“逻辑混乱”“引用不规范”,却看不懂背后的真实需求&#xff…

AI分类器实战:10分钟搭建邮件过滤系统,成本不到1杯奶茶

AI分类器实战:10分钟搭建邮件过滤系统,成本不到1杯奶茶 引言:小公司的邮件烦恼 每天早晨,行政小王打开公司邮箱时总会头疼——上百封邮件中至少一半是垃圾邮件:促销广告、钓鱼邮件、无效通知...手动筛选不仅耗时&…

基于Qwen3-VL-WEBUI的多模态模型部署实践|附详细步骤

基于Qwen3-VL-WEBUI的多模态模型部署实践|附详细步骤 1. 引言:为何选择 Qwen3-VL-WEBUI 部署方案? 随着多模态大模型在图文理解、视觉代理和视频推理等场景中的广泛应用,如何快速、稳定地将模型部署到生产或开发环境中成为关键挑…

跨语言分类解决方案:云端GPU支持百种语言,1小时部署

跨语言分类解决方案:云端GPU支持百种语言,1小时部署 引言 当你的企业开始拓展海外市场,突然发现来自越南、泰国、印尼的用户反馈如潮水般涌来时,是否遇到过这样的困境?客服团队看着满屏非母语的文字束手无策&#xf…

MiDaS模型实战:工业检测中的深度估计应用

MiDaS模型实战:工业检测中的深度估计应用 1. 引言:AI 单目深度估计的现实价值 在智能制造与自动化检测日益普及的今天,三维空间感知能力已成为机器“看懂”世界的关键一步。传统深度感知依赖双目视觉、激光雷达或多传感器融合方案&#xff…

ResNet18物体识别懒人方案:按需付费,不用维护服务器

ResNet18物体识别懒人方案:按需付费,不用维护服务器 引言 作为小公司CTO,你是否遇到过这样的困境:想尝试AI项目赋能业务,却被高昂的IT运维成本和复杂的技术栈劝退?传统AI项目需要购买服务器、搭建环境、训…

如何找国外研究文献:实用方法与技巧指南

盯着满屏的PDF,眼前的外语字母开始跳舞,脑子里只剩下“我是谁、我在哪、这到底在说什么”的哲学三问,隔壁实验室的师兄已经用AI工具做完了一周的文献调研。 你也许已经发现,打开Google Scholar直接开搜的“原始人”模式&#xff…