【云原生学习笔记】认识kubernetes的Pod

文章目录

  • 前言
  • 一、Pod是什么
  • 二、Pod的使用
    • 控制器 Controller
    • Pod模板 Template
      • 资源配额:
      • 健康检查


前言


前面已经介绍完容器镜像的基本知识,接下来将介绍下集群中非常重要的一个概念——Pod.


一、Pod是什么

关于pod在前面也有一小部分零碎介绍,但没有专门的说明,pods是Kubernetes核心资源对象之一。下面是具体的介绍。

  • Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。(类似于Linux运行的进程。)

  • Pods提供两种共享资源:网络和存储。
    1)每个Pod被分配一个独立的IP地址,Pod中的每个容器共享网络命名空间,包括IP地址和网络端口。
    2)Pod中的所有容器都可以访问指定的共享存储volumes,允许容器共享数据。

  • Pod的两种使用方式
    1)一个Pod中运行一个容器:该模式是最常见的用法。
    2)在一个Pod中同时运行多个容器:一个Pod中也可以同时运行几个需要紧密耦合互相协作的容器,它们之间共享资源。Pod将这些容器的存储资源作为一个实体来管理。

  • 每个Pod都是运行应用的单个实例,如果需要水平扩展应用(例如,运行多个实例),则应该使用多个Pods,每个实例一个Pod。

二、Pod的使用

直接在kubernetes中创建单个Pod是可以的,使用kubectl create 或者 kubectl apply指定资源对象类型为Pod。但是很少会这样做,就如前面的实践时都是通过Deployment创建。主要原因是:

  • Pod的生命周期短暂:属于用后即焚的实体。
  • Pod无容错性:即宿主机故障pod不能自动迁移,需要通过Deployment等控制器(Controller)来管理。

控制器 Controller

Controller可以创建和管理多个Pod,提供副本管理、滚动升级和集群级别的自愈能力。例如,如果一个Node故障,Controller就能自动将该节点上的Pod调度到其他健康的Node上。

Controller可以创建和管理多个Pod,提供副本管理、滚动升级和集群级别的自愈能力。如果一个Node故障,控制器会自动将该节点上的Pod调度到其他健康的Node上。即前面介绍过的Deployment就是控制器的一种。通常,Controller会用你提供的Pod Template来创建相应的Pod。

Pod模板 Template

对于 Pod Template前面也有简单提到,其内容是yaml的spec.template,该字段就是要创建pod的模板。这里补充介绍下两个pod下容器的核心配置。

资源配额:

资源配额的申请和限制是针对容器本身的,所以一般出现在spec.template.spec.containers下。
resources:这里的资源一般统一定义为:CPU、内存2种计算资源
【基本单位】

  • CPU 表达的是计算处理能力,其单位核数(1000m,1核)
  • 内存的单位是字节(Gi、Mi、Ki)

requests:表示kubernetes一定会分配给容器的资源数量
limits:表示理论上最大可以使用的资源数量,不一定能够分配到,如Node资源不够。

健康检查

健康检查使用的是容器探针,分为存活探针就绪探针两种。
探针的执行一般常用以下两种:
ExecAction:在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。
HTTPGetAction:对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求,响应的状态码大于等于200 且小于 400,则诊断被认为是成功的。

存活探针(livenessProbe) 就绪探针(readinessProbe)
介绍 用于判断容器是否正在运行,不配置时默认状态为 Success。 用于判断容器是否准备好服务请求,不配置时默认状态为 Success
失败时 杀掉Pod 切断上层到Pod的流量
适用场景 支持重新拉起的应用 重启后无法立即对外服务的应用

具体适用场景的介绍可见k8s中文文档。

你可能感兴趣的:(云原生学习笔记,kubernetes,云原生,学习)