k8s--基础--12.1--pod--概念
k8s
·
k8s–基础–12.1–pod–概念
1、什么是pod
- pod将容器绑定在一起,并将它们作为一个最小调度单元进行管理
- 由一个或者多个容器组成,这些容器总是运行在同一个工作节点上,因为一个pod绝不会跨多个工作节点。
- pod创建方式
- 直接创建:不建议
- 控制器创建:建议
- 在集群范围内,控制器为Pod提供自愈能力,以及副本和部署管理能力
- Pod本身就没有打算作为持久化的实体,在调度失败、Node失败和获取其它退出缺少资源或者Node在维护情况下,Pod都会被删除。
- 不要用单个 Pod 来运行同一应用程序的多个实例。
1.1、一个pod绝不会跨多个工作节点
1.2、pod 理解
- pod是容器的载体,用于管理容器
- 以前我们将docker部署在linux机器上,现在我们将docker部署在pod中,所以可以将pod理解为一个linux机器。
2、pod相互访问
- k8s中所有的pod都在同一个共享网络地址空间中
- 每个pod都有自己的IP
- 每个pod都可以通过其他pod的IP地址实现相互访问。
- 无论pod是否在同一个工作节点上都能够相互通信。
3、同一个pod中的所有容器 共享资源
3.1、网络
- 同一个pod中的所有容器 共享网络名称空间,包括IP地址和网络端口
- 每个pod都被分配唯一的IP地址
- Pod内部的容器 通信
- 可以使用localhost相互通信。
- 可以使用标准的进程间通信如SystemV信号量或POSIX共享内存相互通信
- Pod外部的容器 通信,
- 不同Pod中的容器具有不同的IP地址,无需特殊配置,可通过IPC进行通信;。
3.2、存储:
- 同一个pod中的所有容器 可以共享存储卷,允许这些容器共享数据
- 存储卷也允许Pod中的持久数据在需要重新启动的情况下存活。
3.2、命名空间:
- 同一个pod中的所有容器共享 命名空间
- 同一个pod中的所有容器总是被同时调度,它们有共同的运行环境,运行在同一个共享上下文中
- 共享上下文是一组linux命名空间,cgroup,以及其他可能隔离的方面
4、Pod怎么工作?
- 当一个pod被创建直接创建,或间接由控制器创建时,它被安排在集群中的节点上运行。
- 在进程终止、pod对象被删除、pod由于缺乏资源而被驱逐或节点失败之前,pod仍然位于该节点上。
4.1、pod本身无法自我修复
- 如果将Pod调度到发生故障的节点,或者调度操作本身失败,则将Pod删除
- 如果缺乏资源或Node维护,Pod也被删除。
4.2、注意
- 不要将重新启动Pod中的容器与重新启动Pod混淆。
- pod不是一个进程,而是一个运行容器的环境,Pod一直存在直到被删除为止。
5、pod和控制器关系
- 可以使用控制器创建和管理多个pod
- 控制器种类
- deployment
- statefulset
- daemonset
- 控制器在pod失败的情况下可以处理副本、更新以及自动修复。例如
- 如果某个节点发生故障,则控制器会注意到该节点上的Pod已停止工作,并创建了一个替换Pod。调度程序将替换的Pod放置到健康的节点上。
更多推荐
已为社区贡献55条内容
所有评论(0)