探针

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

  • 为什么会需要探针
# 情况一
现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的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. 快速上手Linux核心命令

    Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统. 只有熟练掌握Linux核心命令,在使用起来我们才会得心应 ...

  2. Node.js 中的事件循环机制

    一.是什么 在浏览器事件循环中,我们了解到javascript在浏览器中的事件循环机制,其是根据HTML5定义的规范来实现 而在NodeJS中,事件循环是基于libuv实现,libuv是一个多平台的专 ...

  3. ASP.NET Core Web API下基于Keycloak的多租户用户授权的实现

    在上文<Keycloak中授权的实现>中,以一个实际案例介绍了Keycloak中用户授权的设置方法.现在回顾一下这个案例: 服务供应商(Service Provider)发布/Weathe ...

  4. 云服务器ECS共享标准型S6全新发布,行业内最具性价比

    近日,阿里云弹性计算发布全新一代云服务ECS共享标准型S6,性能相对上一代实例提升15%以上,价格相对上一代最高降低42%,是目前国内云计算厂商更能够提供的最具性价比的云服务器产品.一些中小型网站.轻 ...

  5. 【视频特辑】提效神器!如何用Quick BI高效配置员工的用数权限

    ​简介:随着企业数字化进程逐步加速,企业所产生和积累的数据资源日益增多.每当员工的用数权限发生变动,管理员都需要进行复杂繁琐的重复性配置流程,不仅耗时耗力还容易出错. 如何能便捷地对员工用数权限进行高 ...

  6. WPF 已知问题 Separator 无法应用 ContextMenu 定义的默认样式

    本文记录一个 WPF 已知问题,在 ContextMenu 的 Resources 里定义 Separator 的默认样式,在 ContextMenu 里面的 Separator 将应用不上,或者说不 ...

  7. WPF 下拉框选项做鼠标 Hover 预览效果

    本文来告诉大家如何在 WPF 中,在 下拉框 ComboBox 里面,鼠标移动到 ComboBoxItem 上时,自动触发对应的事件,用来预览此选项值.例如我在实现一个颜色下拉框,此时我可以通过点击下 ...

  8. 美团二面:SpringBoot读取配置优先级顺序是什么?

    引言 Spring Boot作为一种轻量级的Java应用程序框架,以其开箱即用.快速搭建新项目的特性赢得了广大开发者的青睐.其核心理念之一就是简化配置过程,使开发者能够快速响应复杂多变的生产环境需求. ...

  9. 🔥httpsok-v1.8.1 一分钟搞定SSL证书自动续期

    httpsok-v1.8.1 一分钟搞定SSL证书自动续期 简介 一行命令,一分钟轻松搞定SSL证书自动续期 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 服务器设计. ...

  10. Mybatis Plus的@TableId标签

    @TableId1.如果数据库字段设成user_id在初始生成后,在代码中会变成userId,不会设置成主键使用**@TableId(value="user_id",type = ...