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

kubernetes pod是什么?

 1、容器、Pod是什么

  容器是一个独立的环境,我们在其中打包应用程序及其依赖项。通常,容器运行单个进程,每个容器都有一个IP地址,可以附加卷并控制CPU和内存资源等。所有这些都是通过命名空间和控制组的概念发生的。

  Kubernetes是一个用于部署、扩展和管理容器化应用程序的容器编排系统,它有自己的容器运行方式。其中,Pod是Kubernetes中最小的可部署单元,代表应用程序的单个实例。

  比如,如果想运行Nginx应用程序,就可以在Pod中运行。与容器的区别:容器是一个单一的单元,而一个Pod可以包含多个容器。可以将Pod视为将一个或多个容器容纳在一起的盒子。Pod提供更高级别的抽象,允许将多个容器作为一个单元管理。这里不再是每一个容器一个IP,而是Pod整体获取一个IP,然后Pod内的多个不同容器互相之间,用localhost通信。

   1)Pod内所有容器共享以下Linux命名空间:

  • 网络命名空间:统一IP、端口范围、路由规则;
  • IPC命名空间:支持进程间通信(信号、管道、共享内存);
  • UTS命名空间:共享主机名与域名;
  • 存储卷:Pod挂载的Volume(如EmptyDir、PersistentVolume)对所有容器可见。

  2)Pod内容器默认隔离以下资源:

  • PID命名空间:容器进程彼此不可见,可通过shareProcessNamespace: true开启共享;
  • 挂载命名空间:每个容器拥有独立文件系统(除非显式挂载Pod级Volume);
  • 资源限制:CPU、内存等cgroups限制可针对单个容器单独配置。
Pod的设计是Kubernetes对”容器化应用协作”的抽象优化——既保留了容器的隔离性(每个组件独立镜像、独立进程),又通过资源共享降低了协作成本。最终实现:
① 主业务与辅助功能分离,便于独立开发
② 容器间低延迟通信、资源共享、避免跨节点开销
③ 组件隔离运行,单个容器故障不扩散至整个应用

【ps】

  • Pod是k8s中最小的可部署单元
  • 一个pod可以有多个容器,可以运行的容器数量没有限制
  • Pod内的容器使用不同端口,通过localhost连接,避免端口冲突
  • 若有多个容器,则在Pod启动期间,所有主容器都会并行启动。而Pod内的init容器按顺序执行。
  • 只有“紧密耦合、声明周期一致、需要共享资源”的容器,才应放入同一个Pod。

2、Pod YAML(对象定义)

  Pod是原生Kubernetes对象,若要创建Pod,要以YAML格式声明pod要求。还可以用kubectl命令创建pod。以下是创建Nginx web服务器Pod的Pod yaml示例。

apiVersion: v1
kind: Pod
metadata:name: web-server-podlabels:app: web-serverenvironment: productionannotations:description: This pod runs the web server
spec:containers:- name: web-serverimage: nginx:latestports:- containerPort: 80
  • apiVersion:pod的API版本
  • kind:对象的种类,这里是pod
  • metadata:用于唯一标识和描述容器-标签,每个对象都必须使用标准标签进行标记,有助于对象进行分组。name(Pod的名称)
  • spec:声明了pod所需的状态
  • containers:声明pod内容器的所需状态。容器镜像、公开端口等。

3、创建Pod

  有两种方式创建容器:1)使用kubectl(命令有其自身局限性);2)声明性方法(使用YAML清单)。

Pod 的名称是 web-server-pod
它应该有标签 app:web-server 和 environment:production
添加注释来描述容器。
使用 nginx:1.14.2 容器镜像。
公开容器端口 80

 (1)使用kubectl命令创建Pod

kubectl run web-server-pod \--image=nginx:1.14.2 \--restart=Never \--port=80 \--labels=app=web-server,environment=production \--annotations description="This pod runs the web server"

  kubectl get pods可以看到容器正在运行的状态,在我们这个例子中pod内只有一个容器。因此显示1/1准备就绪并正在运行。如果想查看正在运行的pod的所有内容,可以使用kebectl来查看这个pod的描述:kubectl describe pod web-server-pod(包括IP地址、命名空间、容器详细信息等)

 (2)使用声明式YAML创建Pod

  就是上面那个YAML文件,需要使用文件名执行以下kubectl命令:kubectl create -f nginx.yaml。

  从本地工作站访问K8S集群中正在运行的pod。kubectl port-forward pod/web-server-pod 8080:80。此时进入到浏览器并访问localhost:8080会看到Nginx主页,该网页由我们的Nginx Web Server的Pod提供服务。

4、Pod生命周期

  Pod通常由ReplicaSet Controller、Deployment Controller等控制器管理,使用YAML创建单个Pod时,不受任何控制器管理,在这种情况下,Pod会经历不同的生命周期阶段。

  • Pending:创建Pod成功,但还在调度中。
  • Running:容器正常运行。
  • Succeeded:Pod内所有容器已终止。
  • Failed:所有Pod都终止,但至少有一个容器因失败而终止。
  • Unknown:容器状态未知。

 

参考:

1、https://zhuanlan.zhihu.com/p/714041421

 

http://www.jsqmd.com/news/50002/

相关文章:

  • 2025天然气压缩机源头工厂盘点分析
  • 2025并网柜制造厂家排名测评:行业风向尽在掌握
  • 金华门窗定制厂家哪家好?2025门窗定制出口工厂深度剖析
  • 2025年比较好的气体探测最新TOP厂家排名
  • 2025 广东专业音响厂家优选指南:广东天宏声光电科技有限公司 MYART/JBL/LYNX 进口国产演出 / KTV / 会议 / 舞台音响解决方案
  • 聚焦2025PA磨粉机厂家:甄选中国塑料磨粉机厂家
  • 如何通过LabVIEW父类获取其所有子类?
  • 2025 深圳手板制作厂家标杆:深圳市赛达尔手板模型有限公司 CNC/3D 打印 / 塑胶 / 铝合金 / 新能源汽车手板定制指南
  • 优质2025大型卷板机厂家哪家好测评大盘点
  • 2025年评价高的阻燃采样管路实力厂家TOP推荐榜
  • 20256S及目视化管理公司推荐:6S管理目视化公司有哪些清
  • 2025大型制管机厂家哪家好多维度分析
  • 2025年深圳离婚律师事务所权威推荐榜单:股权分割/房产分割律所/离婚房产专业律师团队精选
  • 想找靠谱厂家?2025VOCs监测设备厂家有哪些合集
  • 2025直升飞机灯选哪家好
  • 微高压氧舱厂家推荐:2025微高压氧舱代理加盟哪家好
  • 2025隔音降噪厂家,隔音房厂家盘点分析
  • 2025山东水肥一体化厂家哪家好?水肥一体机生产厂家揭秘
  • 聚焦2025:LE audio蓝牙测试适配器厂家实力榜单
  • 2025年广东磁铁公司权威推荐榜单:手机磁铁/耐高温磁铁/圆形磁铁源头公司精选
  • 2025质量好服务好的门窗厂家推荐分析
  • 停机坪灯选哪家好?2025停机坪灯品牌有哪些?
  • react 和 Vue 相对于JQ在开发上有哪些优点?
  • 2025 上海品牌营销策划公司标杆:上海零际营销策划有限公司全案营销 / 产品营销 / 企业营销一体化服务指南
  • 2025年电磁加热器厂家权威推荐榜单:电磁烘干机/电磁导热油炉/电磁热风炉源头厂家精选
  • 2025年比较好的饮料塑料瓶厂家最新TOP排行榜
  • 实用指南:项目——基于C/S架构的预约系统平台(3)
  • # vue3 使用 echarts 展示某省份各区市数据
  • 2025年评价高的罐头塑料瓶厂家最新热销排行
  • 2025 年 11 月角接触球轴承厂家权威推荐榜:覆盖电主轴/超高速/光伏专用/切片机/高低噪音等全场景精密轴承优选指南