云原生系列(八)

简介: 云原生系列(八)

k8s的工作负载pod

什么是wordloads呢?

工作负载是运行在k8s上的一个应用程序,一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎么样,可以用一组pod来表示一个工作负载(应用程序)。

什么是pod呢?

pod是一组容器(Containers),多个容器组成的。一个pod至少包含三种容器。

根/pause容器:基础容器

边车容器:从业务角度来说,也是属于应用程序的容器,在isitio里面它是服务网格服务治理那块会剥离出一个容器,这个叫做边车/数据面容器。

应用容器:应用程序的容器

临时容器:调试bug用的一种容器,需要在api-server.yaml开启门禁

pod是一种资源,可以独立使用,是没有调度的,不具备副本管理的能力

简单的Pod资源的例子:


apiVersion: v1kind: Podmetadata:  name: my-pod    spec:  containers:    - name: hello      image: busybox:latest      command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']  restartPolicy: OnFailure

结果如下:kubectl logs -f 容器名:类似tail -f的方式来查看日志

7ca7ace4b03b3213f35f38eb485944ec.png

Pod的生命周期,从大的方向,分为两个节点

第一个阶段初始化容器:比方说有三个初始化容器,这时Pause根容器先把它的活做完,然后初始化容器执行,串行执行。

第二个阶段是运行主容器标准的容器

每个pod都有一个特殊的被称为根容器(父容器)/pause容器。

为什么会存在pause容器呢?

在同一个pod的多个容器是共享命名空间的:共享网络通讯的命名空间,比方说通过localhost,不用ip,这种是容器的标准功能。容器在创建的时候,网络空间是隔离的,localhost是无法访问的,但是pod要打破这种壁垒。

pause容器的职责:

①、它作为pod中共享Linux名称空间的基础容器

②、启用PID进程ID名称空间共享后,它作为每个pod的PID为1的根进程,并回收僵尸进程。

③、共享Pause融国企挂载的持久化卷,这样简化了业务容器之间的通信问题,也解决了容器之间的文件共享问题。

④、共享Pause容器分配的网络资源或者网络命名空间,共享整个Pod的其他容器,其他所有容器都会通过join Namespace的方式加入到根容器的命名空间中。

pasue容器是一个非常小的镜像,大概700KB左右,是一个C语言写的,永远处于暂停状态。注意:进程ID的命名空间没有共享,启动的时候,其他所有容器可以共享存储命名空间和网络共享命名空间。开始启用一下,之后就暂停了。

下面的都是pasue容器:

724eed79150a9a5f7114182907d97732.png

pod健康检查的探针机制

在启动业务容器的之前会调用start钩子方法,然后会调用容器的存活探测:liveness probe和就绪性探测:readiness probe。这两个探测机制也可以同时,也可以自己配置什么时候调用。然后容器的存活性探测会不断的探测是否死亡,如果死亡的话会开启二次调度,然后再停止业务容器之前会调用stop钩子方法。

总之,Pod启动过程中的要点是:

①、pod启动,会先依次执行所有的初始化容器,有一个失败,则Pod不能启动。

②、接下来启动所有的应用容器(每一个应用容器都必须能一直运行起来),Pod开始正式工作,一个启动失败就会尝试重启pod内的这个容器,pod只要NotReady,pod就不对外提供服务了。

相关文章
|
Kubernetes Cloud Native 调度
【云原生】深入掌握k8s中Pod和生命周期
【云原生】深入掌握k8s中Pod和生命周期
565 0
|
存储 持续交付 Docker
Docker 镜像解密:分层存储与构建原理多角度解析
Docker 镜像解密:分层存储与构建原理多角度解析
502 0
|
Java 机器人 Maven
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
【Java用法】微服务之间的相互调用方式之一,通过FeignClient客户端调用其他微服务的方法包含熔断器(Hystrix)
465 0
|
3月前
|
Kubernetes Cloud Native 调度
寻因生物 × 阿里云 ACS:Argo Workflows 驱动的基因分析新范式
国家级专精特新“小巨人”企业寻因生物[1],基于阿里云容器服务全托管工作流引擎 Argo Workflows[2] (以下简称:全托管 Argo Workflows)与容器计算服务 ACS[3](以下简称:ACS)构建的了新一代基因生信分析平台。该平台实现生信流程编排效率提升 70%、计算成本降低超 50%、运维复杂度下降 70%,为单细胞、空间转录组、表观测序技术等前沿研究提供了高效、弹性、标准化的算力基础设施。
268 1
|
10月前
|
开发框架 人工智能 API
《鸿蒙开发工具链深度洞察:优缺剖析与提效指南》
鸿蒙系统作为创新型操作系统,其应用开发工具链具备显著优势:统一开发框架支持多设备适配,丰富易用的API简化功能实现,DevEco Studio提供强大开发支持,实时预览与热更新提升效率。然而,生态成熟度、多端深度优化及部分高级功能仍有不足。开发者可通过深入学习工具、利用开源资源、优化流程和提前规划适配来提高效率。随着工具链不断完善,开发者将助力鸿蒙生态繁荣发展。
633 0
|
域名解析 Kubernetes 网络协议
【K8S系列】深入解析DNS
【K8S系列】深入解析DNS
900 0
|
10月前
|
安全 物联网 定位技术
贴身守护还是隐私威胁?可穿戴设备的安全隐忧
贴身守护还是隐私威胁?可穿戴设备的安全隐忧
296 15
|
运维 安全 容灾
专有云文档中心升级 企业版V3.12.0重磅发布
阿里云专有云是基于阿里云分布式架构,针对企业级市场使用特点,为客户量身打造的开放、统一、可信的企业级云平台。本次专有云文档中心全面升级,从视觉体验、访问体验以及下载体验多个方面重塑用户观感,并配合专有云企业版V3.12.0全套容灾解决方案文档全量发布,助力您快速了解专有云功能特性。
专有云文档中心升级 企业版V3.12.0重磅发布
|
应用服务中间件 nginx Docker
Docker同一台宿主机容器通信-通过容器名称互联
本文详细介绍了如何通过容器名称实现同一宿主机上容器间的互联,并提供了实战案例。首先,文章解释了容器间通过自定义名称访问的原理,随后演示了创建并连接Tomcat与Nginx容器的具体步骤。此外,还讨论了配置中可能出现的问题及解决方案,包括避免硬编码IP地址和使用自定义容器别名来增强系统的灵活性与可维护性。通过这些实践,展示了如何高效地配置容器间通信,确保服务稳定可靠。
806 1
Docker同一台宿主机容器通信-通过容器名称互联
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
4689 9