一   存活探针存在的意义

  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. Python爬虫之BeautifulSoup库

    1. BeautifulSoup 1.1 解析库 1)Python标准库 # 使用方法 BeautifulSoup(markup, "html.parser") # 优势 Pyth ...

  2. CSS3全览_文本+视觉+盒子+背景颜色

    CSS全览_文本+视觉+盒子+背景颜色 目录 CSS全览_文本+视觉+盒子+背景颜色 1. 文本属性 2. 视觉格式化基础 3. 内边距, 边框, 轮廓和外边距 4. 颜色, 背景和渐变 作者: ht ...

  3. Peomise

    什么是promise 简单回答: 一种异步的解决方案 回顾一下什么是异步 ​ 事件 / setTimeout 异步执行的时机 ​ 同步->异步微任务->GUI渲染->异步宏任务 #为 ...

  4. 图像处理论文详解 | Deformable Convolutional Networks | CVPR | 2017

    文章转自同一作者的微信公众号:[机器学习炼丹术] 论文名称:"Deformable Convolutional Networks" 论文链接:https://arxiv.org/a ...

  5. #2020征文-手机#深鸿会深大小组:HarmonyOS手机游戏—数字华容道

    目录: 前言 概述 正文 创建项目 实现初始界面布局 实现数字的随机打乱 实现滑动或点击调换数字 实现游戏成功界面 结语 源码包 前言 12月16号HarmonyOS2.0手机开发者Beta版已经发布 ...

  6. iOS 调用系统拍照遇到的坑

    iOS 11之前用的一套图片选择器框架,之前一直没问题,iOS11之后拍照后回调失败......,打断点方法完全执行,也能回调成功:但是去掉断点又恢复不能会调的问题.困扰了一下午,愣是没有解决.后来把 ...

  7. 2.k8sPod、控制器、service

    一.Pod生命周期 Pod是k8s中最小的管理单元(逻辑上存在,实际不存在),是一组容器的集合 同一个Pod中的容器共享网络和存储(通过pause容器实现),由一个统一的IP向集群内部提供服务 Pod ...

  8. APK 的前世今生:从 Android 源码到 apk 的编译打包流程

    最近想要研究热修复的原理,并自己实现一套简单的热修复框架(音视频的坑刚挖好就又挖另一个坑了2333),已经在看书入门 c++,方便后续查看业内一些知名热修复框架的源码,另外在涉及编译期/运行时修改代码 ...

  9. JavaDailyReports10_08

    ------------恢复内容开始------------ AWT组件 1.1Frame组件与Panel组件 1.1.1显示框架窗口 1 package awt; 2 3 import java.a ...

  10. 如何解决git创建密匙时报错Too many arguments

    如题:git创建密匙时报错Too many arguments. 前几天我遇见了一个问题,git需要重新创建密匙,运行命令ssh-keygen -t rsa -b 4096 -C " you ...