写点什么

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

作者:囧么肥事
  • 2022 年 4 月 24 日
  • 本文字数:1305 字

    阅读完需:约 4 分钟

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

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 中的应用共享一个主机名称)





Kubernetes 推荐学习书


Kubernetes 权威指南 PDF 链接:https://pan.baidu.com/s/11huLHJkCeIPZqSyLEoUEmQ 提取码:sa88


k8s 系列所有问题更新记录:GitHub

发布于: 刚刚阅读数: 3
用户头像

囧么肥事

关注

还未添加个人签名 2021.04.30 加入

微信公众号:囧么肥事

评论

发布
暂无评论
Kubernetes家族容器小管家Pod在线答疑?_Kubernetes_囧么肥事_InfoQ写作社区