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. Longest Substring Without Repeating Characters(最长不重复子序列求解)
  2. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略
  3. matlab编译器和程序发布
  4. SAP 电商云 Spartacus UI product 明细页面的路由配置
  5. svn怎么看未提交修改了哪些文件_Git与SVN的区别
  6. 使用Java迭代器修改数据时要小心
  7. xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程
  8. AI应用开发实战系列之四 - 定制化视觉服务的使用
  9. kk服务器信息及端口,kk服务器设置
  10. 华为S5300系列交换机V100R005SPH020升级补丁
  11. kotlin密封类_Kotlin密封级
  12. 五种常见的linux系统有哪些,常见的Linux操作系统有哪些
  13. python飞机大战类_python微信飞机大战
  14. java计算机毕业设计基于安卓Android的禁毒宣传APP(源码+系统+mysql数据库+Lw文档)
  15. 数据库原理第三章测验(标黑的为答案)
  16. 【项目实战二】基于模板匹配和形态学操作的信用卡卡号识别(OpenCV+Python)
  17. 前端全栈工程师进阶学习笔记
  18. HTMLCSS 【三】-- TABLES, DIVS, AND SPANS
  19. UOS系统修改分辨率
  20. 工程结算款支付比例_工程进度款的支付比例及付款实例分析

热门文章

  1. productFlavors设置signingConfig不管用的问题
  2. WCF分布式开发常见错误(25):The certificate 'CN=WCFHTTPS' must have a private key
  3. ARM再出手,软银攀登新高山
  4. RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
  5. linux 安全审计
  6. .NET6之MiniAPI(二十二):HttpClient
  7. 分库分表下极致的优化
  8. .NET Core with 微服务 - Consul 配置中心
  9. WPF实现环(圆)形进度条
  10. Newbe.Claptrap 0.10.2 发布,Blazor 演示