K8S容器编排之POD健康监控
最近需要写一个脚本,一次部署所有POD
,测试中发现,有部分POD
启动后由于连接依赖服务失败,而导致自身不能正常工作,使用kubelet get po
查到的状态也是runing
,使用netstat -anp |grep LISTEN
,查询到端口并没有监听。所以想,在app
启动异常、并没能启动自身的端口的时候,自动重启一次POD
。而k8s
已经实现了这个功能,经测试,已经完全解决了我们的问题。以下参考网上的文档,做了一个总结:
首先将一下关于K8S
对于POD
监控的两个探针
##Liveness Probes
Kubernetes健康检查被分成 liveness和readiness probes。liveness probes是用来检测你的应用程序是否正在运行。通常情况下,你的程序一崩溃,Kubernetes就会看到这个程序已经终止,然后重启这个程序。但是liveness probes的目的就是捕捉到当程序还没有终止,还没有崩溃或者还没陷入死锁的情况。
例如:定义 TCP liveness probe
livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 15periodSeconds: 20
这里的意思是在pod创建15s后每隔20s检测8080端口是否正在使用
##Readiness Probes
Readiness Probes跟liveness probes十分相似,只有失效检测的结果是不一样的。Readiness Probes是用来检查你的应用程序是否可以为通信服务。这跟liveness有些微妙的不同。比如,你的应用程序取决于数据库与memcached。如果上面两个都在良好状态,为你的应用提供通信,然后你就可以说这两个都是你的应用的“readiness”。
如果你的应用的readness probe运行失败,那么pod就会从组成service的端点被删除。这样的话,没有准备好的pods就不会有流量通信通过Kubernetes服务发现机制来发送给他们。
例如:定义 TCP readiness probe
readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10
这里的意思同上,唯一的不同的意思是表明当前pod可以接受由服务发现导过来的流量了
##Liveness Probes 和 Readiness Probes 可以一起使用:
apiVersion: v1
kind: Pod
metadata:name: goproxylabels:app: goproxy
spec:containers:- name: goproxyimage: k8s.gcr.io/goproxy:0.1ports:- containerPort: 8080readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 15periodSeconds: 20
Probe
中有很多精确和详细的配置,通过它们您能准确的控制liveness
和 readiness
检查:
initialDelaySeconds
:容器启动后第一次执行探测是需要等待多少秒。
periodSeconds
:执行探测的频率。默认是10秒,最小1秒。
timeoutSeconds
:探测超时时间。默认1秒,最小1秒。
successThreshold
:探测失败后,最少连续探测成功多少次才被认定为成功。默认是 1。对于 liveness
必须是 1。最小值是 1。
failureThreshold
:探测成功后,最少连续探测失败多少次才被认定为失败。默认是 3。最小值是 1。
###总结
所以,大家在使用k8s
的时候部署deployment
或者ds
的时候一定要做pod
的监控,因为pod
常常是不可预计的,所以我们想要它们按照我们想要的方式运行就需要我们手动的指定pod
成功启动的标准,更多资料可以参考:
https://k8smeetup.github.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
http://dockone.io/article/1386
K8S容器编排之POD健康监控相关推荐
- k8s创建pod加入容器_K8S容器编排之POD健康检测(2)
ReadinessProbe探针配置: ReadinessProbe探针的使用场景livenessProbe稍有不同,有的时候应用程序可能暂时无法接受请求,比如Pod已经Running了,但是容器内应 ...
- K8s容器编排、网络、监控+Istio+Serverless最佳云原生核心技术实践
身为让容器应用实现大规模工业生产的一大功臣,过去几年,Kubernetes 势头迅猛,BAT.京东.美团.字节都走上了全域容器化部署以及云原生架构的康庄大道. 而作为支撑阿里万亿级应用背后的核心,阿 ...
- Kubernetes(K8s) —— 容器编排管理技术
K8s 容器编排管理技术 第一章 是什么 1. 背景 2. 基础概念 Pod 控制器 Service 3. 架构 第二章 环境搭建与安装 1. 虚拟机集群搭建 命令批执行技巧 2. K8s相关软件安装 ...
- 容器编排技术 -- Pod 安全策略
容器编排技术 -- Pod 安全策略 1 什么是 Pod 安全策略? 1.1 RunAsUser 1.2 SELinux 1.3 SupplementalGroups 1.4 FSGroup 1.5 ...
- k8s 容器编排(高级版)
* k8s :容器编排控制平面:API Server :6443用户认证:双向认证SchedulerControllerNode: kube-proxy (node启动pod生成一个iptables规 ...
- Kubernetes家族容器小管家Pod在线答疑?
Kubernetes家族容器小管家Pod在线答疑❓ 不知道学习k8s的小伙伴们有没有跟我一样的疑问? k8s为什么不是直接运行容器,而是让Pod介入? Pod又是什么?为什么在应用容器化如此普遍的情况 ...
- Kubernetes(k8s)基础之二:容器编排介绍及概念
目录 1.k8s对象 2. 容器编排的概念 2.1.K8S是如何对容器编排? 2.2.Pod是怎么创建出来的? 2.3.Pod资源组成的应用如何提供外部访问的? 2.4.Service又是怎么关联到P ...
- 容器编排技术 -- 从零开始k8s
容器编排技术 -- 从零开始k8s 这部文档是面对想要学习Kubernetes集群的读者.如果你对入门指南已经可以满足你对这个列表上所列的需求,我们建议你继续阅读这个,因为他是根据前人积累经验所写的新 ...
- ASP.NET Core 借助 K8S 玩转容器编排
Production-Grade Container Orchestration - Automated container deployment, scaling, and management. ...
最新文章
- 机器学习中常用到的知识点总结
- 刷新4项文档智能任务纪录,百度TextMind打造ERNIE-Layout登顶文档智能权威榜单
- JavaScript 工作原理之十一-渲染引擎及性能优化小技巧
- Linux学习记录--数据流重定向
- hive 小技巧总结
- 通俗易懂讲解JavaScript深拷贝和浅拷贝
- 中小企业CRM评测-八百客
- springmvc默认方法名为映射名_SpringIoC和SpringMVC的快速入门
- 免费发布一个简单而有趣的计算工具
- make clean与make distclean的区别-转
- js textarea 显示html代码,将Textarea文本设置为正确格式化的HTML代码与jQuery
- Google Instant Apps VS 微信小程序
- Android API 中文 (54) —— Filterable
- Windows下Scintilla的编译,使用
- 淘宝/天猫获取sku详情API接口
- 基于微信小程序的食堂窗口自助点餐系统
- str.substring(0,str.length() -1)用法
- 机器视觉学习系列四:身份证识别
- 【Vue】菜头学前端 - vue3学习笔记
- 20190401每周精品之淘宝