k8s–基础–12.1–pod–概念


1、什么是pod

  1. pod将容器绑定在一起,并将它们作为一个最小调度单元进行管理
  2. 由一个或者多个容器组成,这些容器总是运行在同一个工作节点上,因为一个pod绝不会跨多个工作节点。
  3. pod创建方式
    1. 直接创建:不建议
    2. 控制器创建:建议
      1. 在集群范围内,控制器为Pod提供自愈能力,以及副本和部署管理能力
  4. Pod本身就没有打算作为持久化的实体,在调度失败、Node失败和获取其它退出缺少资源或者Node在维护情况下,Pod都会被删除。
  5. 不要用单个 Pod 来运行同一应用程序的多个实例。

1.1、一个pod绝不会跨多个工作节点

在这里插入图片描述

1.2、pod 理解

在这里插入图片描述

  1. pod是容器的载体,用于管理容器
  2. 以前我们将docker部署在linux机器上,现在我们将docker部署在pod中,所以可以将pod理解为一个linux机器。

2、pod相互访问

  1. k8s中所有的pod都在同一个共享网络地址空间中
  2. 每个pod都有自己的IP
  3. 每个pod都可以通过其他pod的IP地址实现相互访问。
  4. 无论pod是否在同一个工作节点上都能够相互通信。

在这里插入图片描述

3、同一个pod中的所有容器 共享资源

3.1、网络

  1. 同一个pod中的所有容器 共享网络名称空间,包括IP地址和网络端口
  2. 每个pod都被分配唯一的IP地址
  3. Pod内部的容器 通信
    1. 可以使用localhost相互通信。
    2. 可以使用标准的进程间通信如SystemV信号量或POSIX共享内存相互通信
  4. Pod外部的容器 通信,
    1. 不同Pod中的容器具有不同的IP地址,无需特殊配置,可通过IPC进行通信;。

3.2、存储:

  1. 同一个pod中的所有容器 可以共享存储卷,允许这些容器共享数据
  2. 存储卷也允许Pod中的持久数据在需要重新启动的情况下存活。

3.2、命名空间:

  1. 同一个pod中的所有容器共享 命名空间
  2. 同一个pod中的所有容器总是被同时调度,它们有共同的运行环境,运行在同一个共享上下文中
    1. 共享上下文是一组linux命名空间,cgroup,以及其他可能隔离的方面

4、Pod怎么工作?

  1. 当一个pod被创建直接创建,或间接由控制器创建时,它被安排在集群中的节点上运行。
  2. 在进程终止、pod对象被删除、pod由于缺乏资源而被驱逐或节点失败之前,pod仍然位于该节点上。

4.1、pod本身无法自我修复

  1. 如果将Pod调度到发生故障的节点,或者调度操作本身失败,则将Pod删除
  2. 如果缺乏资源或Node维护,Pod也被删除。

4.2、注意

  1. 不要将重新启动Pod中的容器与重新启动Pod混淆。
  2. pod不是一个进程,而是一个运行容器的环境,Pod一直存在直到被删除为止。

5、pod和控制器关系

  1. 可以使用控制器创建和管理多个pod
  2. 控制器种类
    1. deployment
    2. statefulset
    3. daemonset
  3. 控制器在pod失败的情况下可以处理副本、更新以及自动修复。例如
    1. 如果某个节点发生故障,则控制器会注意到该节点上的Pod已停止工作,并创建了一个替换Pod。调度程序将替换的Pod放置到健康的节点上。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐