k8s yaml文件pod的生命周期

Pod是k8s中最小限额资源管理组件,也是最小化运行容器化的应用的资源管理对象。

Pod是一个抽象的概念,可以理解为一个或者多个容器化应用的集合。

在一个pod当中运行一个容器是最常用的方式。

在一个pod当中同时运行多个容器,在一个pod当中可以同时封装几个需要耦合的相互协作的容器。这些多个容器共享资源,也可以互相协作组成一个service单位。

不论运行一个容器还是多个容器。k8s管理的都是pod而不是容器。

一个pod内的容器,必须都运行在同一个节点上。基于现代容器技术的要求,一个pod运行一个容器,一个容器只运行一个进程。

横向扩展,方便扩缩容

解耦,一个pod内运行多个容器,耦合度太高,一但一个进程失败,整个pod将全部失败,实现解耦。基于pod可以创建多个副本实现高可用和负载均衡。管理方便简单直观。

Pod内的容器共享资源。共享机制:pause底层基础容器来提供共享资源的机制。

Pause容器是基础容器,也可以称为父容器,管理pod内容器的共享操作。

Pause还可以管理容器的生命周期

k8s提供了pause容器两大功能:

  1. 为pod内的所有容器提供一个命名空间
  2. 启动容器的pid(进程号)命名空间,每个pod中都作为pid唯一的进程(init进程)。回收僵尸进程。
  3. 创建pod时,先创建pause容器,然后拉取镜像,形成pod。

第一步:master节点发出指令,pod使用的镜像nginx。Pod的副本数

第二部:kube-scheduler来分配执行的node节点

第三部:node节点的kubelet收到master指令。拉pause,拉nginx:1.22 pod1

第四部:pause容器先启动,提供命名空间,进程管理pid1 来为pod内的容器提供共享服务以及 容器的进程管理。

Pause容器共享两种资源

网络:每个pod都会被分配一个集群内部的唯一IP地址,pod内的容器共享网络。Pod在集群内部的ip地址和端口。

Pod内部的容器可以使用localhost互通通信。Pod的中容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射。

Pause容器共享两种资源

网络:每个pod都会被分配一个集群内部的唯一IP地址,pod内的容器共享网络。Pod在集群内部的ip地址和端口。

Pod内部的容器可以使用localhost互通通信。Pod的中容器与外部通信时,从共享的资源当中进行分配,宿主机的端口映射。

 总结:

每个pod都有一个基础容器pause容器。

Pause容器对应的镜像属于k8s集群的一部分。创建集群就会有pause这个基础镜像。

Pod里面包含看一个或者多个相关的容器(应用)

Pod外再设置一个基础镜像:

  1. pod内部有一组容器,挂了一个,就算这个pod失效了吗? 引入pause禁止,代表整个容器的组的状态。可以解决对pod内部容器整体状态的判断。
  2. Pod内的容器共享ip 共享volume,解决了容器内网络通信的问题,解决了容器内部文件共享问题。

Pod的生命周期状态

  1. pending  挂起  pod已被创建,但是尚未被分配到运行的node节点(节点上资源不够,需要等待其他pod的调度)
  2. running:运行中。Pod已经被分配到了node节点,pod内部的所有容器都已经启动,运行状态正常,稳定。
  3. complete:容器内部的进程运行完毕,正常退出。没有发生错误。
  4. faild:pod中的容器非正常退出。发生错误,需要通过查看详情和日志来定位问题。
  5. UNkown:由于某些原因,k8s集群无法获取pod的状态。APIserver出了问题。
  6. terminating:终止中 ,pod正在被删除,里面的容器正在终止。终止过程中,资源回收,垃圾清理,以及终止过程中需要执行的命令。

创建pod的容器分类:

  1. 基础容器:pause
  2. Init容器(初始化容器):init c

    1和2这个过程中。Pod的状态就是init:  0/3

  1. 业务容器

init容器的作用:

环境变量      

可以在创建的过程中为业务容器定制好相关的代码和工具

Init容器独立与业务容器,他是单独构建的一个镜像,对业务容器不产生任何安全影响。

Init容器能以不同于pod内应用容器的文件系统视图运行。Secrets的权限。应用容器无法访问sercerts的权限。

总结:init容器提供了应用容器运行之前的先决条件,提供了一种阻塞或者延迟机制来控制应用容器的启动,只有前置条件满足,才会创建pod的应用容器。

  1. 在pod的启动过程中,容器按照初始化容器先启动,每个容器必须在下一个容器启动之前,要成功退出。
  2. 如果运行失败,会按照容器的重启策略进行指定动作。RestartPolicy  Always never  onFailure(非正常退出才会重启)
  3. 所有的init容器没有成功之前,pod是不会进入ready状态。

Init容器与service无法。不能对外提供访问。

  1. 如果重启pod,所有的init容器一定会重新执行
  2. 如果修改init容器的spec(参数),只限于image,其他的修改字段 都不生效(基于deploment。
  3. 每个容的名称都要唯一,不能重复。

Pod的重启策略:

总结:

Pause容器:底层容器/基础容器

提供pod内容器的网络和存储共享,以及pod内容器退出之后的资源回收。、

Init容器:人为设定的,业务容器启动之间的必要条件。

Pod的生命周期:

  1. pause基础容器
  2. Init容器----全部成功退出-------业务容器
  3. Poststart  prestop  容器的钩子

启动时命令和退出时的命令

  1. 探针:探测容器的健康状态。伴随pod的整个生命周期(除了启动探针)

总结:pod就是用来封装容器的,业务是容器。服务也是容器端口也是容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

异常处理:全面覆盖与精细化管理的平衡

异常处理:全面覆盖与精细化管理的平衡 在软件开发中,异常处理是保证系统稳定性和用户体验的重要环节。对于是否应当全面覆盖所有异常并设立兜底机制,业界存在着两种主流思路:全面覆盖原则和精细化处理。如何在这两者间取得平衡&a…

WPF ComboBox限制输入长度

在WPF中&#xff0c;你可以通过两种方式来限制ComboBox的输入长度&#xff1a; 使用PreviewTextInput事件&#xff1a;你可以在这个事件的处理程序中检查输入文本的长度&#xff0c;如果超过最大长度则阻止输入。 <ComboBox PreviewTextInput"ComboBox_PreviewTextIn…

python插入排序

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常使用in-place排序&#xff0…

域名解析服务器:连接你与互联网的桥梁

域名解析服务器&#xff1a;连接你与互联网的桥梁 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨一个网络世界中至关重要却鲜为人知的角…

1.框架介绍项目环境配置与项目启动!

目录 1.框架开发方向:2.项目启动与环境搭建 1.框架开发方向: 1.前后端分离项目 2.纯后端项目 3.移动端开发uni-app(ios、Android、H5、微信小程序) 4.内容管理系统2.项目启动与环境搭建 1.安装node.js 下载地址可以用nvm安装 便于运行前端项目https://blog.csdn.net/qq_58647…

webpack的性能优化(一)——分包优化

1.什么是分包&#xff1f;为什么要分包&#xff1f; 默认情况下&#xff0c;Webpack 会将所有代码构建成一个单独的包&#xff0c;这在小型项目通常不会有明显的性能问题&#xff0c;但伴随着项目的推进&#xff0c;包体积逐步增长可能会导致应用的响应耗时越来越长。归根结底这…

二叉树 | 二叉树的前序遍历问题

二叉树的前序遍历问题描述 提供二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 二叉树的前序遍历是一种深度优先遍历&#xff08;DFS&#xff09;的方式&#xff0c;其遍历顺序为&#xff1a;先访问根节点&#xff0c;然后递归地对左子树进行前序遍历&#xff…

led恒流式驱动电源芯片一览表

LED恒流式驱动电源芯片是一种用于驱动LED灯的关键组件。它能够稳定地提供恒定的电流&#xff0c;确保LED灯的亮度和颜色始终保持一致。 LED恒流式驱动电源芯片通常由电源管理单元、恒流输出部分和保护电路组成。电源管理单元负责转换输入电压为恒定的直流电压&#xff0c;并通…

App Crawler

Google官方出了一款App遍历工具App Crawler。 文档&#xff1a;应用抓取工具 | Android 开发者 | Android Developers App Crawler工具是Android Jetpack的一部分&#xff0c;它可自动的运行你的App&#xff0c;不需要编写或维护任何代码。 通过App Crawler运行App&…

Serverless与Kubernetes(K8s)的区别、优缺点及应用场景

Serverless与Kubernetes&#xff08;K8s&#xff09;的区别 架构模型 Serverless是一种基于事件驱动的计算模型&#xff0c;它允许开发者编写应用程序时无需关心底层的基础设施。在Serverless架构中&#xff0c;云服务提供商会负责管理服务器、操作系统、运行时环境等基础设施&…

数字后端设计实现之自动化useful skew技术(Concurrent Clock Data)

在数字IC后端设计实现过程中&#xff0c;我们一直强调做时钟树综合要把clock skew做到最小。原因是clock skew的存在对整体设计的timing是不利的。 但是具体到某些timing path&#xff0c;可能它的local clock skew对timing是有帮助的&#xff0c;比如如下图所示。 第一级FF到第…

简单易懂的PyTorch激活函数大全详解

目录 torch.nn子模块Non-linear Activations nn.ELU 主要特点与注意事项 使用方法与技巧 示例代码 图示 nn.Hardshrink Hardshrink函数定义 参数 形状 示例代码 图示 nn.Hardsigmoid Hardsigmoid函数定义 参数 形状 示例代码 图示 nn.Hardtanh HardTanh函数…

记一个常用的时间、日期 格式化方法

方法里可能有其他的逻辑&#xff0c;我没有删去多余的 &#xff0c;仅供参考 1、对日期进行格式化 /*** 对日期进行格式化&#xff0c; 和C#大致一致 默认yyyy-MM-dd HH:mm:ss* 可不带参数 一个日期参数 或一个格式化参数* param date 要格式化的日期* param format 进行格式化…

【FLV】记录 H.264的解析

参考 FLV 文件格式分析 知乎大神的FLV文件格式分析。 FLV 首先下发9个字节的FLV 头 -2024-01-08 11:38:29.698 INFO [32196] [evplayer_client_main@153] player clinet run … 2024-01-08 11:38:29.702 INFO [2276] [evplayer_client_main::<lambda_1>::operator ()@14…

windows系统升级

问题 windows系统升级 详细问题 笔者手边有台电脑&#xff0c;操作系统版本为windowsXP&#xff0c;现需要升级至windows较新版本 解决方案 1、 内容备份 若C盘有重要数据文件 &#xff0c;对于C盘&#xff08;重要数据文件&#xff09;进行备份 2、下载软件天猫一键重装…

【HBase】——整合Phoenix

1 概述 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表&#xff0c;插入数据和查询 HBase 数据。   Phoenix 在 5.0 版本默认提供有两种客户端使用&#xff08;瘦客户端和胖客户端&#xff09;&#xff0c;在 5.1.2 版本 安装包中…

【数据结构】数据结构中应用题大全(完结)

自己在学习过程中总结了DS中几乎所有的应用题&#xff0c;可以用于速通期末考/考研/各种考试。很多方法来源于B站大佬&#xff0c;底层原理本文不做过多介绍&#xff0c;建议自己研究。例题大部分选自紫皮严书。pdf版在主页资源 一、递归时间/空间分析 1.时间复杂度的分析 设…

sqlachemy orm create or delete table

from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DateTime ​ ​ Base declarative_base() engine create_engine(mysqlpymysql://root:123456localhost:3306/test?char…

MySQL之子查询、连接查询(内外)以及分页查询(实操)

文章目录 前言一、SQL脚本二、实操以及实现思路 前言 续上篇博主MySQL之视图&索引&执行计划这篇给大家讲解MySQL之子查询、连接查询(内&外)以及分页查询 一、SQL脚本 /*Navicat Premium Data TransferSource Server : localhostSource Server Type :…

Koodo Reader : 一个开源免费的电子书阅读器

今天在浏览 GitHub 的时候&#xff0c;偶然发现了一个非常有趣的开源项目——Koodo Reader。这个项目是一款开源免费的电子书阅读器&#xff0c;支持多种格式。它具有一些非常独特的功能&#xff0c;深深地吸引了我的注意。在接下来的内容中&#xff0c;我将为大家详细介绍一下…