aspnetcore.webapi实践k8s健康探测机制 - kubernetes
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相关推荐
- k8s实战为aspnetcore.webapi微服务注入配置信息
1.浅析k8s配置信息 Secret 以密文的形式存储数据,可以用来保存一些敏感信息,例如:OAuth tokens.私钥.密码.数据库连接.事件总线连接等. ConfigMap 以明文的形式存储数据 ...
- kubernetes实践之运行aspnetcore webapi微服务
1.预备工作 unbuntu 16.04 or above docker for linux kubernetes for linux 集群环境 2.使用vs2017创建一个web api应用程序,并 ...
- 02 | 健康之路 kubernetes(k8s) 实践之路 : 生产可用环境及验证
上一篇< 01 | 健康之路 kubernetes(k8s) 实践之路 : 开篇及概况 >我们介绍了我们的大体情况,也算迈出了第一步.今天我们主要介绍下我们生产可用的集群架设方案.涉及了整 ...
- Cilium 源码解析:Node 之间的健康探测(health probe)机制
更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io 前言 排查问题时研究了一下 Cilium health probe 相关的代码,本文略作整理,仅供参考.代码基于 1.8 ...
- 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南
2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南
- Knative Serving 健康检查机制分析
作者| 阿里云智能事业群技术专家牛秋霖(冬岛) 导读:从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起.通过健康检查这一个点来看看Serverles ...
- linux网络健康度检测,linux运维、架构之路-K8s健康检查Health Check
一.Health Check介绍 强大的自愈能力是k8s容器编排引擎一个重要特性,自愈能力的默认实现方式为自动重启发生故障的容器,另外还可以利用Liveness和Readiness探测机制设置更精细的 ...
- 理解 K8s 资源更新机制,从一个 OpenKruise 用户疑问开始
作者 | 酒祝 阿里云技术专家 背景 OpenKruise 是阿里云开源的大规模应用自动化管理引擎,在功能上对标了 Kubernetes 原生的 Deployment / StatefulSet 等 ...
- Knative 健康检查机制分析
从头开发一个 Serverless 引擎并不是一件容易的事情,今天咱们就从 Knative 的健康检查说起.通过健康检查这一个点来看看 Serverless 模式和传统的模式都有哪些不同以及 Knat ...
最新文章
- shell脚本编程基础
- PowerDesigner脚本使用记录
- POJ-3621 Sightseeing Cows 最优比率环、01分数规划
- ArrayList的add(E e)方法与扩容
- 打包,并自动安装SQL数据库
- Python TCP聊天器
- 2018年工业机器人销量排位_工业机器人年销量连续七年居世界首位 专家建议开辟新市场...
- 第二课--C语言基础(1,2部分--共三部分)
- ClassNotFoundException: com.lowagie.text.pdf.PdfGState
- python和basic语言的区别_Python语言是什么?学Python语言有前途吗?
- 计算机磁盘修复工具,CHKDSK磁盘修复工具使用教程
- C++输出透明背景字体
- 720度全景场景HTML5源码,直接在浏览器中运行
- Bubble Babble Binary Data Encoding的简介以及bubblepy的安装使用方法
- 微信小程序 云开发 欢迎登录注册
- 程序员放弃阿里60w年薪,选到手5k的公务员,网友评论:后悔去吧
- 动物名称日语单词集合
- 关于VMware虚拟机萌新使用教程
- mac book pro 全新安装 windows系统 进行键盘映射,启动标准F1,F2
- 无人车、无人机、超级高铁、智慧城市......这是一份来自未来的出行报告
热门文章
- 引号(反引号、$()符号)
- 学Android的学习规划
- windows下整合tomcat和nginx
- 右击硬盘分区第一项出现Auto的解决办法
- Blazor University (10)组件 — 捕获意外参数
- 细聊.NET6 ConfigurationManager的实现
- 让前端与后端异步起来
- 【分享】154页微软WPF官方手册(含.NETCore和.NET Framwork双版本)
- 从代码角度揭示:华为鸿蒙的“套壳”真相!
- ElasticSearch+NLog实现.net core分布式日志管理