简介

容器并不是软件开发的银弹,没有任何一种技术能解决软件开发中的所有问题

当我们采用容器化技术的时候,摒弃了传统的物理机或者虚拟机的部署方式,以一种更加轻快,便捷的方式来部署我们的应用。到容器化的进阶,再加上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?相关推荐

  1. 记一次 Kubernetes 集群 Pod Eviction 问题排查过程

    声明: 本博客欢迎转发,但请保留原作者信息! 新浪微博:@Lingxian_kong; 微信公众号:飞翔的尘埃; 内容系本人学习.研究和总结,如有雷同,实属荣幸! 现象:一个普通的 k8s 集群,3 ...

  2. k8s pod内部容器_第三章 pod:运行于kubernetes中的容器

    本章内容涵盖 创建. 启动和停止 pod 使用标签组织 pod 和其他资源 使用特定标签对所有 pod 执行操作 使用命名空间将多个 pod 分到不重叠的组中 调度 pod 到指定类型的工作节点 上一 ...

  3. 为什么Kubernetes要引入pod的概念,而不直接操作Docker容器

    首先我们要明确一个概念,Kubernetes并不是只支持Docker这一个容器运行时,通过我的另一篇文章什么是Kubernetes的CRI-容器运行时接口介绍的内容,我们知道Kubernetes通过C ...

  4. Kubernetes入门:Pod、节点、容器和集群都是什么?

    文章来源地址: http://mini.eastday.com/a/180103191329488.html?qid=02263 Kubernetes正迅速成为云计算中部署和管理软件的新标准.不过,K ...

  5. Kubernetes 中创建 Pod 时集群中到底发生了些什么?

    想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令: $ kubectl run --image=nginx --replicas=3 然后回车. ...

  6. Kubernetes基础:Pod的详细介绍

    本文的演练环境为基于Virtualbox搭建的Kubernetes集群,具体搭建步骤可以参考kubeadm安装kubernetes V1.11.1 集群 1. 基本概念 1.1 Pod是什么 Pod是 ...

  7. Kubernetes 进阶训练营 Pod基础

    Pod基础 K8s架构图 组件 kube-apiserver kube-controller-manager kube-controller-manageer kube-scheduler kubel ...

  8. 【Kubernetes系列】Pod

    文章目录 概述 使用 Pod 管理 pod 的工作负载资源 Pod 管理多个容器 Pod的使用 Pod 操作系统 Pod 和控制器 Pod 模板 Pod 更新与替换 资源共享和通信 Pod 中的存储 ...

  9. Kubernetes 中的 Pod 是什么?

    前言 本文隶属于专栏<1000个问题搞定大数据技术体系>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见1000个问题搞定大数据技 ...

最新文章

  1. burpsuite https 社区版_微软推出Visual Studio 2019 RC版 正式版预计四月到来
  2. linux IP局域网监控工具——iptraf
  3. 计算机系本科毕业论文评阅评语,毕业论文评阅教师评语
  4. 编程的《九句真言》(ZT)
  5. django orm 常用查询筛选
  6. zookeeper集群介绍
  7. 【渝粤教育】广东开放大学 文化产业项目案例分析 形成性考核 (51)
  8. 简单好用的计算器:bc
  9. Linux中weblogic的设置
  10. 编程语言 - 大数据 - Hadoop
  11. nxdn标准简介_标准活动介绍
  12. Q# 微软量子计算编程语言
  13. 【渝粤教育】电大中专沟通技巧_1作业 题库
  14. Charles抓包:APP抓包工具配置手机代理证书
  15. 算法:泽勒的一致性 给定一个日期,输出这个日期是该年一周中的星期几 【c++ java python版本】
  16. 卸载python2.7_完美的.NET Framework卸载工具(支持卸载framework 1.0~4.7.2)
  17. 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 插电!开机!轻松秒杀!
  18. 对TCL/TK的一个小总结
  19. PHP设置文本框背景透明度,话说半透明文本框!(不透明度可以任意调节,可以实现全透明)...
  20. JavaWeb 打开的默认主页设置问题

热门文章

  1. Careercup - Google面试题 - 4877486110277632
  2. xp下设置文件的权限(转)
  3. Mac OSX使用VMware Fusion安装windows虚拟机教程
  4. 如何在VMware Player中设置和安装Windows Home Server“ Vail”
  5. 如何从Internet Explorer或Edge迁移到Chrome(以及为什么要迁移)
  6. 阿里云云计算ACP考试知识点(标红为重点)
  7. 详解用65行javascript代码做Flappy Bird
  8. 【数据库中间件】MyCat分表分库规则实现
  9. LVS:三种负载均衡方式与八种均衡算法
  10. 安卓事件机制与页面跳转