五分钟 k8s 实战-应用探针

e7e0d6929b585fb15659751bec2a89f5.png

Probe.png

今天进入 kubernetes 的运维部分(并不是运维 kubernetes,而是运维应用),其实日常我们大部分使用 kubernetes 的功能就是以往运维的工作,现在云原生将运维和研发关系变得更紧密了。

今天主要讲解 Probe 探针相关的功能,探针最实用的功能就是可以控制应用优雅上线。

就绪探针

举个例子,当我们的 service 关联了多个 Pod 的时候,其中一个 Pod 正在重启但还没达到可以对外提供服务的状态,这时候如果有流量进入。

那这个请求肯定就会出现异常,从而导致问题,所以我们需要一个和 kubernetes 沟通的渠道,告诉它什么时候可以将流量放进来。5a9caf101da0fca781693a18cf00f6d2.png比如如图所示的情况,红色 Pod 在未就绪的时候就不会有流量。

使用就绪探针就可以达到类似的效果:

readnessProbe:  failureThreshold: 3  httpGet:  path: /ping  port: 8081  scheme: HTTP  periodSeconds: 3  successThreshold: 1  timeoutSeconds: 1

这个配置也很直接:

  • 配置一个 HTTP 的 ping 接口

  • 每三秒检测一次

  • 失败 3 次则认为检测失败

  • 成功一次就认为检测成功

但没有配置就绪探针时,一旦 Pod 的 Endpoint 加入到 service 中(Pod 进入 Running 状态),请求就有可能被转发过来,所以配置就绪探针是非常有必要的。

启动探针

而启动探针往往是和就绪探针搭配干活的,如果我们一个 Pod 启动时间过长,比如超过上面配置的失败检测次数,此时 Pod 就会被 kubernetes 重启,这样可能会进入无限重启的循环。

所以启动探针可以先检测一次是否已经启动,直到启动成功后才会做后续的检测。

startupProbe:  failureThreshold: 30  httpGet:  path: /ping  port: 8081  scheme: HTTP  periodSeconds: 5  successThreshold: 1  timeoutSeconds: 1

我这里两个检测接口是同一个,具体得根据自己是实际业务进行配置;比如应用端口启动之后并不代表业务已经就绪了,可能某些基础数据还没加载到内存中,这个时候就需要自己写其他的接口来配置就绪探针了。

4e980c9466dc47e403c542aea1ba98fb.png
image.png

所有关于探针相关的日志都可以在 Pod 的事件中查看,比如如果一个应用在启动的过程中频繁重启,那就可以看看是不是某个探针检测失败了。

存活探针

存活探针往往是用于保证应用高可用的,虽然 kubernetes 可以在 Pod 退出后自动重启,比如 Pod OOM;但应用假死他是检测不出来的。

为了保证这种情况下 Pod 也能被自动重启,就可以配合存活探针使用:

livenessProbe:  failureThreshold: 3  httpGet:  path: /ping  port: 8081  scheme: HTTP  periodSeconds: 3  successThreshold: 1  timeoutSeconds: 1

一旦接口响应失败,kubernetes 就会尝试重启。

8fc7c902d6154012d3f7a826c557806a.png
image.png

总结

0997f41c6905770260cb7a7a17ecb639.png
image.png

以上探针配置最好是可以在研效平台可视化配置,这样维护起来也比较简单。

探针是维护应用健康的必要手段,强烈推荐大家都进行配置。

PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注88d71c1e622e9a7452238755addaf722.jpeg

a22a7dc0cbd186e76d66ec6ca1f04c1c.jpeg

往期推荐

升级到 Pulsar3.0 后深入了解 JWT 鉴权

五分钟k8s实战-Istio 网关

k8s-服务网格实战-配置 Mesh(灰度发布)

k8s-服务网格实战-入门Istio

如何优雅重启 kubernetes 的 Pod

434826753af9ac491ce92912f92a78fa.gif

点分享

54ac48146b03094d1e27b33d70e760c9.gif

点收藏

64743487881c978402733a134d3b2d7b.gif

点点赞

8cc1501136b082583123f4c55b313c94.gif

点在看

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

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

相关文章

source: command not found错误的解决方法

偶遇的一个问题,因为在网上没有找到对应的解决办法,可能是属于个案,在此记录备忘,同时供大家参考。 问题现象: 执行命令 source /etc/profile时报错: bash: “source: command not found... 问题定位和…

C++布隆过滤器,哈希切割

一、哈希切割(用于处理大量的数据) 前面我们学过为了实现哈希映射,我们需要一个哈希函数,这里我们也可以使用哈希函数把IP转为整型。比方说我们分成了100份小文件,idx HashFunc(IP) % 100,idx是几就把它放…

使用Accelerate库在多GPU上进行LLM推理

大型语言模型(llm)已经彻底改变了自然语言处理领域。随着这些模型在规模和复杂性上的增长,推理的计算需求也显著增加。为了应对这一挑战利用多个gpu变得至关重要。 所以本文将在多个gpu上并行执行推理,主要包括:Accelerate库介绍,…

基于ArcGIS Pro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析实践应用

生态系统服务是指生态系统所形成的用于维持人类赖以生存和发展的自然环境条件与效用,是人类直接或间接从生态系统中得到的各种惠益。联合国千年生态系统评估(Millennium ecosystem assessment,MA)提出生态系统服务包括供给、调节、…

Day44力扣打卡

打卡记录 给小朋友们分糖果 II(容斥原理 隔板法) 链接 def c2(n):return n * (n - 1) // 2 if n > 1 else 0class Solution:def distributeCandies(self, n: int, limit: int) -> int:return c2(n 2) - 3 * c2(n - limit 1) 3 * c2(n - 2 * …

skywalking告警qq邮箱发送

首先开启发送接收qq邮箱的权限 开启之后&#xff0c;会让你发送信息&#xff0c;按着一系列操作&#xff0c;获得password &#xff08;授权码&#xff08;例如&#xff0c;qq开启SMTP授权码&#xff0c;qq授权码16位&#xff09;&#xff09; <!-- mail邮箱-->…

基于QT的俄罗斯方块游戏设计与实现

基于QT的俄罗斯方块游戏设计与实现 摘要&#xff1a;信息时代正处于高速发展中&#xff0c;而电子游戏已经成为人生活中或不可少的消磨工具之一。科技时代在不断地高速发展中&#xff0c;游戏相关编程设计也随着发展变得越来越重要&#xff0c; 俄罗斯方块游戏是一款古老传遍世…

共享充电宝被取代,共享WIFI项目将成市场趋势!

在创业领域如果有这样一个项目&#xff0c;你会选择哪一个&#xff1f;前者投资十万风险大&#xff0c;后者投资几千风险小。同样需要扫街地推&#xff0c;但产生的利润是相同的。相信100%的人会选择后者。实际上这两个项目前者就是共享电宝&#xff0c;后者就是共享WiFi项目。…

【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用

文章目录 一. Hive Architecture二. Metastore1. Metastore Architecture2. Metastore Interface 三. Compiler四. hive架构小结 本文主要讨论了 描述了hive架构&#xff0c;hive主要组件的作用详细描述了hsql在hive执行过程中的底层细节描述了hive各组件作用 一. Hive Archite…

U4_2:图论之MST/Prim/Kruskal

文章目录 一、最小生成树-MST生成MST策略一些定义 思路彩蛋 二、普里姆算法&#xff08;Prim算法&#xff09;思路算法流程数据存储分析 伪代码时间复杂度分析 三、克鲁斯卡尔算法&#xff08;Kruskal算法&#xff09;分析算法流程并查集-Find-set 伪代码时间复杂度分析 一、最…

Java 基础学习(三)循环流程控制与数组

1 循环流程控制 1.1 循环流程控制概述 1.1.1 什么是循环流程控制 当一个业务过程需要多次重复执行一个程序单元时&#xff0c;可以使用循环流程控制实现。 Java中包含3种循环结构&#xff1a; 1.2 for循环 1.2.1 for循环基础语法 for循环是最常用的循环流程控制&#xff…

android开发:安卓13Wifi和热点查看与设置功能

近日对安卓热点功能做了一些技术验证&#xff0c;目的是想利用手机开热点给设备做初始化&#xff0c;用的是安卓13&#xff0c;简言之&#xff1a; 热点设置功能不可用&#xff0c;不可设置SSID和密码&#xff0c;不可程序控制开启关闭&#xff0c;网上的代码统统都过时了Loca…