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 ...
最新文章
- Longest Substring Without Repeating Characters(最长不重复子序列求解)
- Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略
- matlab编译器和程序发布
- SAP 电商云 Spartacus UI product 明细页面的路由配置
- svn怎么看未提交修改了哪些文件_Git与SVN的区别
- 使用Java迭代器修改数据时要小心
- xps13 linux 硬盘分区,在xps13上安装ubuntu16.04教程
- AI应用开发实战系列之四 - 定制化视觉服务的使用
- kk服务器信息及端口,kk服务器设置
- 华为S5300系列交换机V100R005SPH020升级补丁
- kotlin密封类_Kotlin密封级
- 五种常见的linux系统有哪些,常见的Linux操作系统有哪些
- python飞机大战类_python微信飞机大战
- java计算机毕业设计基于安卓Android的禁毒宣传APP(源码+系统+mysql数据库+Lw文档)
- 数据库原理第三章测验(标黑的为答案)
- 【项目实战二】基于模板匹配和形态学操作的信用卡卡号识别(OpenCV+Python)
- 前端全栈工程师进阶学习笔记
- HTMLCSS 【三】-- TABLES, DIVS, AND SPANS
- UOS系统修改分辨率
- 工程结算款支付比例_工程进度款的支付比例及付款实例分析
热门文章
- productFlavors设置signingConfig不管用的问题
- WCF分布式开发常见错误(25):The certificate 'CN=WCFHTTPS' must have a private key
- ARM再出手,软银攀登新高山
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总
- linux 安全审计
- .NET6之MiniAPI(二十二):HttpClient
- 分库分表下极致的优化
- .NET Core with 微服务 - Consul 配置中心
- WPF实现环(圆)形进度条
- Newbe.Claptrap 0.10.2 发布,Blazor 演示