1、浅析k8s两种健康检查机制


  • Liveness

k8s通过liveness来探测微服务的存活性,判断什么时候该重启容器实现自愈。比如访问 Web 服务器时显示 500 内部错误,可能是系统超载,也可能是资源死锁,此时 httpd 进程并没有异常退出,在这种情况下重启容器可能是最直接最有效的解决方案。

  • Readiness

k8s通过readiness来探测微服务的什么时候准备就绪(例如初始化时,连接数据库,加载缓存数据等等,可能需要一段时间),然后将容器加入到server的负载均衡池中,对外提供服务。

1.1、k8s默认的健康检查机制

每个容器启动时都会执行一个进程,此进程由 Dockerfile 的 CMD 或 ENTRYPOINT 指定。如果进程退出时返回码非零,则认为容器发生故障,Kubernetes 就会根据 restartPolicy 重启容器。如果不特意配置,Kubernetes 将对两种探测采取相同的默认行为。

2、通过微服务自定义两种机制


存活10分钟:如果当前时间超过服务启动时间10分钟,则探测失败,否则探测成功。Kubernetes 如果连续执行 3 次 Liveness 探测均失败,就会杀掉并重启容器。

准备就绪30秒,30秒后,如果连续 3 次 Readiness 探测均失败后,容器将被重置为不可用,不接收 Service 转发的请求。

从上面可以看到,我们可以根据自身的需求来实现这两种机制,然后,提供给k8s进行探测。

3、编写k8s资源配置文件(yml)


k8s默认是根据命令进行探测的,由于我们需要与微服务结合,所以需要在yml文件中指定为http方式,k8s对于http方式探测成功的判断条件是请求的返回代码在 200-400 之间。

health-checks-deployment.yml 如下:

从上面可以看到,一共部署了3个pod副本,而每个pod副本里面部署一个容器,即为同一个微服务部署了3个实例进行集群。

4、在k8s集群的master机器上,创建部署对象


从上面可以看到,刚开始创建时,READY 状态为不可用,等待一段时间

现在全部可用了

5、通过dashboard查看集群概况


6、剖析k8s集群自愈(self-healing)过程


从上面可以看到,大约1分钟(dashboard统计信息有一定的延迟)左右,第一次进行 Readiness 探测并成功返回,此时准备就绪,可以对外提供服务了。在10分钟内,探测Liveness也成功返回。

继续等待一段时间,查询其中一个pod详细信息:

从上面可以看到,超过10分钟存活期后,liveness探测失败,容器被 killed and recreated。探测Readiness未成功返回时,整个容器处于不健康的状态,并不会被负载均衡请求。

此时通过dashboard查看集群概况:

继续等待一段时间:

现在,整个集群已经自愈完成了!!!

7、总结


Liveness 探测和 Readiness 探测是独立执行的,二者之间没有依赖,可以单独使用,也可以同时使用。用 Liveness 探测判断容器是否需要重启以实现自愈;用 Readiness 探测判断容器是否已经准备好对外提供服务。

源码参考:https://github.com/justmine66/k8s.ecoysystem.apps

相关文章:

  • kubernetes实践之运行aspnetcore webapi微服务

  • 请注意,容器技术圈已迈入后Kubernetes时代!

  • 利用VSTS跟Kubernetes整合进行CI/CD

  • Asp.net core应用在 Kubernetes上内存使用率过高问题分析

  • Kubernetes应用部署模型解析(原理篇)

  • Kubernetes应用部署模型解析(部署篇)

原文:https://www.cnblogs.com/justmine/p/8620311.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com 

aspnetcore.webapi实践k8s健康探测机制 - kubernetes相关推荐

  1. k8s实战为aspnetcore.webapi微服务注入配置信息

    1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...

  2. kubernetes实践之运行aspnetcore webapi微服务

    1.预备工作 unbuntu 16.04 or above docker for linux kubernetes for linux 集群环境 2.使用vs2017创建一个web api应用程序,并 ...

  3. 02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证

    上一篇< 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 >我们介绍了我们的大体情况,也算迈出了第一步.今天我们主要介绍下我们生产可用的集群架设方案.涉及了整 ...

  4. Cilium 源码解析:Node 之间的健康探测(health probe)机制

    更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 排查问题时研究了一下 Cilium health probe 相关的代码,本文略作整理,仅供参考.代码基于 1.8 ...

  5. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

    2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南

  6. Knative Serving 健康检查机制分析

    作者|  阿里云智能事业群技术专家牛秋霖(冬岛) 导读:从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起.通过健康检查这一个点来看看Serverles ...

  7. linux网络健康度检测,linux运维、架构之路-K8s健康检查Health Check

    一.Health Check介绍 强大的自愈能力是k8s容器编排引擎一个重要特性,自愈能力的默认实现方式为自动重启发生故障的容器,另外还可以利用Liveness和Readiness探测机制设置更精细的 ...

  8. 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始

    作者 | 酒祝  阿里云技术专家 背景 OpenKruise 是阿里云开源的大规模应用自动化管理引擎,在功能上对标了 Kubernetes 原生的 Deployment / StatefulSet 等 ...

  9. Knative 健康检查机制分析

    从头开发一个 Serverless 引擎并不是一件容易的事情,今天咱们就从 Knative 的健康检查说起.通过健康检查这一个点来看看 Serverless 模式和传统的模式都有哪些不同以及 Knat ...

最新文章

  1. shell脚本编程基础
  2. PowerDesigner脚本使用记录
  3. POJ-3621 Sightseeing Cows 最优比率环、01分数规划
  4. ArrayList的add(E e)方法与扩容
  5. 打包,并自动安装SQL数据库
  6. Python TCP聊天器
  7. 2018年工业机器人销量排位_工业机器人年销量连续七年居世界首位 专家建议开辟新市场...
  8. 第二课--C语言基础(1,2部分--共三部分)
  9. ClassNotFoundException: com.lowagie.text.pdf.PdfGState
  10. python和basic语言的区别_Python语言是什么?学Python语言有前途吗?
  11. 计算机磁盘修复工具,CHKDSK磁盘修复工具使用教程
  12. C++输出透明背景字体
  13. 720度全景场景HTML5源码,直接在浏览器中运行
  14. Bubble Babble Binary Data Encoding的简介以及bubblepy的安装使用方法
  15. 微信小程序 云开发 欢迎登录注册
  16. 程序员放弃阿里60w年薪,选到手5k的公务员,网友评论:后悔去吧
  17. 动物名称日语单词集合
  18. 关于VMware虚拟机萌新使用教程
  19. mac book pro 全新安装 windows系统 进行键盘映射,启动标准F1,F2
  20. 无人车、无人机、超级高铁、智慧城市......这是一份来自未来的出行报告

热门文章

  1. 引号(反引号、$()符号)
  2. 学Android的学习规划
  3. windows下整合tomcat和nginx
  4. 右击硬盘分区第一项出现Auto的解决办法
  5. Blazor University (10)组件 — 捕获意外参数
  6. 细聊.NET6 ConfigurationManager的实现
  7. 让前端与后端异步起来
  8. 【分享】154页微软WPF官方手册(含.NETCore和.NET Framwork双版本)
  9. 从代码角度揭示:华为鸿蒙的“套壳”真相!
  10. ElasticSearch+NLog实现.net core分布式日志管理