k8s健康检查详解

最近在segmentfault上看到才云的一个人写的k8s健康检查readiness 和liveness的差别的分析,实际不忍直视。本来打算评论的。后来想想还是花点实际认真来说一下这个。当初自己对这个也有点糊涂。记录下来算是为后来的兄弟参考

readiness和liveness的核心区别

实际上readiness 和liveness 就如同字面意思。readiness 就是意思是否可以访问,liveness就是是否存活。如果一个readiness 为fail 的后果是把这个pod 的所有service 的endpoint里面的改pod ip 删掉,意思就这个pod对应的所有service都不会把请求转到这pod来了。但是如果liveness 检查结果是fail就会直接kill container,当然如果你的restart policy 是always 会重启pod。

什么样才叫readiness/liveness检测失败呢

实际上k8s提供了3中检测手段,

  • http get 返回200-400算成功,别的算失败
  • tcp socket 你指定的tcp端口打开,比如能telnet 上
  • cmd exec 在容器中执行一个命令 推出返回0 算成功。
    每中方式都可以定义在readiness 或者liveness 中。比如定义readiness 中http get 就是意思说如果我定义的这个path的http get 请求返回200-400以外的http code 就把我从所有有我的服务里面删了吧,如果定义在liveness里面就是把我kill 了。

什么时候用readiness 什么时候用readiness

比如如果一个http 服务你想一旦它访问有问题我就想重启容器。那你就定义个liveness 检测手段是http get。反之如果有问题我不想让它重启,只是想把它除名不要让请求到它这里来。就配置readiness。

注意,liveness不会重启pod,pod是否会重启由你的restart policy 控制。

关于health check 的k8s 官网链接
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Pod Pod是k8s的最基本的操作单元,包含一个或多个紧密相关的容器,类似于豌豆荚的概念。一个Pod可以被一...
    jony456123阅读 7,451评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 版权声明:原创作品,谢绝转载!否则将追究法律责任。 前言 最近中国和印度的局势也是愈演愈烈。作为一个爱国青年我有些...
    李伟铭MIng阅读 2,079评论 0 5
  • 内容已经移动到这里[https://blog.csdn.net/WeiPeng2K/article/details...
    weipeng2k阅读 1,181评论 0 3
  • kubernetes 简介 一个迅速过一遍kubernetes 非常不错的资源:基于Kubernetes构建Doc...
    bradyjoestar阅读 15,299评论 2 7