k8s Pod探针(健康检查和服务可用性检查)
探针分为两类:
LivenessProbe探针:用于判断容器是否存活(running状态),如果探测到容器不健康,则kubelet将会杀掉该容器,然后根据重启策略进行重启。如果没有定义LivenessProbe探针,那么kubelet认为该容器永远正常。
ReadinessProbe探针:用于判断容器服务是否可用(Ready状态),达到Ready状态的Pod才会加入到Endpoint列表中,如果运行状态中Ready状态变为False,那么就会从Endpoint列表删除掉。
LivenessProbe和ReadinessProbe探针都可以配置以下三种方式:
- ExecAction:在容器内执行一个命令,如果该命令的返回码为0,则表明容器健康。
- TCPSocketAction:通过容器的IP地址和端口号执行TCP检查,如果能够建立TCP连接,则表明容器健康。
- HTTPGetAction:通过容器的IP地址、端口号及路径调用HTTPGet方法,如果响应码大于200且小于400,则认为容器健康。
注意:initialDelaySeconds首次探测的时间很重要,时间过长(ExecAction案例)、过短(服务还没启动完成)都会导致容器一直重启无法提供服务,所以参数的值需要结合实际情况设置。
案例:
ExecAction案例
在容器中执行cat /tmp/health命令来判断一个容器运行是否正常:
apiVersion: v1
kind: Pod
metadata:labels:test: livenessname: liveness-exec
spec:containers:- name: livenessimage: gcr.io/google_containers/busyboxargs:- /bin/sh- -c- echo ok > /tmp/health; sleep 10; rm -rf /tmp/health; sleep 600 #pod创建运行后,文件10s后删除导致首次健康检查的时候没有探测到,容器会被杀掉并重启,如此往复。livenessProbe:exec:command:- cat- /tmp/healthinitialDelaySeconds: 15 #启动容器后进行首次健康检查的等待时间,单位为s。timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。
TCPSocketAction案例
与容器内的localhost:80建立TCP连接进行监控检查:
apiVersion: v1
kind: Pod
metadata:name: pod-with-healthcheck
spec:containers:- name: nginximage: nginxports:- containerPort: 80livenessProbe:tcpSocket:port: 80initialDelaySeconds: 30 #启动容器后进行首次健康检查的等待时间,单位为s。timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。
HTTPGetAction案例
kubelet定时发送HTTP请求到localhost:80/_status/healthz来进行容器应用的健康检查:
apiVersion: v1
kind: Pod
metadata:name: pod-with-healthcheck
spec:containers:- name: nginximage: nginxports:- containerPort: 80livenessProbe:httpGet:path: /_status/healthzport: 80initialDelaySeconds: 30 #启动容器后进行首次健康检查的等待时间,单位为s。timeoutSeconds: 1 #健康检查发送请求后等待响应的超时时间,单位为s。如果超时则kubelet会重启容器。
k8s Pod探针(健康检查和服务可用性检查)相关推荐
- K8s之Pod的健康检查
前言 Pod的探测用于检测容器中的应用实例是否可以正常的工作.如果不能正常工作应该去重启,或者不将流量引入该实例.K8s给我们提供了三种探测方式. LivenessProbe,ReadinessPro ...
- k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性
引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...
- k8s之pod和pod探针
k8s之pod和探针 什么是Pod Pod是Kubernetes中最小的单元,它由一组.一个或多个容器组成,每个Pod还包含了一个Pause容器,Pause容器是Pod的父容器,主要负责僵尸进程的回收 ...
- k8s每天报告服务器状态信息,[工作随笔] 配置 cron 检查 K8s Pod 存活状态以推送钉钉消息...
背景 前段时间接手了一份维护老系统的任务.该系统使用了早期的 Spring Cloud 全家桶,其中有一个微服务随着时间运行会出现大量 CLOSE_WAIT 状态的 socket 连接以至于堵塞网关, ...
- linux生成海报时字体问题,研发:k8s pod 服务生成海报时字体出现乱码
原标题:研发:k8s pod 服务生成海报时字体出现乱码 在使用容器化部署时,基础镜像使用 alpine 如果在系统处理时,需要用到其他字体需要,自行安装. 安装微软相关字体 FROM alpine: ...
- 记一次k8s pod频繁重启的优化之旅
1.背景 最近有运维反馈某个微服务频繁重启,客户映像特别不好,需要我们尽快看一下. 听他说完我立马到监控平台去看这个服务的运行情况,确实重启了很多次.对于技术人员来说,这既是压力也是动力,大多数时候我 ...
- k8s pod 详解
https://www.cnblogs.com/kevingrace/p/11309409.html 一.什么是Pod kubernetes中的一切都可以理解为是一种资源对象,pod,rc,servi ...
- k8s pod详细讲解
文章目录 一.pod介绍 1.结构 2.定义 二.pod生命周期 1.创建和终止 2.初始化容器 3.钩子函数 4.容器探测 5.重启策略 三.Pod调度 1.定向调度 2.亲和性调度 3.污点和容忍 ...
- 【要闻】如何基于K8s管理1600个微服务?某数字化银行秘诀公开
Cloud Foundry Foundation宣布KubeCF为新孵化项目 Cloud Foundry Foundation是开放源代码项目的聚集地,简化了开发人员的体验,近日其宣布,KubeCF已 ...
最新文章
- GXGetImage方式连续采集和发送软触发采集
- 《系统集成项目管理工程师》必背100个知识点-66工作说明书
- 上岸 | 青椒博士毕业后未返校任教,被判返还高校41万余元
- ubantu 单用户模式进入系统
- 公平锁非公平锁的实际使用_面经手册 · 第16篇《码农会锁,ReentrantLock之公平锁讲解和实现》...
- python中属性与方法_python中属性和方法的动态绑定
- GIMP小波分解处理照片
- 7714天,王小川正式卸任搜狗CEO!网友:别了。。。
- 从unity3d官网下载教程
- 百度冰桶算法说明,如何避免冰桶算法呢?
- php违章查询源码,ThinkPHP聚合数据违章查询接口
- 代码庆端午--粽你心意
- python图片合成海报
- 解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设
- 《CCNA学习指南:数据中心(640-911)》——导读
- 互联网公司招聘,你需要注意这四点
- Shell的基础用法
- Spring搭建:log4j的配置
- 我在互联网大厂当鉴黄师:不看黄图敲代码,同事全都是博士
- 指点纺织行业管理系统软件