探针

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

  • 为什么会需要探针
# 情况一
现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的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. 重新整理数据结构与算法(c#)——算法套路贪心算法[二十八]

    前言 贪心算法,记得学的时候还是大学的时候,再次来总结一下吧. 贪心算法并不是指具体的固定代码,而是指一种思路,加入我们每次都选最好的选择,那么很大可能会得到最好的结果. 题目: 正文 思路,加入把k ...

  2. 使用Elasticsearch做手机号和身份证号的模糊检索

    使用Elasticsearch做手机号和身份证号的模糊检索 背景 客户想通过人名 四位数值 来检索人的信息 例如 张三 3421,例如需要检索包含张三和且手机号或者身份证里包含3421的数据 过程 e ...

  3. This beta version of Typora is expired, please download and install a newer version. 实测最简单有效的方案

    This beta version of Typora is expired, please download and install a newer version. 实测最简单有效的方案 一.问题 ...

  4. 本地部署Llama3-8B/72b 并进行逻辑推理测试

    美国当地时间4月18日,Meta开源了Llama3大模型,目前开源版本为8B和70B.Llama 3模型相比Llama 2具有重大飞跃,并在8B和70B参数尺度上建立了LLM模型的新技术.由于预训练和 ...

  5. 力扣441(java&python)-排列硬币(简单)

    题目: 你总共有 n 枚硬币,并计划将它们按阶梯状排列.对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币.阶梯的最后一行 可能 是不完整的. 给你一个数字 n ,计算并返回可形成 完整 ...

  6. 力扣166(java)-分数到小数(中等)

    题目: 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 . 如果小数部分为循环小数,则将循环的部分括在括号内. 如果存在多个答案,只需返回 ...

  7. 携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”

    ​简介:2022阿里云视觉计算私享会:加速虚拟与现实的交互. 引言:2022年互联网行业里XR.数字孪生.虚拟现实等领域再次"翻红".新旧概念频出,不少人相信这些技术将给当下的互联 ...

  8. 大模型 RAG 是什么

    大模型 RAG(Retrieval-Augmented Generation)是一种结合了检索(Retrieval)与生成(Generation)能力的先进人工智能技术,主要用于增强大型语言模型(LL ...

  9. [Blockchain] Cosmos Starport 101 - 为你的新数据类型 生成代码

    # 项目模板 $ starport app github.com/hello/planet --address-prefix your_new_prefix 项目目录结构的说明看这里: https:/ ...

  10. 2019-10-28-dotnet-代码调试方法

    title author date CreateTime categories dotnet 代码调试方法 lindexi 2019-10-28 08:50:11 +0800 2019-6-5 9:4 ...