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的快速伸缩功能 但是我们平时工作中我们并不能提前预知访问量有多少,资源需求多少. 这就很麻烦了,总不能为了需求总 ...
随机推荐
- JavaSE开发基础--包机制&JavaDoc&Scanner&循环结构&方法&数组
包机制 如果文件在包中需要 在文件首行添加 package 地址 package pkg1.pkg2.pkg3 import package1 JavaDoc /** * @author作者名 * @ ...
- Consul的服务注册与发现(简单介绍)
Consul的注册中心的安装及配置 1.consul下载 2.开发模式启动consul consul agent -dev 3.验证测试 通过以下地址可以访问Consul的首页: http://loc ...
- 合阔智云核心生产系统切换到服务网格 ASM 的落地实践
简介: 合阔智云提供了从全渠道交易管理到订单履约再到门店供应链完整的餐饮零售连锁解决方案,整个方案采取微服务设计,并深度使用了 Kubernetes 作为生产调度平台. 作者:刘如鸿 背景 合阔智 ...
- 1小时打造HaaS版小小蛮驴智能车
简介: 2020年云栖大会上,阿里云发布了一款机器人"小蛮驴",瞬间激起千层浪,无人车,智能物流,机器人等一些概念又火热了一把. 借"小蛮驴"的东风以及火热的H ...
- 使用 Arthas 排查开源 Excel 组件问题
简介: 有了实际的使用之后,不免会想到,Arthas 是如何做到在程序运行时,动态监测我们的代码的呢?带着这样的问题,我们一起来看下 Java Agent 技术实现原理. 背景介绍 项目中有使 ...
- ICBU可控文本生成技术详解
简介: 文本生成(Text Generation)是自然语言处理(Natural Language Processing,NLP)领域的一项重要且具有挑战的任务.顾名思义,文本生成任务的目的是生成近 ...
- [GPT] vue 的 quasar 框架 在 layout 模版中 如何获取 子页面当前使用的 useMeta
在 Quasar 框架中,用 Vue Router 的 meta 字段来获取子页面当前使用的 useMeta . 首先,您需要在路由配置中设置子页面的 meta 字段.例如: const rout ...
- [HTML] 访问 a 链接不带 referer 的方式
html5 新属性 referrerpolicy: referrerpolicy no-referrer no-referrer-when-downgrade origin origin-when-c ...
- OLAP系列之分析型数据库clickhouse集群部署(二)
一.环境准备 IP 配置 clickhouse版本 zookeeper版本 myid 192.168.12.88 Centos 7.9 4核8G 22.8.20.11 3.7.1 3 192.168. ...
- C语言实验1
#include<stdio.h> #include<stdlib.h> int main() { printf(" o\n"); printf(" ...