k8s中的容器探针

pod的容器健康检查---探针

probe:k8s对容器执行的定期检查,诊断。

探针的三种规则

所有的探针都是针对容器不是针对pod

1、 存活探针---livenessProbe:探测容器是否正常运行。如果发现探测失败,会杀掉容器。容器会根据重启策略来决定是否重启。

2、 流量探针/就绪探针:探测容器是否进入ready状态。并做好接受请求的准备

检测失败:Ready 0/1表示没有进入Ready状态。但是status还是Running状态实际上资源是不可用的。service也不会把请求转发到这个pod

3、 启动探针:是在容器启动后开始检测。检测容器内的应用是否启动成功。在启动探测成功之前,所有的其他探针都会处于禁用状态。一旦启动探针结束,后续操作不再受启动探针影响

在一个容器中可以有1个或多个探针。

启动探针:只在容器启动时探测

存活

就绪

probe的检查方法

probe的检测方法三种探针都是通用的

1、 exec探针:在容器中执行命令。如果命令返回码是0表示成功。

应用场景:适用于在容器内自定义检查容器健康状态的情况。

2、 httpGet:对指定IP+端口的容器发送1个httpGet的请求。是通过get请求的响应状态码来判断如果get状态码大于等于200且小于400都表示成功。

应用场景:适用于检测能否响应http的请求。例如:web容器(nginx,tomcat)

3、 tcpSocket:用于检查端口。对指定端口上的容器IP地址进行tcp检查(三次握手),检查对方服务器端口是否打开。如果端口打开则认为探测成功。

应用场景:适用于检查特定容器的端口监听状态。

类似于telnet ip+端口

诊断结果

1、 成功 容器通过了,正常运行

2、 失败 存活探针会重启

3、 未知状态 也是诊断失败。也是根据策略

exec方式

实验举例:

apiVersion: apps/v1
kind: Deployment
metadata:labels:app: centosname: centos
spec:replicas: 1selector:matchLabels:app: centostemplate:metadata:labels:app: centosspec:containers:- image: centos:7name: centosimagePullPolicy: Nevercommand: ["/bin/bash", "-c", "touch /opt/123.txt ; sleep 3600"]livenessProbe:exec:command: ["/usr/bin/test", "-e", "/opt/123.txt"]
#添加检测策略initialDelaySeconds: 3
#表示容器启动之后多少秒进行探测。数值建议不要设置太短。因为容器有启动时间,可能会导致无效探测
#3表示3秒periodSeconds: 2
#表示探针探测的间隔时间。每隔多少秒进行一次检查。根据需求自定义。看应用的延迟敏感度。
#如果应用非常重要是核心组件。可以间隔设置小一点failureThreshold: 2
#表示如果探测失败。失败几次之后把容器标记为不健康。
#2表示2次successThreshold: 1
#表示只要成功1次就标记为就绪。数值固定是1不能修改。根据需求自定义添加。可以不加。timeoutSecond: 1
#表示每一次探测的超时时间。每次探测必须在多少秒之内必须完成探测。
#设置时间必须要小于periodSeconds探测间隔时间。
#根据需求自定义添加,可以不加kubectl describe pod 容器名称
#查看容器的详细信息必要的核心指标:initialDelaySeconds: 3
#表示容器启动之后多少秒进行探测。数值建议不要设置太短。因为容器有启动时间,可能会导致无效探测
#3表示3秒periodSeconds: 2
#表示探针探测的间隔时间。每隔多少秒进行一次检查。根据需求自定义。看应用的延迟敏感度。
#如果应用非常重要是核心组件。可以间隔设置小一点failureThreshold: 2
#表示如果探测失败。失败几次之后把容器标记为不健康。
#2表示2次

liveness杀死容器重启。

所有探针策略会伴随整个pod的生命周期除了启动探针

httpGet方式

实验举例:

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: nginx:1.22name: nginx1livenessProbe:httpGet:scheme: HTTP
#如果是默认http则可以不加port: 80initialDelaySeconds: 4periodSeconds: 2
#表示容器启动之后4秒进行探测
#表示每隔2秒检测一次

杀掉容器开始重启

正确示范:

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:httpGet:scheme: HTTPport: 8080path: /index.jspinitialDelaySeconds: 4periodSeconds: 2

修改为jsp格式测试

tcpSocket方式

实验举例:

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 4periodSeconds: 2

错误示范:

apiVersion: v1
kind: Pod
metadata:labels:run: nginx1name: nginx1
spec:containers:- image: tomcat:8.0.52name: nginx1livenessProbe:tcpSocket:port: 8081initialDelaySeconds: 4periodSeconds: 2

总结

探针:

存活探针:检测失败后,会杀死容器,然后重启。探针将伴随整个容器的生命周期

exec

exec:相当于执行了一个shell命令。在容器里面执行

shell命令执行成功:返回码是0表示成功。成功1次就是探测成功

httpGet

httpGet:对web容器发起了一次get请求。可以添加path,指定访问的资源。返回码在大于等于200且小于400的范围之内都算成功。

tcpSocket

tcpSocket:相当于telnet,指定的容器监听端口是否打开。是否能和指定的容器监听端口进行通信。

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

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

相关文章

B端产品经理学习-对用户进行需求挖掘

目录: 用户需求挖掘的方法 举例:汽车销售系统的用户访谈-前期准备 用户调研提纲 预约用户做访谈 用户访谈注意点 我们对于干系人做完调研之后需要对用户进行调研;在C端产品常见的用户调研方式外,对B端产品仍然适用的 用户需…

顺序表——习题

1. 轮转数组 代码实现&#xff1a; // 逆置数组 void nizhi_array(int *nums, int l, int r) { // 左闭右闭if (l > r) {return ;}for (int i l, j r; i < j; i, j--) {int temp nums[i];nums[i] nums[j];nums[j] temp;} }void rotate(int *nums, int numsSize, int…

Arduino驱动AS3935数字闪电传感器(闪电传感器)

目录 1、传感器特性 2、硬件原理图 3、控制器和传感器连线图 4、驱动程序 闪电传感器采用AMS独具创新的AS3935数字闪电传感芯片与Coilcraft

如何将Git的语言设置为中文

[rootiZ2zecg225xwld6g5g]# git pull Ya est actualizado. 问题描述&#xff1a; 如图所示&#xff0c;配置完git后&#xff0c;当每次拉取代码时发现提示语为西班牙语&#xff0c;想改为默认中文&#xff0c;尝试了很多次都失败了&#xff0c;最后发现是系统环境变量的问题。…

arguments arguments的认识 将arguments伪数组转为真数组

概述 arguments为伪数组&#xff0c;伪书组就是不能使用数组的方法 arguments这个值等于函数括号内的参数&#xff0c;以伪数组的方式体现 function ff(a,b,c){console.log(参数是,arguments); } ff(1,2,3)//结果&#xff1a;参数是&#xff0c;[1,2,3] 将arguments伪数组转为…

C语言中关于strcpy函数的理解

strcpy的功能是将源指向的字符串复制到另外一个字符串中 目标指向的数组的大小应该要足够长&#xff0c;避免让源字符串中的数据溢出 关于这个函数的具体用法&#xff0c;我们可以看看下面这个程序 注意&#xff1a;strcpy函数的头文件是<string.h>&#xff0c;我们在用…

Arduino开发实例-EMG 肌肉信号传感器

EMG 肌肉信号传感器 文章目录 EMG 肌肉信号传感器1、EMG 肌肉信号传感器介绍2、硬件准备及接线3、代码实现1、EMG 肌肉信号传感器介绍 在医学研究中,测量肌肉的活动、收缩和扩张非常重要。 EMG 肌肉传感器测量肌肉活动并产生信号以显示扩张和收缩量。 因此,输出取决于所选肌…

JavaWeb——后端之maven

三、后端Web开发 1. Maven 1.1 概念 概念&#xff1a; 一款用于管理和构建java项目的工具&#xff0c;是apache下的一个开源项目 作用&#xff1a; 依赖管理&#xff1a;jar包&#xff0c;避免版本冲突问题——不用手动导jar包&#xff0c;只需要在配置文件&#xff08;pom…

Docker项目:搭建服务器监控面板

搭建一个专属自己的网站监控——Uptime Kuma 安装Docker下载docker&#xff0c;docker官方网址docker.com 创建yml配置文件 vim docker-compose.yml代码 version: 3.3services:uptime-kuma:image: louislam/uptime-kumacontainer_name: uptime-kumavolumes:- ./uptime-kuma:/…

【数据库原理】(8)关系数据库的关系代数

关系数据语言可以分为三类: 关系代数、关系演算和介于关系代数与关系演算之间的语言 SQL。 下面专门讲述用对关系进行运算来表达查询要求的关系代数。关系代数的运算对象是关系&#xff0c;运算结果也是关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术…

若依项目(ruoy-vue)多模块依赖情况简要分析

主pom文件关键点分析 properties标签声明变量信息&#xff1a;版本号、编码类型、java版本spring-boot依赖形式&#xff1a;spring-boot-dependencies、pom、importdependencies中添加本项目内部模块&#xff0c;同时在modules中声明模块packaging打包选择pom设置打包maven-co…

VMware Workstation虚拟机CentOS 7.9 配置固定ip的步骤

VMware Workstation虚拟机CentOS7.9配置固定ip的步骤 编辑虚拟机 打开VMware Workstation。 选择要配置的虚拟机&#xff0c;但不要启动它。 点击“编辑虚拟机设置”&#xff08;Edit virtual machine settings&#xff09;。 选择“网络适配器”&#xff08;Network Adapter&…

Java-数据类型-FAQ-数据类型转换

1 需求 需求1&#xff1a;整型转字符串 需求2&#xff1a;整型转ASCII 2 接口 3 示例&#xff1a;整型转字符串 Integer.toString()String.valueOf() public class Test {public static void main(String[] args) {int i 99;System.out.println(Integer.toString(i) insta…

win11电脑图形卡不支持或已禁用硬件加速怎么解决,N卡GPU看不到cuda进程怎么办

摘要 亲&#xff0c;很高兴为你解答。win11电脑图形卡不支持或已禁用硬件加速解决方法&#xff1a;1、点击任务栏上的开始图标&#xff0c;在打开的菜单中&#xff0c;点击设置&#xff0c;&#xff08;快捷键WINX&#xff0c;点击设置&#xff09;。2、Windows系统 设置窗口&a…

找不到vcruntime140.dll怎么处理?6个修复教程分享

本文将详细介绍vcruntime140.dll文件的相关内容&#xff0c;并提供6个不同的修复教程&#xff0c;帮助大家解决这一问题。 一、vcruntime140.dll是什么文件&#xff1f; vcruntime140.dll是Visual C Redistributable Packages的一部分&#xff0c;它是Microsoft Visual Studi…

C# 2中的一些小特性

一、局部类型 在C#当中有这样一个关键字partial 用来声明类&#xff0c;结构&#xff0c;接口分为多个部分来声明。使用场景可以一部分类中写实例方法&#xff0c;一部分写属性&#xff0c;我在实际工作测试中就是将属性与实际方法是分开的。相互之间的成员互相通用。 举个例子…

秋招复习之数据结构

目录 前言 1 数据结构分类 2 基本数据类型 3 数字编码 4 字符编码 总结 前言 秋招复习之数据结构&#xff0c;数据结构分类、基本数据类型、字符编码、数字编码等基础知识。 1 数据结构分类 数据结构分为逻辑结构和物理结构。 逻辑结构分为线性数据结构&#xff08;数组链表…

JavaSE学习笔记 2023-12-25 --网络编程

二十、网络编程 上一篇 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 文章目录 二十、网络编程20.1网络20.2网络模型20.2.1 OSI参考模型20.2.2 TCP/IP参考模型 20.3IP协议20.3.1什么是IP20.3.2IPV4和IPV620.3.3IP的分类20.3.4回环地址/回路地址20…

卷麻了,00后测试用例写的比我还好,简直无地自容...........

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 如何编写测试用例&#xff1f; 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很是头疼&#xff0c;无法…

私域和微商有什么区别?

私域和微商到底有什么区别呢&#xff1f;其实这两个东西有着本质性区别。 私域&#xff1a; 通过原有商业或者新媒体方式获取粉丝或顾客&#xff0c;然后用微信等社交工具&#xff0c;多方位展现&#xff0c;人格专业。 最终目标是让粉丝或顾客成为品牌或IP的朋友&#xff0…