pod介绍

news2024/11/18 7:52:11

一、前言

     Pod 是 Kubernetes 中最小的部署单元,它可以包含一个或多个容器,以及共享的存储卷和网络命名空间,Pod 提供了一种抽象,用于组织和管理容器化的应用程序,并提供了一种灵活、轻量级的方式来部署和管理应用程序

二、生命周期

   什么是生命周期,即pod从创建到终止的这段过程就叫生命周期,下面就来介绍以下pod的生命周期过程

   初始化容器>主容器>容器启动后执行的钩子函数>就绪探针>存活探针>容器终止前执行的钩子函数

 pod的生命周期可以使用以下的几种状态概括

Pending(等待中): Pod 已经被 Kubernetes 系统接受,但是容器尚未创建。这可能是因为调度器还未将 Pod 调度到节点上,或者正在等待其他资源的创建

Running(运行中): Pod 中的至少一个容器已经被创建,并且正在运行中。如果 Pod 中的所有容器都处于该状态,则整个 Pod 将被标记为运行中

Succeeded(已成功): Pod 中的所有容器都已经成功地完成了任务,并且已经退出。这通常在批处理作业完成后发生

Failed(失败): Pod 中的一个或多个容器已经以非正常状态退出。这通常表示应用程序出现了错误或故障

Terminating(终止中): Pod 已经接收到删除请求,正在被终止。这意味着 Pod 中的容器正在被停止,并且正在进行清理操作,例如释放资源

 初始化容器

初始化容器(Init Container)是 Kubernetes 中的一个特殊类型的容器,它与主要的应用容器共同运行在同一个 Pod 内,并在应用容器启动之前执行一些初始化任务,只有当所有的初始化容器成功执行完毕并退出时,主要的应用容器才会启动,如果初始化容器中的任何一个执行失败(即退出状态码非零),整个 Pod 将处于错误状态,Kubernetes 会尝试重新启动整个 Pod,直到所有的初始化容器成功执行为止

apiVersion: apps/v1
kind: Deployment
metadata: 
  labels:
    app: api-gateway
  name: api-gateway
  namespace: java-service
spec:
  replicas: 2
  progressDeadlineSeconds: 600
  minReadySeconds: 10
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate
  selector:
    matchLabels:
      app: api-gateway
  template:
    metadata:
      labels:
        app: api-gateway
    spec:
      volumes:
      - name: skywalking-agent
        emptyDir: {}
      initContainers:            #定义初始化容器
      - name: skywalking-agent-container
        image: apache/skywalking-java-agent:8.7.0-alpine
        volumeMounts:
        - name: skywalking-agent
          mountPath: /agent
        command: ["/bin/sh"]
        args: ["-c","cp -R /skywalking/agent /agent/"]
      containers:
      - name: api-gateway
        image: harbor.apex.com/jdk/api-gateway:1.0.6
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8888

钩子函数

PostStart 钩子: 在容器创建后立即执行。这个钩子适合于一些初始化操作,如连接到外部服务、加载数据等

PreStop 钩子: 在容器终止之前执行。它允许容器在关闭之前执行清理任务,如保存状态、断开连接等

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
  - name: my-container
    image: my-image
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart hook"]
      preStop:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the preStop hook"]

三、重启策略

Always(始终重启): 当容器退出时,无论其退出状态是成功还是失败,Kubernetes 都会自动重启该容器。这是默认的重启策略

OnFailure(仅在失败时重启): 仅当容器以非零退出状态(即失败)退出时,Kubernetes 才会重启容器。如果容器以成功状态退出(即退出代码为 0),则不会触发重启

Never(永不重启): Kubernetes 永远不会重启 Pod 中的容器,即使容器失败也不会触发重启

四、pause

在 Kubernetes 中,Pause 容器是一个特殊的辅助容器,它经常与每个 Pod 一起运行。Pause 容器没有实际的应用程序逻辑,其主要作用是为 Pod 中的其他容器提供网络命名空间和存储卷的共享环境。Pause 容器实际上是一个轻量级的镜像,只包含一个小型的操作系统文件系统和网络配置,占用极少的资源,当创建一个 Pod 时,Kubernetes 会自动在 Pod 中创建一个 Pause 容器。这个 Pause 容器会一直运行,直到 Pod 被删除或终止。其他容器(也称为主容器)与 Pause 容器共享网络和存储卷空间,这意味着它们可以在同一网络命名空间中相互通信,共享文件系统卷

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

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

相关文章

基于JSP动漫论坛的设计与实现(四)

目录 功能模块测试 6.1 测试概述及所用方案 6.1.1软件测试概述 6.1.3 测试的步骤 6.1.4 测试的主要内容 6.1.5 测试方案 6.1.6测试设计 6.2 前端功能测试 6.2.1 登录功能测试 6.2.2 注册功能测试 6.2.3 发帖功能测试 6.2.4 回复帖子测试 6.3 后台功能测试 6…

ETL工具中JSON格式的转换方式

JSON的用处 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,其设计初衷是为了提升网络应用中数据的传输效率及简化数据结构的解析过程。自其诞生以来,JSON 已成为Web开发乃至众多软件开发领域中不可或缺的一部分&a…

C++:类与对象—继承

类与对象—继承 一、继承是什么?二、继承定义三、基类和派生类对象赋值转换四、继承中的作用域五、派生类的默认成员函数六、继承与友元七、继承与静态成员八、复杂的菱形继承及菱形虚拟继承九、继承的总结和反思十、考察重点 一、继承是什么? 继承(inh…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 (三) 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第二部分:内存 记忆的类型 记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。人脑中有多…

【qt】设计器实现界面

设计器实现界面 一.总体思路二.具体操作1.创建项目2.粗略拖放3.水平布局4.垂直布局5.修改名字6.转到槽7.实现槽函数 一.总体思路 二.具体操作 1.创建项目 这次咱们一定要勾选Generate form哦。 因为我们要使用设计器进行拖放。 2.粗略拖放 这里用到了复选框:C…

dos命令改3389端口,通过dos命令更改3389端口的操作

要使用DOS命令更改3389端口,通常涉及修改Windows注册表中的相关键值。请注意,直接操作注册表具有一定的风险,因此在进行任何更改之前,请确保您了解正在进行的操作,并已经采取了适当的备份措施。 以下是一个基本的操作步…

Apache Sqoop:高效数据传输工具搭建与使用教程

目录 引言一、环境准备二、安装sqoop下载sqoop包解压文件 三、配置Sqoop下载mysql驱动拷贝hive的归档文件配置环境变量修改sqoop-env.sh配置文件替换版本的commons-lang的jar包 验证Sqoop安装查看Sqoop版本测试Sqoop连接MySQL数据库是否成功查看数据库查看数据表去除警告信息 四…

matlab的imclose()详解

J imclose(I,SE) J imclose(I,nhood) 说明 J imclose(I,SE) 使用结构元素 SE 对灰度或二值图像 I 执行形态学闭运算。形态学闭运算是先膨胀后腐蚀,这两种运算使用相同的结构元素。 J imclose(I,nhood) 对图像 I 执行闭运算,其中 nhood 是由指定结…

开启异步线程的方法

1,开启异步线程,在启动类上加注解: 2,自定义线程池: Configuration public class PromotionConfig {Beanpublic Executor generateExchangeCodeExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExec…

大模型面试常考知识点1

文章目录 1. 写出Multi-Head Attention2. Pre-Norm vs Post-Norm3. Layer NormRMS NormBatch Norm 4. SwiGLU从ReLU到SwishSwiGLU 5. AdamW6. 位置编码Transformer位置编码RoPEALibi 7. LoRA初始化 参考文献 1. 写出Multi-Head Attention import torch import torch.nn as nn …

【.NET Core】你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟

你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟 文章目录 你认识Attribute之CallerMemberName、CallerFilePath、CallerLineNumber三兄弟一、概述二、CallerMemberNameAttribute类三、CallerFilePathAttribute 类四、CallerLineNumberAttribute 类…

Java面试题:ReentrantLock

ReentrantLock 可重入锁 可中断 可以设置超时时间 可以让线程在超时后放弃获取锁 可以设置公平锁 可以实现公平锁或非公平锁 支持多个条件变量 让线程在某些条件下进入等待 和synchronized一样都支持重入 //创建锁对象 ReentrantLock Lock new ReentrantLock(); try…

oracle 9i 行头带有scn的表

oracle 9i 行头带有scn的表 conn scott/tiger drop table t1; drop table t2; create table t1(c varchar2(5)); create table t2(c varchar2(6)) ROWDEPENDENCIES; --t2表每行都有scn,会增加六个字节的开销 alter table t1 pctfree 0; alter table t2 pctfree 0; insert in…

Transformer模型详解03-Self-Attention(自注意力机制)

文章目录 简介基础知识什么是AttentionSelf Attention原理通俗易懂理解矩阵计算Q,K,V计算Self-Attention 的输出 优势 Multi-head self-attention原理通俗易懂理解矩阵计算代码实现 简介 下图是论文中 Transformer 的内部结构图,左侧为 Enco…

十、Redis内存回收策略和机制

1、Redis的内存回收 在Redis中可以设置key的过期时间,以期可以让Redis回收内存,循环使用。在Redis中有4个命令可以设置Key的过期时间。分别为 expire、pexpire、expireat、pexpireat。 1.1、expire expire key ttl:将key的过期时间设置为tt…

SpringBoot自定义初始化sql文件 支持多类型数据库

我在resources目录下有init.sql初始化sql语句 指定sql文件的地址 sql内容如下: /*角色表*/ INSERT INTO #{schema}ccc_base_role (id, create_time, create_user_id, is_delete, role_name, status, update_time, update_user_id) VALUES(b89e30d81acb88448d412…

谷粒商城实战(023 业务-订单模块-页面和幂等性等校验)

Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强 总时长 104:45:00 共408P 此文章包含第270p-第p283的内容 简介 远程调用的服务已经注册到了注册中心 校验 幂等性校验 拿令牌 读令牌 删令牌 要实现 原子性 在一个事务中 添加令牌…

小红书·电商运营课:小红书开店流程,小红书电商如何运营(18节视频课)

课程目录 第1节课:学习流程以及后续实操流程注意事项 第2节课:小红书店铺类型解析以及开店细节 第3节课:小红书电商运营两种玩法之多品店铺解析 第4节课:小红书电商运营两种玩法之单品店铺解析 第5节课:选品课(多品类类目推荐) 第6节课:选品课(多品类类目推荐) 第7节课:…

以C++为核心语言的高频交易系统是如何做到低延迟的?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「 c的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 问题中限定语言是C,可…

自动驾驶中的神经辐射场:综述

24年4月清华大学论文“Neural Radiance Field in Autonomous Driving: A Survey”。 神经辐射场(NeRF)由于其固有的优势,特别是其隐式表示和新视图合成能力,引起了学术界和工业界的广泛关注。 随着深度学习的快速发展&#xff0c…