热门标签 | 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"时才能使用。


推荐阅读
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • k8s之Service介绍
    1、Service是什么?​Service是一种k8s集群中访问pod的一种策略。k8s中的pod具有生命周期,且不可复活。每个pod有着自己的IP地址,pod的销毁与创建都会创新 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 本文探讨了如何利用RxJS库在AngularJS应用中实现对用户单击和拖动操作的精确区分,特别是在调整区域大小的场景下。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • prometheus09-k8s部署grafana
    1.部署grafana?apiVersion:?appsv1?kind:?StatefulSet?metadata:??name:?grafana??namespace:?kube-systemspec:??serviceName:?grafana??repl ... [详细]
  • restful是这些年的高频词汇了,各大互联网公司也都纷纷推出了自己的restfulapi,其实restful和thrift,grpc类似,就是一种协议,但是这种协议有点特殊的就是 ... [详细]
  • 原文:https:www.cnblogs.comdalianpaip12088118.htmlapiVersion:appsv1kind:DaemonSetme ... [详细]
  • 5分钟学会 gRPC
    5分钟学会gRPC-介绍我猜测大部分长期使用Java的开发者应该较少会接触gRPC,毕竟在Java圈子里大部分使用的还是DubboSpringClound这两类服务框架。我也是 ... [详细]
  • 0157.K 升级 kubeadm 集群_一主两从
    升级kube ... [详细]
  • 了解_Istio是啥?一文带你彻底了解!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Istio是啥?一文带你彻底了解!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • helm V3版本
    1、引入(1)之前方式部署应用基本过程*编写yaml文件**deployment**Service**Ingress(负载均衡、 ... [详细]
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社区 版权所有