当前位置: 首页 > news >正文

【云原生】Kubernetes(k8s)之容器的探测

Kubernetes(k8s)之容器的探测

  • 一、探测类型及使用场景
    • 1.1、startupProbe(启动探测)
    • 1.2、readinessProbe(就绪探测)
    • 1.3、livenessProbe(存活探测)
  • 二、检查机制
  • 三、探测结果
  • 四、容器探测案例

一、探测类型及使用场景

1.1、startupProbe(启动探测)

指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被禁用,直到此探针成功为止。探测成功之后,启动探测停止。如果启动探测失败,kubelet 将杀死容器,而容器依其 重启策略进行重启。 如果容器没有提供启动探测,则默认状态为 Success。

使用场景:
容器需要较长时间才能启动就绪的 Pod ,可以指定启动探针。那么可以避免设置一个超长时间间隔的存活探测。例如:容器需要在启动期间加载大型数据、配置文件或执行迁移等

1.2、readinessProbe(就绪探测)

指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为 Failure。 如果容器不提供就绪态探针,则默认状态为 Success。就绪探测失败时,不会杀死容器进程,只会将端点从service中移除,使其收不到流量。

使用场景:

  1. 仅在探测成功时才开始向 Pod 发送请求流量,意味着pod只在探测成功之后才开始接受请求数据。
  2. 如果应用程序对后端服务有严格的依赖性,可以同时实现存活态和就绪态探针,存活态探针检测通过后,可以通过就绪态探针会额外检查每个所需的后端服务是否可用

1.3、livenessProbe(存活探测)

指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为 Success。

使用场景:

  1. 如果希望容器在探测失败时被杀死并重新启动,并指定 restartPolicy 为 “Always” 或"OnFailure"。
  2. 如果容器中的进程能够在遇到问题或不健康的情况下自行崩溃,可以不需要指定存活探针。kubelet 将根据 Pod 的 restartPolicy 自动执行修复操作。

二、检查机制

(1)exec。在容器内执行指定命令。如果命令退出时返回码为 0 则认为诊断成功。
(2)httpGet。对容器的 IP 地址上指定端口和路径执行 HTTP GET 请求。如果响应的状态码大于等于 200 且小于400,则诊断被认为是成功的。
(3)tcpSocket。对容器的 IP 地址上的指定端口执行 TCP 检查。如果端口打开,则诊断被认为是成功的。
(4)grpc。使用 gRPC 执行一个远程过程调用。 目标应该实现 gRPC健康检查。 如果响应的状态是 “SERVING”,则认为诊断成功。 gRPC 探针是一个 alpha 特性,只有在你启用了 “GRPCContainerProbe” 特性时才能使用。

三、探测结果

(1)Success(成功),容器通过了诊断。
(2)Failure(失败),容器未通过诊断。
(3)Unknown(未知),诊断失败,因此不会采取任何行动。

四、容器探测案例

apiVersion: v1
kind: Pod
metadata:name: myhello-podnamespace: defaultlabels:name: myhello-podenv: dev
spec:restartPolicy: AlwaysinitContainers:- name: init-myserviceimage: busybox# 查找命名空间下myservice服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]- name: init-mydbimage: busybox# 查找命名空间下mydb服务,如果存在则执行成功,如果不存在则一直查找command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]containers:- name: myhelloimage: nongtengfei/hello:curlimagePullPolicy: IfNotPresentports:- containerPort: 80command: ["./app"]args: ["--param1=k8s-p1", "--param2=k8s-p2"]resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200Mienv: # 注入到容器的环境变量- name: env1value: "k8s-env1"- name: env2value: "k8s-env2"lifecycle:postStart:exec:command: ["/bin/sh", "-c","echo post start command exec >> /tmp/data"]preStop:exec:command: ["/bin/sh", "-c","echo pre stop command exec >> /tmp/data"]startupProbe:exec:command: ["/bin/sh", "-c","statuscode=`curl -o /dev/null -s -w % {http_code} http://localhost/healthz`; [ $$statuscode -le 400 ] || exit 1"]# 指定初始化时间,即探针在容器启动之后的延迟时长initialDelaySeconds: 5# 探测周期,即每隔多长时间探测一次periodSeconds: 5# 最小连续失败次数,即连续失败多少次表示探测失败failureThreshold: 3# 最小连续成功次数,即连续探测成功多少次表示探测成功,liveness 和 startup 必须为1successThreshold: 1# 探测超时时间timeoutSeconds: 1readinessProbe:httpGet:path: /healthport: 80initialDelaySeconds: 5periodSeconds: 5failureThreshold: 3successThreshold: 1timeoutSeconds: 1livenessProbe:httpGet:path: /healthport: 80initialDelaySeconds: 5periodSeconds: 5failureThreshold: 3successThreshold: 1timeoutSeconds: 1- name: myredis #容器的名称image: redis #容器对应的 Docker ImageimagePullPolicy: IfNotPresentports:- containerPort: 6379resources:limits:cpu: 200mmemory: 500Mirequests:cpu: 100mmemory: 200MilivenessProbe:tcpSocket:port: 6379initialDelaySeconds: 5periodSeconds: 5failureThreshold: 3successThreshold: 1timeoutSeconds: 1

在这里插入图片描述

相关文章:

【云原生】Kubernetes(k8s)之容器的探测

Kubernetes(k8s)之容器的探测一、探测类型及使用场景1.1、startupProbe(启动探测)1.2、readinessProbe(就绪探测)1.3、livenessProbe(存活探测)二、检查机制三、探测结果四、容器探测…...

看完这个你就牛了,自动化测试框架设计

一、引言 随着IT技术的快速发展,软件开发变得越来越快速和复杂化。在这种背景下,传统的手工测试方式已经无法满足测试需求,而自动化测试随之而生。 自动化测试可以提高测试效率和测试质量,减少重复性的测试工作,从而…...

Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化

前言 本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式,拉模式,推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…...

Mysql不锁表备份之Xtrabackup的备份与恢复

一、Xtrabackup介绍 MySQL冷备、热备、mysqldump都无法实现对数据库进行增量备份。如果数据量较大我们每天进行完整备份不仅耗时且影响性能。而Percona-Xtrabackup就是为了实现增量备份用于MySQL数据库物理热备的备份工具,xtrabakackup有2个工具,分别是x…...

flex布局:输入框布局demo

目标效果 首先,生成输入框: 代码: 结果: 设置基本样式 包括:去除边距、设置父盒子的宽度(如果不设置宽度,会使用整个浏览器的宽度)、添加父盒子边框等 代码: *{margin: 0;pad…...

PHP请求的好处,PHP如何请求淘宝开放接口

PHP的好处有很多,最主要的特性就是PHP的安全性和兼容性明显。 1、良好的安全性 PHP是开源软件,所有PHP的源代码每个人都可以看得到,同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定, PHP具有了公认的安全性能。开源…...

精选出来的几道Java语法基础面试题

1.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;成员变量和局部…...

uniapp或者小程序图片选择中的sizeType属性到底是什么

sizeType属性到底是什么 https://developers.weixin.qq.com/community/develop/doc/0006c261a300089771f9a233a56c00 https://ask.dcloud.net.cn/question/146679 第一个链接来自微信小程序社区,有开发者提了个问题:sizeType: ["original", &q…...

判断一个字符串是否是回文

目录 判断一个字符串是否是回文 程序设计 程序分析 判断一个字符串是否是回文 【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。 【输入形式】长度小于100的任意字符串 【输出形式】如果输入字符串是回…...

国产软件爆发!中国版Navicat,SQL Studio成数据库管理工具热门

如果关注2023年的A股市场,会发现各行各业都掀起了“国产化替代”运动的热潮。不仅仅是芯片,新能源、医疗器械甚至软件等领域,也都加快了国产化进程。 长期以来,中国的软件业比较依赖国际巨头。比如操作系统以微软为主&#xff0c…...

算法学习day51

算法学习day511.力扣309.最佳买卖股票时机含冷冻期1.1 题目描述1.2分析1.3 代码2.力扣714.买卖股票的最佳时机含手续费2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣309.最佳买卖股票时机含冷冻期 1.1 题目描述 题目描述 给定一个整数数组,其中第i个元素代表了第…...

10 JS01——初识JS

目标: 1、初识JavaScript 2、JavaScript注释 3、JavaScript输入输出语句 一、初识JavaScript 1、JavaScript是什么 JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译,运行过程…...

【软考备考-综合知识】安全性、可靠性与系统性能评测基础知识

计算机的安全性 安全等级 计算机系统中的三类安全性是指技术安全性、管理安全性和政策法律安全性。 信息安全五要素 机密性:全包信息不暴露给未授权的实体或进程。 完整性:只有得到允许的人才能够修改数据,并能够判别出数据是否已被篡改。…...

匆忙之间难免疏忽,写代码更加如此

一个方法包含了多个知识点的合计,合计起来用。实战开发特点1; 基础知识点不牢固,您必定就会感觉寸步难行啊 public class AddJiChuShu{int a 1;int b 2;int c 0;int d 0;string str "";string str2 "张三";//mothe…...

低代码(七)低代码平台后端技术选型2.0

JWT 登录token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服…...

UDS介绍

首先要有网络网络七层的概念: 学习链接: 七层网络模型-CSDN博客 UDS网络层/TP层(ISO 15765-2)的解读 - 知乎 (zhihu.com) 概念: UDS(Unified Diagnostic Services,统一的诊断服务。 标准名是《…...

ASP.NET Core MVC 从入门到精通之初窥门径

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…...

英码科技智慧环卫:构建宜居城市新篇章

随着城市化进程的加快,城市环境卫生问题日益凸显。如何提高城市环境卫生管理水平,提升城市品质,成为了各级政府和社会各界关注的焦点。智慧环卫作为一种结合现代信息技术的环境卫生管理方式,正在逐渐成为解决城市环境卫生问题的有…...

在Spring Boot微服务使用HashOperations操作Redis Hash哈希散列

记录:403 场景:在Spring Boot微服务使用RedisTemplate的HashOperations操作Redis Hash哈希散列。 版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5 1.微服务中Redis配置信息 1.1在application.yml中Redis配置信息 spring:redis:host: 192.1…...

innobackupex备份mysql产生returned OS error 124

解决使用innobackupex备份mysql产生returned OS error 124 xtrabackup 报错Too many open files 故障处理 一、背景 客户反馈数据库备份失败。 二、环境描述 [rootmes-node1 ~]# mysql -V mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper [root…...

明明有index.jsp文件访问的时候却显示404

重建一下项目...

人工智能前沿——「全域全知全能」人类新宇宙ChatGPT

🚀🚀🚀OpenAI聊天机器人ChatGPT——「全域全知全能」人类全宇宙大爆炸!!🔥🔥🔥 一、什么是ChatGPT?🍀🍀 ChatGPT是生成型预训练变换模型(Chat G…...

eslint-plugin-import - import/order

eslint-plugin-import是什么? 该插件目的在于支持ES6以上的导入/导出语法,并防止文件路径和导入名称拼写错误的问题。 import/order是什么? 按照约定的规则对引入的模块进行排序。 import/order常用规则介绍 groups 约定引入模块顺序的…...

selenium知识点大全

selenium知识点大全 在使用selenium之前必须先配置浏览器对应版本的webdriver。 1. 初始化浏览器对象 from selenium.webdriver import Chrome# 创建浏览器对象,并且打开一个空的页面 browser Chrome()# 关闭浏览器 browser.close()2. 访问指定网页 from selen…...

Biotin-PEG-SH生物素-聚乙二醇-巯基结构式;SH-PEG-Biotin

Biotin-PEG-SH 生物素-聚乙二醇-巯基 中文名称:生物素-聚乙二醇-巯基 英文名称:Biotin-PEG-SH Biotin-PEG-Thiol 性状:粘稠液体或者固体粉末,取决于分子量 溶剂:溶于水和DCM、DMF等大部分有机溶剂 分子式&#x…...

【防止恶意用户注册】-- 手机在网状态 API 的防欺诈应用解析

简介 手机在网状态 API 支持传入手机号码,查询手机号在网状态,返回在网、在网不可用、不在网(销号/未启用/停机)等多种状态,查询手机号在网状态之后,可以根据具体的业务需求来进行不同的处理。 本文主要介…...

Python json 数据提取 jsonpath 详解

一、JsonPath JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。也就是独立的可以配合多种语言进行匹配的目标值的一种类库,和…...

TCP和UDP的区别以及应用场景

区别 首先UDP协议非常简单,头部只有8个字节: 校验和为了提供可靠的UDP首部和数据而设计,防止收到在网络传输中受损的UDP包。 再对比下TCP协议: 传输层有两个传输协议分别是 TCP 和 UDP,在内核中是两个完全独立的软件…...

高铁轮毂表面缺陷的<视觉显著性>超像素图像检测方法

内容:提出一种基于视觉显著性注意机制的超像素自适应检测方法; 设计视觉显著性注意机制滤波器用于粗略定位出缺陷空间范围,结合超像素分块图像分割方法消除光照不均匀引起的噪声干扰,有效地完成缺陷区域的边界分割和实时特征提取&…...

纺织工业库房如何有效防潮?恒温恒湿真的有效吗?

纺织工业库房中的设备或存放的货物对温度或湿度的变化又非常敏感,温度或湿度的波动可能会产生一些问题。 针对库房环境温湿度的监测,若采用人工检测的方式,很难管控精准且工作效率低;其次,人工综合成本高。那么该如何实…...

上海高端品牌网站建设/如何弄一个自己的网站

这是我之前项目同学遇到的一个问题,现实代码比较复杂,现在我将尽可能简单的描述这个问题,并且内容重心会放在探索为什么会出现这样的情况以及后续监控。一、问题的起源先看一个非常简单的model类Boy:publicclass Boy {publicString boyName;p…...

西安网站建设第一品牌/小程序开发流程详细

嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的、开源免费的Servlet/JSP容器,其主要功能是用于发布JavaWeb应用。 更多的信息请参…...

个人网站建站指南/制作网站的平台

tess Delaunay(pts)返回的是Delanauy类的对象。你可以检查四面体为tess.simplices。它有不同的属性和方法。例如,在2D中,它可以绘制三角剖分、凸壳和Voronoi细分。在关于四面体最终集合的可视化,我没有找到一个简单的方法,但是我…...

昆明小程序开发联系方式/莱阳seo排名

txt文件小 #coding:utf-8fname为所读xx.txt文件 输出为:文件第一行和最后一行 fname test.txt with open(fname, r) as f: #打开文件 lines f.readlines() #读取所有行 first_line lines[0] #取第一行 last_line lines[-1] #取最后一行 print 文件 fname 第一…...

中企动力网站建设方案/系统优化app最新版

存储字符集 utf8 和 utf8mb4 utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8 字符,也就是 Unicode 中的基本多文本平面。 要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后…...

北京智能网站建设制作/广州seo代理

上一篇我们主要学习了一维数组的操作,现实场景中,一维数组往往无法满足需要,本关将学习略微复杂的多维数组。多维数组一维数组只有行,二维数组相比一维数组多了列这个维度,而三维数组则类似多个二维数组堆叠在一起&…...