5.Pod.md 2.9 KB

1.Pod的基本概念

  1. 在Kubernetes中,最小的管理元素不是一个个独立的容器,而是Pod,Pod是最小的,管理,创建,计划的最小单元。
  2. Pod是一组容器的集合
  3. 一个Pod中的容器共享网络空间
  4. Pod是短暂存在的

    2.Pod存在的意义

  5. 创建容器使用docker,一个docker对应一个容器,一个容器有进程,一个容器运行一个应用程序

  6. Pod是多进程设计,运行多个应用程序。

  7. 一个Pod有多个容器,一个容器里面运行一个应用程序

  8. Pod存在为了亲密性应用

  9. 两个应用进行交互

  10. 网络之间的调用

  11. 两个应用需要频繁调用

    3.Pod的实现机制

    1.共享网络

    容器之间相互隔离,namespace,group 多个容器在同一个namespace里面 image-20210629170139908 pause(info)是根容器 新容器(业务容器)会加入info容器之中 info容器会独立出IP地址,MAC地址 在同一个namespace里面

2.共享存储

pod持久化数据-日志数据,业务数据 持久化存储--数据卷(volumn)

4.镜像拉取策略

  • ifnotpresent:默认值,镜像在宿主机不存在才拉取
  • always:每次创建Pod都会重新拉取一次镜像
  • never:Pod永远不会主动拉取这镜像

    5.Pod资源的限制

    限制由docker实现

6.Pod的重启的机制

image-20210629180552052

7.Pod的健康检查

容器检查-无法检查潜在危险,例如不能提供服务 应用层面健康检查

K8S的检查机制 image-20210629180901274 image-20210629180953925

8.Pod的调度策略

image-20210629182003299 master节点 create --- apiserver -- etcd scheduler -- apiserver -- etcd --调度算法,把Pod调度某个node系欸但上

node节点 kublet -- apiserver -- 读取etcd拿到分配给当前节点的pod -- docker创建容器

1.影响调度的属性

1.Pod资源的限制

2.节点选择器标签

首先对节点创建标签

3.节点亲和性(nodeaffinity)

和nodeselector基本一样,根据节点上标签约束来决定Pod调度到那些节点上 (1)硬亲和性-required 约束条件必须满足 (2)软亲和性-preferred 尝试满足,不保证

支持的操作符 In NotIn Exists Gt Li DoesNotExists

4.污点和污点容忍

Taint污点:节点不做普通分配调度,是节点属性 (上面三个都是对Pod做的限制,污点是对节点表示限制)

  • 专用节点
  • 配置特定硬件节点
  • 基于Taint驱逐

污点值有三个 NoSchedule:一定不被调度 PreferNoSchdule:尽量不被调度 NoExecute:不会调度,并且还会驱逐Node已有Pod

污点容忍 image-20210630093930467 加入污点也可能被调度到