Kubernetes 中的 Pod 是什么?
前言
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系
正文
Pod资源对象是一种集合了一到多个应用容器、存储资源、专用IP及支撑容器运行的其他选项的逻辑组件。
换言之, Pod 代表着 Kubernetes 的部署单元及原子运行单元,即一个应用程序的单一运行实例,它通常由共享资源且关系紧密的一个或多个应用容器组成。
Kubernetes 的网络模型要求其各 Pod 对象的 IP 地址位于同一网络平面内(同一 IP 网段),各 Pod 之间可使用其 IP 地址直接进行通信,无论它们运行于集群内的哪个工作节点之上,这些 Pod 对象都像是运行于同局域网中的多个主机。
我们可以将每个 Pod 对象想象成一个逻辑主机,它类似于现实世界中的物理主机或 VM ( VirtualMachine ),运行于同一个 Pod 对象中的多个进程也类似于物理机或 VM 上独立运行的进程。
不过, Pod 对象中的各进程均运行于彼此隔离的容器中,并于各容器间共享两种关键资源:网络和存储卷。
- 网络( Networking ):每个 Pod 对象都会被分配一个集群内专用的 IP 地址,也称为 Pod IP ,同一 Pod 内部的所有容器共享 Pod 对象的 Network 和 UTS 名称空间,其中包括主机名、 IP 地址和端口等。因此,这些容器间的通信可以基于本地回环接口 IO 进行,而与 Pod 外的其他组件的通信则需要使用 Service 资源对象的 Cluster 及其相应的端口完成。
- 存储卷( Flume ):用户可以为 Pod 对象配置一组“存储卷”资源,这些资源可以共享给其内部的所有容器使用,从而完成容器间数据的共享。存储卷还可以确保在容器终止后被重启,甚至是被删除后也能确保数据不会丢失,从而保证了生命周期内的 Pod 对象数据的持久化存储。
一个 Pod 对象代表某个应用程序的一个特定实例,如果需要扩展应用程序,则意味着为此应用程序同时创建多个 Pod 实例,每个实例均代表应用程序的一个运行的“副本”( replica )。
这些副本化的 Pod 对象的创建和管理通常由另一组称之为“控制器”(Controller) 的对象实现,例如, Deployment 控制器对象。
创建 Pod 时,还可以使用 Pod Preset 对象为 Pod 注入特定的信息,如 Configmap 、 Secret 、存储卷、卷挂载和环境变量等。
有了 Pod Preset 对象, Pod 模板的创建者就无须为每个模板显式提供所有信息,因此,也就无须事先了解需要配置的每个应用的细节即可完成模板定义。
基于期望的目标状态和各节点的资源可用性, Master 会将 Pod 对象调度至某选定的工作节点运行,工作节点于指向的镜像仓库( Imageregistry )下载镜像,并于本地的容器运行时环境中启动容器。
Master 会将整个集群的状态保存于 etcd 中,并通过 API Server 共享给集群的各组件及客户端。
Kubernetes 中的 Pod 是什么?相关推荐
- Kubernetes 中创建 Pod 时集群中到底发生了些什么?
想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...
- Kubernetes 中 设置pod不部署在同一台节点上
在k8s中,节点的调度主要由亲和性和污点来进行控制的. 而在亲和性部分由分为了节点亲和性和节点反亲和性. 节点亲和性是指在pod部署时,尽量(软策略)或者必须满足(硬策略)部署在某些节点上. ...
- Kubernetes 中 Evicted pod 是如何产生的
线上被驱逐实例数据 最近在线上发现很多实例处于 Evicted 状态,通过 pod yaml 可以看到实例是因为节点资源不足被驱逐,但是这些实例并没有被自动清理,平台的大部分用户在操作时看到服务下面出 ...
- Kubernetes 学习总结(25)—— Kubernetes 中的 pod 与容器的区别和联系
前言 容器本可以成为轻量级虚拟机的替代品.但是由于 Docker/OCI 的标准化,最广泛使用的容器形式是每个容器只有一个进程服务.这种方法有很多优点--增加隔离性.简化水平扩展.更高的可重用性等.但 ...
- Kubernetes 中的 Pod 安全策略
很多人分不清 SecurityContext 和 PodSecurityPolicy 这两个关键字的差别,其实很简单: •SecurityContext 是 Pod 中的一个字段,而 PSP 是一个独 ...
- kubernetes中给pod加hosts解析
在一些环境中,有些服务会绑定一个域名,这个时候我们想去访问这个服务的域名就需要做下对应的解析,经常使用的做法是在主机的/etc/hosts文件里面加上域名对应的ip方可访问,如果给在k8s上运行的po ...
- Grafana 在 Kubernetes 中的使用
安装 grafana 是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite.zabbix.InfluxDB.Prometheus.OpenTSDB. ...
- 记一次 Kubernetes 集群 Pod Eviction 问题排查过程
声明: 本博客欢迎转发,但请保留原作者信息! 新浪微博:@Lingxian_kong; 微信公众号:飞翔的尘埃; 内容系本人学习.研究和总结,如有雷同,实属荣幸! 现象:一个普通的 k8s 集群,3 ...
- Spring Cloud Kubernetes 中文文档
本参考指南介绍了如何使用Spring Cloud Kubernetes. 1.为什么需要Spring Cloud Kubernetes? Spring Cloud Kubernetes提供了使用Kub ...
最新文章
- python中复合条件_如何用Python选取复合条件的坐标组成新的列表?
- 内容处理和分发中的算法应用探究
- Spring Boot 内置Tomcat——getServletContext().getRealPath()为临时目录问题解决方案
- OVS中arp响应的流表的实现
- ext3文件系统反删除利器ext3grep应用实战
- c语言程序stm8s,stm8s的c语言编程例程
- js IE和Firefox下event处理
- 0到1:闲鱼高复杂度高性能社区圈子开发实录
- 实锤!Python 真没你想的那么简单…
- 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
- 学生成绩管理系统实验报告_学习60天python成果,Python变成学生成绩管理系统
- 【HTML+CSS网页设计与布局 从入门到精通】第7章-class、ID选择器,CSS格式
- Xcode 5中缺少Provisioning Profiles菜单项
- 【转】MIT博士林达华解说数学体系
- 小米发明“永动机”:走路即可为智能设备充电
- 前端常见问题以及处理方式 - - - (九) ES6中的set和map(map篇)
- 网络篇 网络设备的基本配置09
- 洛谷 5061 秘密任务——二分图染色
- Vue+Element-UI 上传图片,打开相机,相册
- map的valu增加算法