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

20250718-4-Kubernetes 应用程序生命周期管理-Pod对象:实现机制_笔记

一、Pod对象



1. 资源共享实现机制
1)共享网络



  • 基本概念
    • 实现方式:通过将业务容器网络加入到负责网络的容器(infra container)实现网络共享
    • 核心特点:共享网络协议栈(包括TCP/IP、MAC地址、端口等),打破网络命名空间隔离
    • 典型示例:Nginx主容器与busybox边车容器共享infra container网络,可通过localhost互相访问
  • 实现机制
    • 基础镜像:使用pause:3.4.1镜像创建infra container
    • 容器关系:所有业务容器(如Nginx、busybox)都会关联到同一个infra container
    • 隐藏特性:在k8s层面不可见,需通过节点docker ps命令查看
  • 实践验证
    • 验证方法:
      • 通过docker ps | grep pod-web查看实际运行的三个容器(含隐藏的infra container)
      • infra container命名规则:k8s_POD_<pod名称>_<命名空间>_<ID>
    • 镜像特征:
      • 体积仅几MB大小
      • 运行简单程序保持容器不退出
      • 所有Pod都会自动创建对应的infra container
  • 关键要点
    • 识别特征:镜像名称为registry.aliyuncs.com/google_containers/pause:3.4.1
    • 核心作用:专门负责维护Pod的网络栈
    • 部署特点:每个Pod对应一个独立的infra container实例
2)共享存储



  • Pod共享网络与存储示例
    • 共享网络机制
      • 实现方式:将业务容器网络加入到"负责网络的容器"中实现网络共享
      • 访问验证:通过127.0.0.1可以访问另一个容器,证明网络命名空间已共享
      • 典型应用:nginx+php架构中,php可以通过127.0.0.1:9000被nginx访问
    • 共享存储机制
      • 数据卷类型:使用emptyDir实现容器间共享存储
      • 挂载配置:
        • 主容器nginx挂载到/usr/share/nginx/html
        • 边车容器busybox挂载到/data
      • 验证方法:在边车容器/data目录创建文件,主容器能立即读取
    • 配置示例解析
      • 容器顺序:容器定义顺序不影响角色,完全由业务功能决定
      • volumeMounts:通过相同名称的volume实现目录共享
      • emptyDir特性:临时存储空间,Pod删除后数据丢失
    • 实际操作演示
      • 验证步骤:
        • 在busybox容器的/data目录创建index.html
        • 通过wget 127.0.0.1验证nginx能访问该文件
        • 在nginx容器修改文件内容,busybox容器同步可见
      • 应用场景:日志采集场景中,主容器写日志到共享目录,边车容器负责日志收集
    • 常见问题解答
      • 网络隔离:默认每个容器有独立网络命名空间,共享网络打破这种隔离
      • 多端口暴露:一个Pod可以暴露多个端口,通过Service配置多个targetPort
      • 权限问题:共享目录的读写权限由挂载配置决定,不受容器角色限制
      • 与Docker区别:原理类似Docker的volume共享,但由K8s统一管理
2. 管理命令
1)Pod创建
  • YAML方式:通过kubectl apply -f pod.yaml命令创建Pod,其中YAML文件需包含apiVersion、kind、metadata和spec等必要字段
  • 命令行方式:使用kubectl run nginx --image=nginx直接创建运行nginx镜像的Pod
2)Pod查看
  • 列表查看:kubectl get pods命令可列出当前所有Pod的基本信息
  • 详情查看:kubectl describe pod <Pod名称>可查看指定Pod的详细配置和状态信息
3)日志管理
  • 基础日志:kubectl logs <Pod名称>查看Pod的标准输出日志
  • 容器指定:添加-c CONTAINER参数可查看多容器Pod中特定容器的日志
  • 实时跟踪:使用-f参数可以实时跟踪日志输出(类似tail -f功能)
4)容器交互
  • 终端接入:kubectl exec <Pod名称> [-c CONTAINER] -- bash命令可进入Pod容器的bash终端
  • 多容器选择:对于多容器Pod,需要通过-c参数指定要进入的容器名称
5)Pod删除
  • 删除操作:使用kubectl delete pod <Pod名称>命令可删除指定的Pod资源
  • 注意事项:删除后Kubernetes可能会根据控制器配置自动重建Pod
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

Pod网络共享机制

通过infra container实现网络协议栈共享(TCP/IP/MAC/端口等),打破网络命名空间隔离

共享原理:所有容器加入同一个infra container网络

⭐⭐⭐

Pod数据卷共享

使用emptyDir卷实现多容器目录共享(如Nginx日志目录与边车容器采集目录)

验证方法:在边车容器修改文件后主容器可实时读取

⭐⭐

边车容器(Sidecar)模式

主容器(如Nginx)与辅助容器(如日志采集器)通过共享网络/存储协同工作

典型场景:Nginx+PHP分离部署时通过127.0.0.1:9000通信

⭐⭐⭐⭐

infra container

每个Pod隐藏的基础容器,使用k8s.gcr.io/pause镜像维护共享网络

关键特征:镜像体积小(仅几MB),保持常驻不退出

⭐⭐

Service多端口暴露

一个Pod内多个容器端口可通过Service同时暴露(如Nginx 80和辅助服务8080)

配置要点:在YAML中定义多个targetPort

⭐⭐⭐

网络验证方法

在边车容器通过127.0.0.1访问主容器服务(如wget 127.0.0.1:80)

易错点:误认为需配置独立IP

⭐⭐

http://www.xdnf.cn/news/15678.html

相关文章:

  • 【宇树科技:未来1-3年,机器人可流水线打螺丝】
  • 服务攻防-Java组件安全FastJson高版本JNDI不出网C3P0编码绕WAF写入文件CI链
  • 提示工程核心概念:与AI清晰沟通的艺术
  • html复习
  • 【Spring WebFlux】什么是响应式编程
  • 软件测试全谱系深度解析:从单元到生产的质量保障体系
  • C#测试调用ServiceController类查询及操作服务的基本用法
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • Maven 配置文件核心配置:本地仓库、镜像与 JDK 版本
  • SQL映射文件
  • Vue3 业务落地全景:脚手架、权限、国际化、微前端、跨端与低代码 50 条实战心法
  • 闲庭信步使用图像验证平台加速FPGA的开发:第二十二课——图像直方图统计的FPGA实现
  • 【C++】总结—哪些场景下会产生临时变量或者临时对象?
  • k8s:手动创建PV,解决postgis数据库本地永久存储
  • React条件渲染
  • 零信任产品联合宁盾泛终端网络准入,打造随需而变、精准贴合业务的网络安全访问体系
  • Docker 与 GPU 训练
  • OSPF路由协议的协商过程
  • Java全栈面试实录:从电商场景到AIGC的深度技术考察
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
  • Maven私服仓库,发布jar到私服仓库,依赖的版本号如何设置,规范是什么
  • 精通 triton 使用 MLIR 的源码逻辑 - 第002节:再掌握一些 triton 语法 — 通过 02 softmax
  • 生成式引擎优化(GEO)核心解析:下一代搜索技术的演进与落地策略
  • Python包发布与分发全指南:从PyPI到企业私有仓库
  • LiteCloud超轻量级网盘项目基于Spring Boot
  • Solr7升级Solr8全攻略:从Core重命名到IK分词兼容,零业务中断实战指南
  • css样式中的选择器和盒子模型
  • 《汇编语言:基于X86处理器》第8章 高级过程(2)
  • QT跨平台应用程序开发框架(10)—— Qt窗口
  • PyCharm 高效入门指南(引言 + 核心模块详解)