一   存活探针存在的意义

  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之存活探针的更多相关文章

  1. kubernets之就绪探针

    一 介绍就绪探针 1.1  开始介绍就绪探针之前,让我们来提问几个问题?第一,在sevice这章我们了解到, 当流量从Ingress被转发到服务,然后服务从其维护当Endponits 里面列表查找到任 ...

  2. pod健康检查(liveness probe存活探针&&readiness probe 可读性探针)

    在Kubernetes集群当中,我们可以通过配置liveness probe(存活探针)和readiness probe(可读性探针)来影响容器的生存周期.参考文档:https://kubernete ...

  3. Kubernetes学习笔记(二):部署托管的Pod -- 存活探针、ReplicationController、ReplicaSet、DaemonSet、Job、CronJob

    存活探针 Kubernetes可以通过存活探针(liveness probe)检查容器是否存活.如果探测失败,Kubernetes将定期执行探针并重新启动容器. 官方文档请见:https://kube ...

  4. kubernetes的存活探针和就绪探针

    1.存活探针 使用Kubernetes的一个主要好处是,可以给Kubernetes-个容器列表来由其保持容器在集群中的运行.可以通过让Kubernetes创建pod资源,为其选择一个工作节点并在该节点 ...

  5. k8s 存活探针,滚动更新

    文章原文 存活探针 Kubelet使用liveness probe(存活探针)来确定何时重启容器.例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于 ...

  6. dubbo 协议的 K8s pod 存活探针配置

    背景 某项目采用微服务架构,dubbo 框架,K8s 方式部署. 其中 HTTP 协议由网关应用统一处理,大部分应用仅提供 dubbo 协议. 目标 应用某个实例(pod)状态异常时,尝试自动重启恢复 ...

  7. k8s 存活探针(健康检查)

    重启策略 (RestartPolicy ) Always:当容器终止退出后,总是重启容器,默认策略. OnFailure:当容器异常退出(退出状态码非0)时,才重启容器. Never:当容器终止退出, ...

  8. Kubernetes 存活、就绪探针

    在设计关键任务.高可用应用程序时,弹性是要考虑的最重要因素之一. 当应用程序可以快速从故障中恢复时,它便具有弹性. 云原生应用程序通常设计为使用微服务架构,其中每个组件都位于容器中.为了确保Kuber ...

  9. 【七】Kubernetes 探针介绍 - 存活、就绪探针案例测试

    一.探针概述 探针是有 kubelet 对容器执行的定期诊断,并不是由 Master 节点发起的探测,而是由每一个 Node 所在的 kubelet 进行探测,这样可以减轻 Master 节点系统负载 ...

随机推荐

  1. VMware Workstation 16中安装macOS Big Sur,AMD版

    VMware Workstation 16中安装macOS Big Sur,AMD版 目录 VMware Workstation 16中安装macOS Big Sur,AMD版 准备阶段 步骤一:安装 ...

  2. Spring Boot 的2020最后一击:2.4.1、2.3.7、2.2.12 发布

    近日,Spring Boot官方发布了本年度最后一次版本更新,主要针对目前维护的三个版本: 2.4.x:第一个bug修复版本 2.4.1 2.3.x:常规维护版本 2.3.7 2.2.x:常规维护版本 ...

  3. Consul 多数据中心下的服务注册发现与配置共享

    1. Consul简介   Consul是HashiCorp公司推出的开源软件,它提供了一套分布式高可用可横向扩展的解决方案,能为微服务提供服务治理.健康检查.配置共享等能力.   Eurake2.x ...

  4. 怎样用Java 8优雅的开发业务

    怎样用Java 8优雅的开发业务 目录 怎样用Java 8优雅的开发业务 函数式编程 流式编程 基本原理 案例 优雅的空处理 新的并发工具类CompletableFuture 单机批处理多线程执行模型 ...

  5. CTF练习 ①

    最近学校要打比赛,,,把我这个混子也给算上了,,不得不赶紧学习学习. 今天学习的是SQL注入的一道题,参考的文章是  https://blog.csdn.net/qq_42939527/article ...

  6. SpringBoot从入门到精通教程(六)

    之前学了,这么多东西 thyemeaf .MyBatis 还有 配置文件等等,今天我们就来做一个小案例 CRUD,程序员的必备 项目结构 pom.xml <!-- mybatis 相关依赖 -- ...

  7. Python的精髓居然是方括号、花括号和圆括号!

    和其他编程语言相比,什么才是Python独一无二的特色呢?很多程序员会说,缩进.的确,缩进是Python语言的标志性特点,但这只是外在的.形式上的.从语言特性层面讲,Python的特点是什么呢?我尝试 ...

  8. 图解JanusGraph系列 - JanusGraph指标监控报警(Monitoring JanusGraph)

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...

  9. C#中无法找到microsoft.web文件

    原因 上午更新了vs2015后,找不到该文件. 解决方法 1.工具->Nuget包管理器->程序包管理器控制台-> 输入 Install-Package Microsoft.Web. ...

  10. Json转换值类型字段为空字符串时报错问题

    问题 在写Webservices时,碰到的问题. 定义的类 public class User { public string sID { get; set; } public int? iAge { ...