有了容器为什么kubernetes还需要Pod?
简介
容器并不是软件开发的银弹,没有任何一种技术能解决软件开发中的所有问题
当我们采用容器化技术的时候,摒弃了传统的物理机或者虚拟机的部署方式,以一种更加轻快,便捷的方式来部署我们的应用。到容器化的进阶,再加上kubernetes对容器的编排技术,使得容器化的利益进一步扩大。但是对于kubernetes来说,直接调度编排管理的基本单位并非容器,而是另外一种结构体。
假设容器中同时运行着多个不相关的进程,这些进程的持续运行,管理,以及输入输出日志会是容器的责任。如果这些不相关的进程同时都有标准的输出,而此时我们很难确定每个进程具体输出了什么内容。另一方面,每个容器是一个逻辑的运行单位,有着自己的命名空间,IP以及端口和其他信息,假如非一个团队开发的不同进程监听了相同的端口号,必将发生资源的争夺冲突。虽然多个进程运行在同一个容器中,无论是通过进程间通信还是通过存储文件进行共享文件都很容易,但是Docker和kubernetes还是期望每个进程都运行在自己的容器中,除非是和自己相关的子进程。如果你的多个进程有着依赖关系(例如:一个进程的启动依赖于另外一个进程),这样的多个进程推荐运行在相同的容器中。
由于不推荐将无关的进程运行在同一个容器中,但是特殊情况下还存在要求多个相关进程运行于同一个容器的需求,kubernetes提供了一种更高级的结构来把容器捆绑在一起,并将这种结构作为调度部署的基本单元,这个结构就是Pod。
Pod是一组并置的容器,是kubernetes中基本的构建模块。但是这并不意味着一个Pod总是包含多个容器,在实际应用中每个Pod只有一个容器是最常见的部署方式。这里要注意一点,虽然对于kubernetes来说,并不关心Pod位于哪个节点上,但是一个Pod的多个容器位于多个节点是不允许的,换句话说,同一个Pod的多个容器总是运行在同一个集群节点上。
kubernetes部署和操作的基本单位是Pod
隔离
相同Pod下运行的容器之间可以共享一些资源,但是并非全部资源(话句话说,这些容器并非完全隔离的),kubernetes通过配置可以让同一个Pod内的容器共享相同的linux命名空间和network等资源,所以这些容器共享相同的主机名和网络接口,话句话说,这些容器在Pod中可以进行IPC通信,就像在局域网中一样。既然共享相同的IP和端口号,那么多个容器就不能绑定到相同的端口,否则会出现端口冲突,所以这也是官方推荐一个Pod只运行一个容器的原因之一。
每个Pod都有自己独立的Ip和端口空间,所以不同的Pod内的容器永远不会发生端口冲突。同一个Pod中的容器具有相同的loopback,因此可以通过localhost与同一Pod中的其他容器进行通信
Pod网络
在同一个kubernetes集群中的Pod就和局域网内的每台服务器一样,他们共享一个网络地址空间,这个网络是通过软件基于真实链路来实现的。所以只要知道一个Pod的IP地址就可以进行访问,这个通信过程不通过网关,在通信上性能非常好。由于kubernetes把资源进行了抽象,所以Pod无论位于哪个服务器节点上,对于同一个集群内的Pod来说都一样。
Pod使用多个容器
在多数情况下,我还是建议每个Pod运行一个容器,但是如果你的多个容器有互相依赖关系(比如一个容器的启动依赖于另外一个容器),就需要把多个容器部署到一个Pod。一个Pod中运行一个容器更多的是基于应用分层的考虑,例如:一个应用的容器需要调用一个数据库的容器,这两个容器应该分配到不同的Pod中,不仅仅是为了提高集群机器的利用率,更是为了之后不同层次的扩容。对于kubernetes来说,操作和部署的基本单位是Pod,所以kubernetes扩容的单位是Pod并非容器,如果我们的应用层有性能瓶颈,我们就可以单独的对应用层的Pod进行单独扩容,其他层的Pod保持不变,这不仅仅是节省资金成本的问题了,而是横向扩展的灵活性问题。
●程序员修神之路--打通Docker镜像发布容器运行流程
●程序员修神之路--容器技术为什么会这么流行(记得去抽奖)
●程序员修神之路--kubernetes是微服务发展的必然产物
●程序员过关斩将--要想获取我的用户信息,就得按照规矩来
●程序员过关斩将--更加优雅的Token认证方式JWT
●程序员过关斩将--cookie和session的关系其实很简单
●程序员修神之路--用NOSql给高并发系统加速
●程序员修神之路--高并发系统设计负载均衡架构
●程序员修神之路--做好分库分表其实很难之一(继续送书)
●程序员修神之路--做好分库分表其实很难之二(送书继续)
●程序员过关斩将--你为什么还在用存储过程?
●程序员过关斩将--小小的分页引发的加班血案
●程序员修神之路--问世间异步为何物?
●程序员修神之路--提高网站的吞吐量????
有了容器为什么kubernetes还需要Pod?相关推荐
- 记一次 Kubernetes 集群 Pod Eviction 问题排查过程
声明: 本博客欢迎转发,但请保留原作者信息! 新浪微博:@Lingxian_kong; 微信公众号:飞翔的尘埃; 内容系本人学习.研究和总结,如有雷同,实属荣幸! 现象:一个普通的 k8s 集群,3 ...
- k8s pod内部容器_第三章 pod:运行于kubernetes中的容器
本章内容涵盖 创建. 启动和停止 pod 使用标签组织 pod 和其他资源 使用特定标签对所有 pod 执行操作 使用命名空间将多个 pod 分到不重叠的组中 调度 pod 到指定类型的工作节点 上一 ...
- 为什么Kubernetes要引入pod的概念,而不直接操作Docker容器
首先我们要明确一个概念,Kubernetes并不是只支持Docker这一个容器运行时,通过我的另一篇文章什么是Kubernetes的CRI-容器运行时接口介绍的内容,我们知道Kubernetes通过C ...
- Kubernetes入门:Pod、节点、容器和集群都是什么?
文章来源地址: http://mini.eastday.com/a/180103191329488.html?qid=02263 Kubernetes正迅速成为云计算中部署和管理软件的新标准.不过,K ...
- Kubernetes 中创建 Pod 时集群中到底发生了些什么?
想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...
- Kubernetes基础:Pod的详细介绍
本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...
- Kubernetes 进阶训练营 Pod基础
Pod基础 K8s架构图 组件 kube-apiserver kube-controller-manager kube-controller-manageer kube-scheduler kubel ...
- 【Kubernetes系列】Pod
文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...
- Kubernetes 中的 Pod 是什么?
前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...
最新文章
- burpsuite https 社区版_微软推出Visual Studio 2019 RC版 正式版预计四月到来
- linux IP局域网监控工具——iptraf
- 计算机系本科毕业论文评阅评语,毕业论文评阅教师评语
- 编程的《九句真言》(ZT)
- django orm 常用查询筛选
- zookeeper集群介绍
- 【渝粤教育】广东开放大学 文化产业项目案例分析 形成性考核 (51)
- 简单好用的计算器:bc
- Linux中weblogic的设置
- 编程语言 - 大数据 - Hadoop
- nxdn标准简介_标准活动介绍
- Q# 微软量子计算编程语言
- 【渝粤教育】电大中专沟通技巧_1作业 题库
- Charles抓包:APP抓包工具配置手机代理证书
- 算法:泽勒的一致性 给定一个日期,输出这个日期是该年一周中的星期几 【c++ java python版本】
- 卸载python2.7_完美的.NET Framework卸载工具(支持卸载framework 1.0~4.7.2)
- 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 插电!开机!轻松秒杀!
- 对TCL/TK的一个小总结
- PHP设置文本框背景透明度,话说半透明文本框!(不透明度可以任意调节,可以实现全透明)...
- JavaWeb 打开的默认主页设置问题
热门文章
- Careercup - Google面试题 - 4877486110277632
- xp下设置文件的权限(转)
- Mac OSX使用VMware Fusion安装windows虚拟机教程
- 如何在VMware Player中设置和安装Windows Home Server“ Vail”
- 如何从Internet Explorer或Edge迁移到Chrome(以及为什么要迁移)
- 阿里云云计算ACP考试知识点(标红为重点)
- 详解用65行javascript代码做Flappy Bird
- 【数据库中间件】MyCat分表分库规则实现
- LVS:三种负载均衡方式与八种均衡算法
- 安卓事件机制与页面跳转