k8s——pod探针
探针
简单理解: 容器内应用的检测机制,根据不同的探针来判断容器应用当前的状态
- 为什么会需要探针
# 情况一
现在有一个商品的微服务,跑着跑着突然内存溢出,程序崩掉了,外面的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探针的更多相关文章
- dubbo 协议的 K8s pod 存活探针配置
背景 某项目采用微服务架构,dubbo 框架,K8s 方式部署. 其中 HTTP 协议由网关应用统一处理,大部分应用仅提供 dubbo 协议. 目标 应用某个实例(pod)状态异常时,尝试自动重启恢复 ...
- k8s pod的4种网络模式最佳实战(externalIPs )
[k8s]k8s pod的4种网络模式最佳实战(externalIPs ) hostPort相当于docker run -p 8081:8080,不用创建svc,因此端口只在容器运行的vm ...
- k8s pod节点调度及k8s资源优化
一.k8s pod 在节点间调度控制 k8s起pod时,会通过调度器scheduler选择某个节点完成调度,选择在某个节点上完成pod创建.当需要在指定pod运行在某个节点上时,可以通过以下几种方式: ...
- kubectl cp 从k8s pod 中 拷贝 文件到本地
请查看官方的说明 kubectl cp --help 官方说使用cp , pod里需要有tar命令 从k8s pod 中 拷贝 文件到本地 这是我使用的命令 kubectl exec redis-6c ...
- 2.k8s.Pod生命周期,健康检查
#Pod生命周期,健康检查 pod创建过程 Init容器 就绪探测 存活探测 生命周期钩子 #Pod创建过程 master节点:kubectl -> kube-api -> kubenle ...
- 深入掌握K8S Pod
k8s系列文章: 什么是K8S K8S configmap介绍 Pod是k8s中最小的调度单元,包含了一个"根容器"和其它用户业务容器. 如果你使用过k8s的话,当然会了解pod的 ...
- 混沌工程之ChaosToolkit使用之一删除K8s POD
今天我们来玩一下混沌工程的开源工具chaostoolkit . 它的目标是提供一个免费,开放,社区驱动的工具集以及api. 官方源码链接:https://github.com/chaostoolkit ...
- k8s 存活探针,滚动更新
文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...
- 记一次k8s pod频繁重启的优化之旅
关键词:k8s.jvm.高可用 1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说, ...
- k8s Pod的自动水平伸缩(HPA)
我们知道,当访问量或资源需求过高时,使用:kubectl scale命令可以实现对pod的快速伸缩功能 但是我们平时工作中我们并不能提前预知访问量有多少,资源需求多少. 这就很麻烦了,总不能为了需求总 ...
随机推荐
- Chat2table,简易表格分析助手
一 写在前面 之前用智谱AI的Chatglm3-6b模型写过一个简单的论文阅读助手,可用来辅助论文阅读等.而像表格,如Excel.CSV文件等内容的分析,也是不可忽略的需要,因此本文同样使用Chatg ...
- 旧版本的centOS下载(国内-清华)
链接如下: https://mirrors.tuna.tsinghua.edu.cn/centos-vault/
- 中国大陆地区维护的Linux操作系统
Linux开源生态丰富,中国大陆地区基于CentOS停服,依托阿里云.腾讯云.华为云三大私营企业,相继发布了自己的开源Linux定制版,很高兴的是他们只是改个名字并没有选择闭门造车,只是官网还是很不耻 ...
- 力扣209(java&python)-长度最小的子数组(中等)
题目: 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, ...
- 零信任策略下K8s安全监控最佳实践(K+)
简介: 本文重点将围绕监控防护展开,逐层递进地介绍如何在复杂的分布式容器化环境中借助可观测性平台,持续监控K8s集群,及时发现异常的 API 访问事件.异常流量.异常配置.异常日志等行为,并且结合合理 ...
- 重度使用Flutter研发模式下的页面性能优化实践
简介: 淘宝特价版是集团内应用Flutter技术场景比较多,且用户量一亿人以上的应用了.目前我们首页.详情.店铺.我的,看看短视频,及评价,设置等二级页面都在用Flutter技术搭建.一旦Flutte ...
- WPF 使用 VideoDrawing 播放视频
本文告诉大家如何在 WPF 使用 VideoDrawing 进行视频播放 用这个方法有什么优势?其实只是想作为某个控件的背景,某个控件的背景使用视频而已 控件的背景使用 DrawingBrush 传入 ...
- WinDbg 加载 dotnet core 的 sos.dll 辅助调试方法
本文告诉大家如何加载 .NET Core 或 .NET 5 的 sos.dll 文件到 WinDbg 的方法 和 .NET Framework 或 dotnet core 2.0 不相同的是,当前的 ...
- [ABC345D] Tiling 位运算の极致运用
[ABC345D] Tiling 原题解地址:Editorial by Kiri8128 神写法. 将 \(H \times W\) 的网格展开为 \(H \times (W + 1)\) 的序列, ...
- ITSM2023年十大功能趋势[采和]
总体描述:更加人性化,引入自动化相关的设计和技术,更加实用好用.1. 100%服务目录服务目录必须完全贴合用户方的运维实际开展的 服务清单,而不是想当然的抄书或者臆想!都2023年了,还有完全不着调的 ...