Liveness、Readiness 和 Startup Probes

2023-11-16

liveness:

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
      ```
其中 initialDelaySeconds: 5表示启动时等待五秒钟在开始第一次检测,periodSeconds: 5每过五秒钟进行一次检测
在容器生命的前 30 秒内,有一个/tmp/healthy文件。因此,在前 30 秒内,该命令会cat /tmp/healthy返回一个成功代码。30 秒后,cat /tmp/healthy返回失败代码
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
  - name: liveness
    image: k8s.gcr.io/liveness
    args:
    - /server
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 3
      periodSeconds: 3
这里定义了一个http活跃度检测,如果处理程序返回失败代码,kubelet 将杀死容器并重新启动它。
任何大于或等于 200 且小于 400 的代码都表示成功。任何其他代码都表示失败

Readiness:

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20
TCP 检查的配置与 HTTP 检查非常相似。此示例同时使用就绪和活跃度探测。
kubelet 将在容器启动 5 秒后发送第一个就绪探测。这将尝试连接到goproxy端口 8080 上
的容器。如果探测成功,Pod 将被标记为就绪。kubelet 将继续每 10 秒运行一次此检查

Startup Probes:

startupProbe:
  httpGet:
    path: /healthz
    port: liveness-port
  failureThreshold: 30
  periodSeconds: 10
 
应用程序将有最多 5 分钟 (30 * 10 = 300s) 来完成其启动。一旦启动探测成功一次,活跃
度探测就会接管以提供对容器死锁的快速响应。如果启动探测从未成功,则容器在 300 秒
后被杀死并受制于 pod 的restartPolicy,  如果配置了这样的探针,它将禁用活动性和就绪性检查,直到成功,确保这些探针不会干扰应用程序启动
(主要用在启动时间过长的情况下)

字段解释:

initialDelaySeconds:容器启动后在启动活动或就绪探测之前的秒数。默认为 0 秒。最小值为 0。
periodSeconds:执行探测的频率(以秒为单位)。默认为 10 秒。最小值为 1。
timeoutSeconds: 探测超时的秒数。默认为 1 秒。最小值为 1。
successThreshold:探测失败后被视为成功的最小连续成功次数。默认为 1。对于 liveness 和 startup Probes,必须为 1。最小值为 1。
failureThreshold:当一次探测失败时,Kubernetes 会尝试failureThreshold多次,然后放弃。在 liveness probe 的情况下放弃意味着重新启动容器。在就绪探测的情况下,Pod 将被标记为未就绪。默认为 3。个

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Liveness、Readiness 和 Startup Probes 的相关文章

随机推荐

  • MySQL单天,本周,本月所有数据

    1 查询单天的记录 select from create time where TO DAYS create time TO DAYS NOW 注意 这里的create time是数据库中的时间字段 会根据这个时间去和今天的时间对比获取数据
  • 标志性建筑和成果的引领作用 (图&文)---旅美散记之一

    暑假期间在美国伊利诺伊大学香槟分校 UIUC 停留了几日 交流学习 访友探亲 一举数得 七分兴奋 三分累 累完之后 就不太想写长文 图像处理领域有句话 一图顶千言 说的是信息当量 不是说当年的 一句顶万句 否则 一万句就只相当于10幅图了
  • Android学习笔记---INSTALL_FAILED_INVALID_APK: /data/app/vmdl254464637.tmp/3_slice__ signatures are incon

    一个周末过去了 新的一周开始了 但是早上来的时候遇到了一个令人发指的问题 AS调试APK一直安装不上 提示 Installation failed with message Failed to finalize session INSTAL
  • python题目52:磁盘容量排序

    磁盘的容量单位有M G T这三个等级 他们之间的换算关系为 1T 1024G 1G 1024M 现在给定N块磁盘的容量 请对他们按从小到大的顺序进行稳定排序 例如给定5块盘容量 1T 20M 3G 10G6T 3M12G9M 排序后的结果为
  • R语言—定义数据框的列名

    1 在定义数据框时 定义列名 例如 a lt c 2 23 45 6 7 1 6 7 b lt c 4 6 1 2 5 66 10 2 df lt data frame a b 此时数据框df中的列名分别是a b 也可以如下 df lt d
  • 详解3D中obj文件格式

    原文链接 https www jianshu com p f7f3e7b6ebf5 加载3D模型的时候 遇到 obj格式的模型文件 之前有专门看过相关的资料 可惜没有总结 一下就忘了 再次用到 又去搜索了一番 发现网上很多文章讲的不是很全面
  • Char和VarChar的区别(无废话版)

    区别1 定长与变长 char表示定长 长度固定 varchar表示变长 即长度可变 char如果插入的长度小于自定义长度时候 中间用空格填充 varChar小于定义长度时 还是按照实际长度存储 插入多长就存多长 因为长度是固定的 char的
  • 浙江农林大学蓝桥杯程序设计竞赛校选拔赛 E-谁是天选之人

    众所周知下棋是一个运气游戏 不过好像也是有规律可循的 Graceful smiling cookies给它的n个棋子标序号 他决定以这些序号决定谁是天选 最开始每个棋子标号都是0 它要进行m次标序号 第i次标序号 它会将第 i X a b
  • python decimal 转换为float_在Python中将float转换为decimal类型

    我只是在玩数字游戏 我发现Numpy提供了一个名为np vectorize的函数 允许您获取一个函数并将其应用于Numpy数组 在 23 中 import numpy as np import decimal D decimal Decim
  • manjaro笔记本显卡驱动_从入门到高端!AMD Radeon RX 500系列移动显卡全解析

    前言 在处理器领域 卧薪尝胆十年之久的AMD终究还是给所有玩家带来了惊喜 2017年2月推出了ZEN构架的处理器之后 相信后面的事情大家都知道了 手忙脚乱的Intel公司在不到2年的时间内连续发布了三代酷睿产品以应对Ryzen处理器的威胁
  • mysql5.7以上的启动、停止、赋权命令

    文章目录 1 启动mysql server 2 查看初始密码 3 本地登陆mysql 4 修改本地root用户密码 5 防火墙设置 6 开启mysql的远程登录 1 启动mysql server systemctl start mysqld
  • 查看数据库字符集

    问题描述 最近发现在不同的数据库中 有时中文占用2个字节 有时占用3个字节 经过分析发现 对于varchar类型的字段 如果数据库字符集使用utf 8 则3个字节表示一个中文 如果数据库字符集使用gbk 则2个字节表示一个中文 数据库字符集
  • QMainWindow、QDialog与QWidget的区别

    一 定义 QWidget 是所有用户界面对象的基类 窗口部件是用户界面的一个原子 它从窗口系统接收鼠标 键盘和其它事件 并且在屏幕上绘制自己的表现 每一个窗口部件都是矩形 并且它们按Z轴顺序排列的 一个窗口部件可以被它的父窗口部件或者它前面
  • 关于mysql导入中文乱码问题的理解

    一般来说 mysql导入方式有三种 一种是通过mysql命令导入 一种是通过source方式导入 最后一种是直接复制sql语句导入 前两种方式一般都能导入成功 但如果这个备份文件有问题 例如本身这个文件里面在默认编码下就乱码了 那么第三种方
  • 全连接层详解

    一 什么是全连接层 转载自 https blog csdn net qq 39521554 article details 81385159 全连接层 fully connected layers FC 在整个卷积神经网络中起到 分类器 的
  • Hyperledger Fabric 应用实战(2)--网络节点设置

    1 网络节点设置 网络名称 rentnet 联盟组织 orderer排序组织 三个成员组织supervisor rentalcrop agency 通道 rentsign 账本数据库 couchdb 物理节点 组织 容器节点 supervi
  • 普通代码块,静态代码块,构造代码块,构造方法

    1 使用示例 2 静态代码块介绍 在类中通过static修饰然后大括号里面的内容就是静态代码块 见13 1实例 static 静态代码块在类被加载的时候执行 并且他只会执行一次 优先于其他所有代码块以及构造方法执行 如果有多个静态代码块则按
  • 怎么用电脑兼职赚钱,普通人可做的6个副业项目

    现在的生活中 我们总是感觉所过的日子都很紧张 虽然我们尽可能地工作和努力 但是生活成本和社会压力仍然那么大 为了弥补自己的生活经验和财务困难 很多人开始寻找一种额外的收入来源 其实这种额外的收入来源就被称之为 兼职或副业 在如今的经济环境中
  • 浅析数组名与&数组名的区别

    一 一维数组 我们借助sizeof帮助我们理解 运行结果如下 二 二维数组 同样借助sizeof来理解 运行结果如下 三 字符型数组 1 借助sizeof来理解 类似的 注意 a b数组有一些差别 造成这种差别的原因是b数组是字符串赋值 此
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s