热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pod探针(probe)

目录🧡什么是Pod探针?🧡探针类型livenessProbe存活探针startupProbe启动探针readinessPro

目录

🧡什么是Pod探针?

🧡探针类型

livenessProbe 存活探针

startupProbe 启动探针

readinessProbe 就绪探针

🧡探测方式

exec 命令行探测

tcpSocket 端口探测

httpGet api探测

grpc 远程探测




💟这里是CS大白话专场,让枯燥的学习变得有趣!

💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话!

💟好记性不如烂键盘,自己总结不如收藏别人!



🧡什么是Pod探针?

💌Pod是k8s的最小执行单元,probe 是由 kubelet 对容器执行的定期诊断。 要执行诊断,kubelet 既可以在容器内执行代码,也可以发出一个网络请求。


🧡探针类型

💌Pod探针主要有三种类型:


livenessProbe 存活探针

💌用于探测容器是否运行,会一直检测如果探测失败,kubelet会杀死容器,并根据配置的重启策略进行处理。若没有配置,默认Success。

🍠如果容器中的进程能够在遇到问题或不健康的情况下自行停止,则不一定需要存活探针; kubelet 将根据 Pod 的 restartPolicy 自动执行修复操作。

🍠如果希望容器在探测失败时被杀死并重新启动,那么请指定一个存活探针, 并指定 restartPolicy 为 "Always" 或 "OnFailure"。


startupProbe 启动探针

💌1.16版本新增探测方式,用于判断容器内应用程序是否启动,如果配置了startupProbe,就会先禁止其他的探针,直到探测到容器启动成功为止如果探测失败,kubelet会杀死容器,并根据配置的重启策略进行处理。若没有配置,默认Success。

🍠对于所包含的容器需要较长时间才能启动就绪的 Pod 而言,启动探针是有用的。 

🍠如果容器需要在启动期间加载大型数据、配置文件或执行迁移, 可以使用启动探针。

🍠如果容器启动时间通常超出 initialDelaySeconds + failureThreshold × periodSeconds 总值,应该设置一个启动探针,对存活探针所使用的同一端点执行检查。 periodSeconds 的默认值是 10 秒。应该将其 failureThreshold 设置得足够高, 以便容器有充足的时间完成启动,并且避免更改存活探针所使用的默认值。 这一设置有助于减少死锁状况的发生。


readinessProbe 就绪探针

💌一般用于探测容器内应用程序是否正常运行,会一直监测。若为Success,则表示程序已经完全启动,可以接收流量。如果探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。若没有配置,默认Success。

🍠Pod 将在启动阶段不接收任何数据,并且只有在探针探测成功后才开始接收数据,需要指定就绪探针。 

🍠如果希望容器能够自行进入维护状态,也可以指定一个就绪探针。

🍠如果应用程序对后端服务有严格的依赖性,可以同时实现存活和就绪探针。 当应用程序本身是健康的,存活探针检测通过后,就绪探针会额外检查每个所需的后端服务是否可用。 这可以避免将流量导向只能返回错误信息的 Pod。

🍠如果想区分已经失败的应用和仍在处理启动数据的应用,更倾向于使用就绪探针。


🧡探测方式

💌使用探针来检查容器有四种不同的方法。 每个探针都必须准确定义为这四种机制中的一种:


exec 命令行探测

💌在容器内执行一个命令,如果返回值为0,则认为容器健康。

vim exec.yamlapiVersion: v1
kind: Pod
metadata:labels:test: liveness #为了健康检查定义的标签name: liveness-exec
spec: #定义了Pod中containers的属性containers:- name: livenessimage: nginxargs: #传入的命令- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy;sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查 periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5stimeoutSeconds: 1failureThreshold: 30successThreshold: 1

tcpSocket 端口探测

💌通过TCP连接检查容器内端口是否可以建立连接,如果是通的则容器健康。

vim tcp.yamlapiVersion: v1
kind: Pod
metadata:labels:test: liveness #为了健康检查定义的标签name: liveness-tcp
spec: #定义了Pod中containers的属性containers:- name: livenessimage: nginxlivenessProbe:tcpSocket:port:8080initialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查 periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5stimeoutSeconds: 1

httpGet api探测

💌最可靠的方式,通过应用程序暴露的API地址来检查程序是否是正常的,如果状态码为200~400之间,则认为容器健康。

vim http.yamlapiVersion: v1
kind: Pod
metadata:labels:test: liveness #为了健康检查定义的标签name: liveness-http
spec: #定义了Pod中containers的属性containers:- name: livenessports:- containerPort: 80image: nginxlivenessProbe:httpGet:port:80path: /index.htmlinitialDelaySeconds: 5 #表示pod中容器启动成功后,多少秒后进行健康检查 periodSeconds: 5 #在首次健康检查后,下一次健康检查的间隔时间5stimeoutSeconds: 1

grpc 远程探测

💌使用gRPC执行一个远程过程调用。 目标应该实现 gRPC健康监测。 如果响应的状态是 "SERVING",则认为诊断成功。 gRPC 探针是一个 Alpha 特性,只有在启用了"GRPCContainerProbe"时才能使用。


推荐阅读
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • 本文深入探讨了 Spring Cloud 微服务架构中 Gateway 组件的应用,详细介绍了其在实现高效请求路由与过滤方面的关键作用。文章首先从基本配置入手,逐步讲解了如何通过静态路由和动态路由实现灵活的服务访问控制。此外,还特别介绍了如何配置 Gateway 以自动从 Nacos 服务注册中心拉取服务列表,进一步提升系统的可维护性和扩展性。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
author-avatar
笑到哭哈哈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有