kubernets之存活探针
一 存活探针存在的意义
1.1 kubernet通过存活探针(liveness probe)检查容器是否还在运行,可以为pod中的每个容器单独指定存活探针,如果探针执行失败,kubernets会重启容器
二 存活探针的三种探测机制
2.1 HTTP GET探针是对容器的IP地址以及指定的端口执行HTTP GET请求,如果探测收到响应,并且响应的返回码是20x,30x则认为探测成功
如果探测的返回值不是或者根本不响应,则表示容器探测失败,需要重启容器
2.2 TCP套接字探针,是尝试在容器里面建立TCP端口连接,建立成功则探测成功,反之,则探测失败
2.3 Exec探针,在容器里面执行任意的命令,如果返回状态码是0则表示探测成功,反之则探测失败,需要重启容器
三 三种存活的创建示范以及代码展示
3.1 创建基于HTTP的存活探针的yaml配置
- #cat kubia-liveness-probe.yml
apiVersion: v1- kind: Pod
- metadata:
- name: kubia-liveness
- spec:
- containers:
- - image: luksa/kubia-unhealthy
- name: kubia
- livenessProbe:
- httpGet:
- path: /
- port: 8080
initialDelaySecond: 15- ports:
- - containerPort: 8080
- protocol: TCP
3.2 创建该pod
- k create -f kubia-liveness-probe.yml
- pod/kubia-liveness created
3.3 等待几分钟观察pod的运行状况
- [root@node01 Chapter04]# k get po
- NAME READY STATUS RESTARTS AGE
- kubia-liveness 1/1 Running 5 11m
3.4 观察pod的整个生命周期的状况(省略无关内容)
- [root@node01 Chapter04]# k describe po kubia-liveness
- Events:
- Type Reason Age From Message
- ---- ------ ---- ---- -------
- Normal Scheduled 12m default-scheduler Successfully assigned default/kubia-liveness to node01
- Normal Created 6m38s (x3 over 10m) kubelet Created container kubia
- Normal Started 6m38s (x3 over 10m) kubelet Started container kubia
- Normal Killing 5m22s (x3 over 9m2s) kubelet Container kubia failed liveness probe, will be restarted
- Normal Pulling 4m52s (x4 over 12m) kubelet Pulling image "luksa/kubia-unhealthy"
- Normal Pulled 4m48s (x4 over 10m) kubelet Successfully pulled image "luksa/kubia-unhealthy"
- Warning Unhealthy 2m2s (x13 over 9m22s) kubelet Liveness probe failed: HTTP probe failed with statuscode: 500
可以看到当在pod中加入存活探针之后,kubelet会周期性的去执行HTTP GET探针,并且在返回500返回码是显示探测失败,并重新拉取镜像,而不是简单的重启容器
四 配置有效探针需要注意的几点
4.1 存活探针应该检查什么
以上演示的探针仅仅是一个get请求,检测服务端是否响应,虽然看起来过于简单,但是对比没有探针的情况下已经是大大的进步了,但为了更好的进行存活检查,需要对get请求的路径
做更进一步详细的描述以达到将所有重要的组件进行检查,以确保这些组件都能健康稳定的运行
4.2 保存探针的轻量型
一个探针不应该过多的消耗系统资源,并且不可运行太长时间,这样会大大的减慢容器的运行,因为探针的cpu配额会计入容器的cpu配额
4.3 无需在探针里面实现重复循环
无需在探针检测逻辑实现重复循环
kubernets之存活探针的更多相关文章
- kubernets之就绪探针
一 介绍就绪探针 1.1 开始介绍就绪探针之前,让我们来提问几个问题?第一,在sevice这章我们了解到, 当流量从Ingress被转发到服务,然后服务从其维护当Endponits 里面列表查找到任 ...
- pod健康检查(liveness probe存活探针&&readiness probe 可读性探针)
在Kubernetes集群当中,我们可以通过配置liveness probe(存活探针)和readiness probe(可读性探针)来影响容器的生存周期.参考文档:https://kubernete ...
- Kubernetes学习笔记(二):部署托管的Pod -- 存活探针、ReplicationController、ReplicaSet、DaemonSet、Job、CronJob
存活探针 Kubernetes可以通过存活探针(liveness probe)检查容器是否存活.如果探测失败,Kubernetes将定期执行探针并重新启动容器. 官方文档请见:https://kube ...
- kubernetes的存活探针和就绪探针
1.存活探针 使用Kubernetes的一个主要好处是,可以给Kubernetes-个容器列表来由其保持容器在集群中的运行.可以通过让Kubernetes创建pod资源,为其选择一个工作节点并在该节点 ...
- k8s 存活探针,滚动更新
文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...
- dubbo 协议的 K8s pod 存活探针配置
背景 某项目采用微服务架构,dubbo 框架,K8s 方式部署. 其中 HTTP 协议由网关应用统一处理,大部分应用仅提供 dubbo 协议. 目标 应用某个实例(pod)状态异常时,尝试自动重启恢复 ...
- k8s 存活探针(健康检查)
重启策略 (RestartPolicy ) Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容器异常退出(退出状态码非0)时,才重启容器. Never:当容器终止退出, ...
- Kubernetes 存活、就绪探针
在设计关键任务.高可用应用程序时,弹性是要考虑的最重要因素之一. 当应用程序可以快速从故障中恢复时,它便具有弹性. 云原生应用程序通常设计为使用微服务架构,其中每个组件都位于容器中.为了确保Kuber ...
- 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试
一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...
随机推荐
- JavaSE23-函数式接口&Stream流
1.函数式接口 1.1 函数式接口概述 概念 有且仅有一个抽象方法的接口 如何检测一个接口是不是函数式接口 @FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过 ...
- Another MySQL daemon already running with the same unix socket. & ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
mysql 断电后启动失败解决 应该是mysql.sock文件还存在. 把这个文件删掉就可以了. mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.s ...
- monkey 基本用法
monkey测试步骤: 一.使用模拟机 1.安装好虚拟机,比如说天天模拟机.夜神模拟机.雷神模拟机 2.将需要测试的APK装在虚拟机上 3.cmd>adb shell 连接模拟机 4.输入命令m ...
- vue第十二单元(vue中过渡效果的实现)
第十二单元(vue中过渡效果的实现) #课程目标 熟练掌握transition组件的用法 熟练使用transition组件做过渡特效 熟练使用transition组件做动画特效 了解使用transit ...
- 记MSSQL和MYSQL
简单的说就是mssql是asp和asp.net是黄金搭档mysql是PHP是黄金搭档他们相互结合比较好用,速度也比较快!!!MSSQL就是SQLSERVER,MS是微软的缩写MYSQL是一套免费的数据 ...
- Kubernetes K8S之Helm部署、使用与示例
Kubernetes K8S之Helm部署.使用.常见操作与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- 容器编排系统k8s之Ingress资源
前文我们了解了k8s上的service资源的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14161950.html:今天我们来了解下k8s上的In ...
- java中定时器设置时间
<!-- 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时 0 0 12 ? * WED 表示每个星期三中午1 ...
- 支付业务优化else if 代码
背景 最近在做项目的时候,需要接入支付.由于接入第三方支付而且还不知止一家,需要接入很多家.比如说支付宝.微信.富友支付等.每家支付都一个回调.现如今的代码,根据不同的第三方支付一大堆else if判 ...
- node-sass 安装失败报错的原因及解决办法(整理)
npm install 时偶尔遇到报错:没有安装python或node-sass 安装失败的问题,百度之后发现是被墙了,但根据百度的方法换了淘宝镜像和用了vpn都安装失败,最后发现原来是因为没有卸载之 ...