概述
文章目录
- 前言
- 一、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的Pod前言一、Pod是什么二、Pod的使用的全部内容,希望文章能够帮你解决【云原生学习笔记】认识kubernetes的Pod前言一、Pod是什么二、Pod的使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复