Kubernetes--深入Pod

news2025/1/12 9:52:04

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 

出自B站博主教程笔记: 

​​​​​​​完整版Kubernetes(K8S)全套入门+微服务实战项目,带你一站式深入掌握K8S核心能力_哔哩哔哩_bilibiliicon-default.png?t=N7T8https://www.bilibili.com/video/BV1MT411x7GH/?spm_id_from=333.337.search-card.all.click

目录

一、Pod配置文件

二、探针

1、类型

1.1、StartupProbe

1.2、LivenessProbe

1.3、ReadinessProbe

2、探测方式

2.1、ExecAction

2.2、TCPSocketAction

2.3、HTTPGetAction

3、参数配置

三、生命周期

1、Pod退出流程

2、PreStop的应用


一、Pod配置文件

 [root@k8s-node1 ~]# cd /opt/k8s/pods
 # 一个Pod基本nginx配置文件示例
 [root@k8s-node1 pods]# touch nginx-demo.yaml    
 apiVersion: v1  # api 文档版本
 kind: Pod       # 资源对象类型,也可以配置为Deployment,Statufulset这一类的对象
 metadata:       # Pod 相关的元数据,用于描述Pod的数据
   name: nginx-demo    # Pod 的名称
   labels:       # 定义Pod 的标签
     type: app               # 自定义 label 标签,名字为type,值为 app 
     test : 1.0.0        # 自定义 label 标签,描述 Pod 版本号
   namespace: 'default'  # 命名空间的配置
 spec:   # 期望 Pod 按照这里面的描述进行创建
   containers:   # 对于 Pod 中的容器描述
   - name: nginx         # 容器的名称
     image: nginx:1.7.9  # 指定容器的镜像
     imagePullPolicy: IfNotPresent   # 镜像拉取策略,如果本地有就用本地的,无则拉取远程
     command:            # 指定容器启动时执行的命令
     - nginx
     - g
     - 'daemon off;'     # nginx -g 'daemon off;'
     workingDir: /usr/share/nginx/html       # 定义容器启动后的工作目录
     ports:
     - name: http        # 端口名称
       containerPort: 80 # 容器内要暴露什么端口
       protocol: TCP     # 描述该端口是基于哪种协议通信的
     env:        # 环境变量
     - name: JVM_OPTS    # 环境变量名称
       value: '-Xms128m -Xmx128m'    # 环境变量的值
     resources:
       requests: # 最少需要多少资源
         cpu: 100m       # 限制 CPU 最少使用 0.1 个核心
         memory: 128Mi   # 限制内存最少使用128兆
       limits:   # 最多需要多少资源
         cpu: 200m       # 限制 cpu 最多使用 0.2 个核心
         memory: 256Mi   # 限制内存最少使用257兆
   restartPolicy: OnFailure   # 重启策略,只有失败的情况才会重启
 # 执行命令指定yaml文件创建Pod
 [root@k8s-node1 ~]# # kubecrl create -f nginx-demo.yaml

二、探针

容器内应用的监测机制根据不同的探针来判断容器应用当前的状态

1、类型

1.1、StartupProbe

k8s 1.16 版本新增的探针,用于判断应用程序是否已经启动

当配置了 startupProbe 后,先禁用其他探针,直到startupProbe成功后,其他探针才会继续。

作用:由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种方式不方便配置初始化时长来检测,而配置了 statupProbe 后,只有在应用启动成功了,才会执行另外两种探针,可以更加方便的结合使用另外两种探针使用。

 startupProbe:       # 应用启动探针
   httpGet:          # 探针方式,基于http请求探测
     path: /api/startup # http请求路径
     port: 80            # 请求端口

1.2、LivenessProbe

用于探测容器中的应用是否运行,如果探测失败,kubelet 会根据配置的重启策略进行重启,若没有配置,默认就认为容器启动成功,不会执行重启策略。

 livenessProbe:          
   failureThreshold: 5       # 失败多少次才真正失败
   httpGet:
     path: /health
     port: 8080
     scheme: HTTP
   initialDelaySeconds: 60
   periodSeconds: 10         # 间隔时间
   successThreshold: 1       # 多少次检测成功算成功
   timeoutSeconds: 5         # 请求的超时时间

1.3、ReadinessProbe

用于探测容器内的程序是否健康,它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的。

 readinessProbe:
   failureThreshold: 3 # 错误次数
   httpGet:
     path: /ready
     port: 8181
     scheme: HTTP
   periodSeconds: 10 # 间隔时间
   successThreshold: 1
   timeoutSeconds: 1 

2、探测方式

2.1、ExecAction

在容器内部执行一个命令,如果返回值为 0,则任务容器时健康的。

 livenessProbe:
   exec:
     command:
       - cat
       - /health 

2.2、TCPSocketAction

通过 tcp 连接监测容器内端口是否开放,如果开放则证明该容器健康

 livenessProbe:
   tcpSocket:
     port: 80 

2.3、HTTPGetAction

生产环境用的较多的方式,发送 HTTP 请求到容器内的应用程序,如果接口返回的状态码在 200~400 之间,则认为容器健康。

 livenessProbe:
   failureThreshold: 5
   httpGet:
     path: /health
     port: 8080
     scheme: HTTP
     httpHeaders:
       - name: xxx
         value: xxx 

3、参数配置

 initialDelaySeconds: 60     # 初始化时间
 timeoutSeconds: 2           # 超时时间
 periodSeconds: 5            # 监测间隔时间
 successThreshold: 1         # 检查 1 次成功就表示成功
 failureThreshold: 2         # 监测失败 2 次就表示失败

三、生命周期

配置示例:

 lifecycle:
   postStart:    # 容创建完成后执行的动作,不能保证该操作一定在容器的 command 之前执行,一般不使用
     exec:       # 可以是 exec / httpGet / tcpSocket
       command:
         - sh
         - -c
         - 'mkdir /data'
   preStop:      # 在容器停止前执行的动作
     httpGet:    # 发送一个 http 请求
       path: /
       port: 80
     exec:       # 执行一个命令
       command:
         - sh
         - -c
         - sleep 9

1、Pod退出流程

删除操作:

  • Endpoint 删除 Pod 的 IP 地址
  • Pod变成 Terminating 状态:变为删除中的状态后,会给 pod 一个宽限期,让 pod 去执行一些清理或销毁操作。
  • 配置参数:

     # 作用于 pod 中的所有容器
     terminationGracePeriodSeconds: 30   # 当Pod被删除时,给这个Pod宽限多长时间
     containers:
       - xxx 
  • 执行PreStop的指令

2、PreStop的应用

  • 注册中心下线
  • 数据清理
  • 数据销毁

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

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

相关文章

什么是BOM,有哪些分类?

一、什么是BOM? BOM是物料清单的缩写,也称为产品结构表或产品结构树。 BOM的作用主要是通过计算机辅助企业生产管理,使计算机能够识别企业所制造的产品构成和所有要涉及的物料。 在制造业中,BOM是一份详细记录制造某个产品时所…

“AI+Security”系列第2期(五):大模型自身安全

近日,由安全极客、Wisemodel 社区与 InForSec 网络安全研究国际学术论坛联合主办的 “AISecurity” 系列第二期 —— 对抗!大模型自身安全的攻防博弈线上活动如期举行。 在圆桌环节,君同未来创始人兼 CEO 韩蒙、前阿里云高级安全专家郑瀚、C…

聚星文社——绘唐科技Ai推文软件

聚星文社——绘唐科技Ai推文软件 聚星文社--绘唐科技Ai推文软件https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7nof AI推文软件是一种利用人工智能技术帮助用户自动生成推文内容的工具。 该软件会分析用户提供的相关信息和目标群体, 然后使用机器学习…

机器学习:决策树之回归树的原理

目录 前言 一、回归树样例 二、回归树原理 三、原理实现步骤 1.选择特征和分裂点 2.递归分裂 3.生成叶子节点 四、进行预测 总结 前言 决策树回归(Decision Tree Regression)是一种用于预测连续目标变量的回归模型。与分类决策树类似&#xff0…

RISC-V中的acquire和release

RISC-V中,有两类原子操作指令: ⚫ 内存原子操作(AMO) ⚫ 加载保留/条件存储(load reserved / store conditional) 此处我们先看下LR和SC指令; 引入的原因 编程语言的开发者会假定体系结构提…

docker-compose示例:nacos单机部署

前面咱们完成了docker基本环境搭建,下面就趁热打铁来练习下nacos的单机部署。 参考官方文档:Nacos Docker 快速开始。考虑到官方搭建教程过于精炼,笔者把搭建过程分享给大家。 文章目录 下载最新部署源码解决网络导致的sql文件下不下来docke…

保姆级-C#与Halcon的窗体界面展示阈值分割图像教程(机器视觉保姆级教程)

经历上一篇《零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功》的发布已经过去三天啦, 零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功_添加halcondotnet.dll-CSDN博客 在友友的催更下…

树链剖分学习笔记

前言 树链剖分这个东西呢,简而言之就是把一些树上的操作转换成线性的问题。那看起来平平无奇的树链剖分,为什么很多人就是喜欢使用他呢,那想必肯定是有原因的,我们先卖个关子,先看一下树链剖分怎么写,原理…

DMA(hal库)

DMA(直接存储器存取) DMA(Direct Memory Access,直接内存访问)是一种允许外设或内存之间直接传输数据的技术,而无需 CPU 参与。这能显著提高数据传输效率并减少 CPU 的负担。 使用 DMA 通常涉及以下步骤&…

图片转PDF怎么转?教你3种快捷方便的jpg转pdf方法

图片文件以及PDF文档已经是我们工作当中不可或缺的一部分,我们在一些商务合作的场景下经常需要把拍摄下来的合同、企划书、画册等图片内容转换为PDF格式后再发送,这样能够极大程度的保证文件的安全性,那么图片应该如何转换成PDF文件呢?今天来…

如何制作统信UOS启动盘?

如何制作统信UOS启动盘? 一、下载UOS系统安装镜像二、在UOS系统环境下制作启动盘步骤一:准备U盘步骤二:打开启动盘制作工具步骤三:选择ISO镜像文件步骤四:选择安装介质并格式化步骤五:等待制作完成 三、在W…

(LLM) 很笨

大型语言模型 (LLM) 并非你所想的那样。你被骗了。LLM 很笨,非常笨。事实上,它们更接近数据库,而不是人类。 这就是为什么人工智能仍然处于征服智能的第一步……如果有的话。 终极煤气灯效应 建立前沿人工智能的成本很高。前沿人工智能需要大…

Stable Diffusion 使用详解(8)--- layer diffsuion

背景 layer diffusion 重点在 layer,顾名思义,就是分图层的概念,用过ps 的朋友再熟悉不过了。没使用过的,也没关系,其实很简单,本质就是各图层自身的编辑不会影响其他图层,这好比OS中运行了很多…

10月天津人工智能主题——第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

【ACM出版 | IEEE&ACM院士、CCF杰出会员担任组委| 往届会后3个半月检索 】 第三届人工智能与智能信息处理国际学术会议(AIIIP 2024) 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 中国…

无人机飞手培训:考证、组装、维修技术详解

随着无人机技术的飞速发展,无人机已广泛应用于航拍、农业、环境监测、救援等多个领域,成为现代社会不可或缺的工具之一。作为无人机操作的核心——无人机飞手,其专业技能的掌握至关重要。本文档将详细解析无人机飞手培训的关键环节&#xff0…

关于Python的20个奇技淫巧

Python有非常多有趣使用的技巧,下面列举20个短小精炼的用法,其中既包含常规语法,又有第三方库的妙用,体现了python简单即美的编程哲学。 快速实现字频统计 from collections import Counterwords 我明白你的意思,你…

python将字典数据保存为json文件

目录 一、json库介绍 二、字典生成json文件 1、导入 json 模块 2、将字典数据保存为 json 文件 (1) 创建一个python字典 (2) 指定要保存的 json 文件路径 (3) 将字典数据存为 json 文件 3、读取 json文件,并打印 一、json库介绍 方法作用json.dumps()将py…

[java][mybatis]generatorConfig.xml配置信息详细

generatorConfig.xml配置信息详细 mybatis-generator有三种用法:命令行、eclipse插件、maven插件。个人觉得maven插件最方便,可以在eclipse/intellij idea等ide上可以通用。 下面是从官网上的截图: 在MBG中,最主要也最重要的就是…

拒绝拖延!Kimi助你一天内速成论文初稿!

撰写学术论文是一项需要周密计划和精确执行的任务。它要求作者对文章的每个部分进行深入思考,以确保论文结构的合理性和论述的清晰度。利用Kimi的功能,我们可以更系统地进行写作,从构思到最终成稿,逐步构建出一篇高质量的学术论文…

短视频SDK解决方案,高效集成,助力商业变现

美摄科技,作为业界领先的多媒体技术服务商,其全面升级的短视频SDK解决方案,旨在为开发者与内容创作者提供一站式、高效能的创作工具,让每一个灵感都能瞬间转化为触动人心的视频作品。 【一站式解决方案,重塑短视频创作…