Kubernetes家族容器小管家Pod在线答疑

不知道学习k8s的小伙伴们有没有跟我一样的疑问?

k8s为什么不是直接运行容器,而是让Pod介入?

Pod又是什么?为什么在应用容器化如此普遍的情况下k8s要推出Pod概念?

小葵花Pod课堂开课啦

本文主要理解的一个核心点,什么是Pod?我们先不关注Pod怎么使用,怎么调度,如何实现最佳实践。这些问题后续继续讨论,在不懂为什么k8s要有Pod的情况下,去先深究最佳实践没有实际意义。

囧么肥事-k8s专场

Pod官方定义

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

Pod (就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器

这些容器共享存储、网络、以及怎样运行这些容器的声明。

Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。

Pod 所建模的是特定于应用的“逻辑主机”,

其中包含一个或多个应用容器,

这些容器是相对紧密的耦合在一起的。

Linux命名空间、cgroups

*namespace*

Linux namespace 提供了一种内核级别隔离系统资源的方法,通过将系统的全局资源放在不同的namespace中来实现资源隔离的目的.Linux 中六类系统资源的隔离机制

● Mount: 隔离文件系统挂载点

● UTS: 隔离主机名和域名信息

● IPC: 隔离进程间通讯

● PID: 隔离进程的 ID

● NetWork: 隔离网络资源

● User: 隔离用户和用户组的 ID

cgroups

cgroups 限制一个进程组能够使用的资源上限,包括 CPU,内存,磁盘,网络带宽等,同时可以设置进程优先级,以及将进程挂起和恢复等。

docker 角度理解Pod

Pod 的共享上下文包括一组 Linux 名字空间、控制组(cgroup)和可能一些其他的隔离 方面,即用来隔离 Docker 容器的技术。 在 Pod 的上下文中,每个独立的应用可能会进一步实施隔离。

就 Docker 概念的术语而言,Pod 类似于共享名字空间和文件系统卷的一组 Docker 容器。

Pod 中多个容器如何协调?

Pod 被设计成支持形成内聚服务单元的多个协作过程(形式为容器)。

Pod 中的容器被自动安排到集群中的同一物理机或虚拟机上,并可以一起进行调度

容器之间可以共享资源和依赖、彼此通信、协调何时以及何种方式终止自身

例如,你可能有一个容器,为共享卷中的文件提供 Web 服务器支持,以及一个单独的 “sidecar(挂斗)”容器负责从远端更新这些文件,如下图所示:

如何理解Pod共享上下文?

一个Pod的共享上下文是Linux命名空间、cgroups和其它潜在隔离内容的集合。 在Pod中,容器共享一个IP地址和端口空间,它们可以通过localhost发现彼此。

同一个Pod中的容器,可以使用System V 或POSIX信号进行标准的进程间通信和共享内存

不同Pod中的容器,拥有不同的IP地址,因此不能够直接在进程间进行通信。容器间通常使用Pod IP地址进行通信

Pod 的上下文可以理解成多个linux命名空间的联合:

● PID 命名空间(同一个Pod中应用可以看到其它进程)

● 网络 命名空间(同一个Pod的中的应用对相同的IP地址和端口有权限)

● IPC 命名空间(同一个Pod中的应用可以通过VPC或者POSIX进行通信)

● UTS 命名空间(同一个Pod中的应用共享一个主机名称)

《k8s-企业级容器应用托管》- 持续更新

第一段:认识k8s是什么?推荐阅读:《云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?》

第二段:认识k8s家庭成员?推荐阅读:《趁着同事玩游戏偷偷认识k8s一家子补补课》

第三段:认识k8s容器小管家Pod?推荐阅读:《Kubernetes家族容器小管家Pod在线答疑》

第四段:待更新?推荐休闲阅读:《囧么肥事》

Kubernetes家族容器小管家Pod在线答疑?的更多相关文章

  1. 同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念?

    同事提出个我从未想过的问题,为什么Kubernetes要"多此一举"推出静态Pod概念? 我们知道k8s中Pod可以说是一个合格的容器小管家,Pod 被设计成支持多个容器可以一起进 ...

  2. Docker应用:Kubernetes(容器集群)

    阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) Docker应用:Kubernetes(容器集群) 前言: 终于出第三篇了,上个月就已 ...

  3. Win10上的Docker应用:Kubernetes(容器集群)

    阅读目录: Docker应用:Hello World Docker应用:Docker-compose(容器编排) Docker应用:Kubernetes(容器集群) 前言: 终于出第三篇了,上个月就已 ...

  4. Kubernetes(k8s)容器运行时(CRI)

    Kubernetes节点的底层由一个叫做"容器运行时"的软件进行支撑,它负责比如启停容器这样的事情.最广为人知的容器运行时当属Docker,但它不是唯一的.事实上,容器运行时这个领 ...

  5. [转帖]Kubernetes及容器编排的总体介绍【译】

    Kubernetes及容器编排的总体介绍[译] 翻译自The New Stack<Kubernetes 生态环境>作者:JANAKIRAM MSV和 KRISHNAN SUBRAMANIA ...

  6. CRI 与 ShimV2:一种 Kubernetes 集成容器运行时的新思路

    摘要: 关于 Kubernetes 接口化设计.CRI.容器运行时.shimv2.RuntimeClass 等关键技术特性的设计与实现.     Kubernetes 项目目前的重点发展方向,是为开发 ...

  7. Kubernetes中资源清单与Pod的生命周期(二)

    一.资源清单 1,定义: 在k8s中一般使用yaml格式的文件来创建符合我们预期的资源,这样的yaml被称为资源清单. 使用资源清单创建Pod: kubectl apply -f nginx.yaml ...

  8. 从 Kubernetes 谈容器网络

    基本概念 在 Kubernetes 中.资源从管理粒度上分为三级:容器.Pod.Service. 容器 即 Docker 或者 Rocket 容器(1.0 中仅支持这两种容器). 容器是最低粒度的资源 ...

  9. 三小时学会Kubernetes:容器编排详细指南

    三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后 ...

随机推荐

  1. Cookie.Session到Token和JWT

    一.session和cookie: 现在一般都是session和cookie一起用,一起提.但是他们俩其实不是一定要在一起. session的产生原因是,http协议是无状态的 这就导致了,不同的用户 ...

  2. Layui table 学习笔记

    templet:'<div>{{createrFormat(d.accounts.name)}}</div>' function createrFormat(o){ retur ...

  3. [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer

    [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer 目录 [源码解析] PyTorch 分布式之 ZeroRedundancyOptimizer 0x00 摘要 0 ...

  4. 离线下载第三方Python包

    1.进入Python第三方包下载地(https://pypi.org/)搜索自己需要的包 2.下载需要的包的版本 3.将.whl格式的文件更改为.zip文件,并且解压 4.将解压的2个文件放到Pyth ...

  5. 【Java】Java8新特性

    文章目录 Java8新特性 Lambda表达式的使用 语法格式一:无参,无返回值 语法格式二:Lambda 需要一个参数,但是没有返回值. 语法格式三:数据类型可以省略,因为可由编译器推断得出,称为& ...

  6. 读 Linux 像读小说「GitHub 热点速览 v.22.03」

    本周特推选取了一个画风有点意思的 Linux 代码带读项目 flash-linux0.11-talk,希望有趣的文风能带你读完 Linux 代码.当然画风可以增加阅读体验,彩色标记也是一种学习方法-- ...

  7. 【刷题-LeetCode】210. Course Schedule II

    Course Schedule II There are a total of n courses you have to take, labeled from 0 to n-1. Some cour ...

  8. thingsboard源码编译启动

    开发环境 不同的版本对应的开发环境不同(这里以3.3.3版本说明) jdk11+:参考jdk11+安装(win) Maven3.6+:Maven安装配置 Git:参考Git安装 IDEA: 参考IDE ...

  9. MySQL单表查询(分组-筛选-过滤-去重-排序)

    目录 一:单表查询 1.单表查询(前期准备) 2.插入记录(写入数据) 3.查询关键字 二:查询关键字之where 1.查询id大于等于3小于等于6的数据 2.查询薪资是20000或者18000或者1 ...

  10. Java虚拟机的意义

    什么是Java虚拟机? 作为程序员,大家都知道写的代码都是在Java虚拟机上运行的,但大家是否知道,Java虚拟机又是什么呢? 先看看网上搜到有关JAVA虚拟机的介绍 : 虚拟机是一种抽象化的计算机, ...