探针

简单理解: 容器内应用的检测机制,根据不同的探针来判断容器应用当前的状态

  • 为什么会需要探针
# 情况一
现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的pod虽然在,但是也相当于挂掉了。这个时候我们,就需要重启服务。
这个服务怎么启动,什么时候启动,什么状态启动。是由,我们指定的重启策略(配置文件里的一个参数‘restartPolicy’)来决定的。 但是,我们怎么知道这个服务挂掉了呢?是靠我们的探针。
当我们的容器创建成功之后,会创建一个探针,这个探针会一直监控容器。如果,这个容器挂掉了,他就会去找是否配置了相对应的重启策略,如果有,就按照重启策略重启这个容器(也决定是否重启)。 # 情况二
有一个商品服务,我启动了这个服务,但是还有一些初始化的配置,没有完成。所以,在我初始化没有完成的时候,我不希望有用户来访问我的端口。那么,我们怎么知道初始化什么时候完成呢?
我们就需要用到探针。

类型

startupProbe

当配置了startupProbe后,会先禁用其他探针,知道startupProbe成功后,其他探针才会继续。

作用:由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种探针。

livenessProbe

用于检查容器内的应用是否还在运行。如果应用因为某种原因挂起或崩溃,它将探测到这个情况,然后会重启该容器。

作用:主要目的是确保应用保持运行状态,而不是陷入死锁或无限循环等无法响应的状态。

readinessProbe

用于探测容器内的程序是否健康,他的返回值如果返回success,那么就认为该容器已经完成启动,并且该容器是可以接受外部流量的。

作用:方便一些需要启动时间来完成初始化或者加载数据的应用非常有用。在这些应用完全准备好之前,readinessProbe会返回失败,从而防止外部请求被发送到尚未完全启动的容器。

探测方式

  • ExecAction

在容器内部执行一个命令,如果返回值为0,则任务容器是健康的。

livenessProbe:
exec:
command:
- cat
- /health
  • TCPSocketAction

通过tcp连接检测容器内端口是否开房,如果开放则证明该容器健康。

livenessProbe:
tcpSocket:
port: 80
  • HTTPGetAction

生产环境用的较多的方式,发送http请求到容器内的应用程序,如果接口返回的状态码在200-400之间,则认为容器健康。

livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: 8080
scheme: HTTP
httpHeaders:
- name: xxx
value: xxx
  • 一些简单的参数
initialDelaySeconds: 5 # 初始化时间
timeoutSeconds: 1 # 超时时间
periodSeconds: 10 # 间隔时间
successThreshold: 1 # 检查一次成功就表示成功
failureThreshold: 3 # 检测失败两次就表示失败
readinessProbe:
failureThreshold: 3 # 错误次数
httpGet:
path: /ready
port: 8080
scheme: HTTP
periodSeconds: 10 # 间隔时间
successThreshold: 1

k8s——pod探针的更多相关文章

  1. dubbo 协议的 K8s pod 存活探针配置

    背景 某项目采用微服务架构,dubbo 框架,K8s 方式部署. 其中 HTTP 协议由网关应用统一处理,大部分应用仅提供 dubbo 协议. 目标 应用某个实例(pod)状态异常时,尝试自动重启恢复 ...

  2. k8s pod的4种网络模式最佳实战(externalIPs )

    [k8s]k8s pod的4种网络模式最佳实战(externalIPs )       hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm ...

  3. k8s pod节点调度及k8s资源优化

    一.k8s pod 在节点间调度控制 k8s起pod时,会通过调度器scheduler选择某个节点完成调度,选择在某个节点上完成pod创建.当需要在指定pod运行在某个节点上时,可以通过以下几种方式: ...

  4. kubectl cp 从k8s pod 中 拷贝 文件到本地

    请查看官方的说明 kubectl cp --help 官方说使用cp , pod里需要有tar命令 从k8s pod 中 拷贝 文件到本地 这是我使用的命令 kubectl exec redis-6c ...

  5. 2.k8s.Pod生命周期,健康检查

    #Pod生命周期,健康检查 pod创建过程 Init容器 就绪探测 存活探测 生命周期钩子 #Pod创建过程 master节点:kubectl -> kube-api -> kubenle ...

  6. 深入掌握K8S Pod

    k8s系列文章: 什么是K8S K8S configmap介绍 Pod是k8s中最小的调度单元,包含了一个"根容器"和其它用户业务容器. 如果你使用过k8s的话,当然会了解pod的 ...

  7. 混沌工程之ChaosToolkit使用之一删除K8s POD

    今天我们来玩一下混沌工程的开源工具chaostoolkit . 它的目标是提供一个免费,开放,社区驱动的工具集以及api. 官方源码链接:https://github.com/chaostoolkit ...

  8. k8s 存活探针,滚动更新

    文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...

  9. 记一次k8s pod频繁重启的优化之旅

    关键词:k8s.jvm.高可用 1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说, ...

  10. k8s Pod的自动水平伸缩(HPA)

    我们知道,当访问量或资源需求过高时,使用:kubectl scale命令可以实现对pod的快速伸缩功能 但是我们平时工作中我们并不能提前预知访问量有多少,资源需求多少. 这就很麻烦了,总不能为了需求总 ...

随机推荐

  1. lattice的ip不显示,如何解决

    最近ip服务器可能会遇到问题,建议客户把更新检查关掉.我们有对应的IP下载链接.   diamond在     https://www.latticesemi.com/ispupdate/ipexpr ...

  2. 【vue】纯前端图形验证码实现

    [vue]纯前端图形验证码实现 感觉人不能在SQL里面淹死,得看看别的东西了 因为是上班摸鱼偷摸搞的,所以人比较懒,很多东西也懒得修修改改,直接放在一个html文件下了 页面如下 js的生成图形逻辑是 ...

  3. 字节面试:如何解决MQ消息积压问题?

    MQ(Message Queue)消息积压问题指的是在消息队列中累积了大量未处理的消息,导致消息队列中的消息积压严重,超出系统处理能力,影响系统性能和稳定性的现象. 1.消息积压是哪个环节的问题? M ...

  4. 【pytorch学习】之微积分

    4 微积分 在2500年前,古希腊人把一个多边形分成三角形,并把它们的面积相加,才找到计算多边形面积的方法.为了求出曲线形状(比如圆)的面积,古希腊人在这样的形状上刻内接多边形.如图所示,内接多边形的 ...

  5. OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能

    简介: OpenKruise 是阿里云开源的云原生应用自动化管理套件,也是当前托管在 Cloud Native Computing Foundation (CNCF) 下的 Sandbox 项目.它来 ...

  6. Resin反序列化链分析

    前言 Resin是一个轻量级的.高性能的开源Java应用服务器.它是由Caucho Technology开发的,旨在提供可靠的Web应用程序和服务的运行环境.和Tomcat一样是个服务器,它和hess ...

  7. 2019-4-29-win10-uwp-使用-Border-布局

    title author date CreateTime categories win10 uwp 使用 Border 布局 lindexi 2019-04-29 12:29:45 +0800 201 ...

  8. python实现打扑克方法

    # 游戏规则:# 一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢.## 有以下几种牌:# 豹子:三张一样的牌,如3张6.# 同花顺:即3张同样花色的顺子, 如红桃 5.6.7# 顺子:又 ...

  9. SpringMVC学习三(静态资源/AJAX功能/乱码问题)

    静态资源的映射 Springmvc完成ajax功能 SpringMVC返回中文到ajax乱码问题解决方式 1.静态资源映射 对于之前web.xml配置文件中的 先做出如下更改,不可写"/*& ...

  10. SAP集成技术(五)集成风格

    上一节介绍了各种集成架构,这一节将介绍各种集成风格(Style).我们在日常工作中使用这些集成风格来分类不同类型的集成场景.本文将遵循SAP的集成解决方案咨询方法(ISA - M)使用的方法,将集成风 ...