大部分的应用程序我们在部署的时候都会适当的添加监控,对于运行载体容器则更应该如此。kubernetes提供了 liveness probes来检查我们的应用程序。它是由节点上的kubelet定期执行的。
首先说一下Pod的整个生命阶段:
- Pending:表示集群系统正在创建Pod,但是Pod中的container还没有全部被创建,这其中也包含集群为container创建网络,或者下载镜像的时间;
- Running:表示pod已经运行在一个节点商量,并且所有的container都已经被创建。但是并不代表所有的container都运行,它仅仅代表至少有一个container是处于运行的状态或者进程出于启动中或者重启中;
- Succeeded:所有Pod中的container都已经终止成功,并且没有处于重启的container;
- Failed:所有的Pod中的container都已经终止了,但是至少还有一个container没有被正常的终止(其终止时的退出码不为0)
对于liveness probes的结果也有几个固定的可选项值:
- Success:表示通过检测
- Failure:表示没有通过检测
- Unknown:表示检测没有正常进行
Liveness Probe的种类:
- ExecAction:在container中执行指定的命令。当其执行成功时,将其退出码设置为0;
- TCPSocketAction:执行一个TCP检查使用container的IP地址和指定的端口作为socket。如果端口处于打开状态视为成功;
HTTPGetAcction:执行一个HTTP默认请求使用container的IP地址和指定的端口以及请求的路径作为url,用户可以通过host参数设置请求的地址,通过scheme参数设置协议类型(HTTP、HTTPS)如果其响应代码在200~400之间,设为成功。
当前kubelet拥有两个检测器,他们分别对应不通的触发器(根据触发器的结构执行进一步的动作):
- Liveness Probe:表示container是否处于live状态。如果LivenessProbe失败,LivenessProbe将会通知kubelet对应的container不健康了。随后kubelet将kill掉container,并根据RestarPolicy进行进一步的操作。默认情况下LivenessProbe在第一次检测之前初始化值为Success,如果container没有提供LivenessProbe,则也认为是Success;
- ReadinessProbe:表示container是否以及处于可接受service请求的状态了。如果ReadinessProbe失败,endpoints controller将会从service所匹配到的endpoint列表中移除关于这个container的IP地址。因此对于Service匹配到的endpoint的维护其核心是ReadinessProbe。默认Readiness的初始值是Failure,如果一个container没有提供Readiness则被认为是Success。
对于LivenessProbe和ReadinessProbe用法都一样,拥有相同的参数和相同的监测方式。
- initialDelaySeconds:用来表示初始化延迟的时间,也就是告诉监测从多久之后开始运行,单位是秒
- timeoutSeconds: 用来表示监测的超时时间,如果超过这个时长后,则认为监测失败
当前对每一个Container都可以设置不同的restartpolicy,有三种值可以设置:
- Always: 只要container退出就重新启动
- OnFailure: 当container非正常退出后重新启动
- Never: 从不进行重新启动
如果restartpolicy没有设置,那么默认值是Always。如果container需要重启,仅仅是通过kubelet在当前节点进行container级别的重启。
最后针对LivenessProbe如何使用,请看下面的几种方式,如果要使用ReadinessProbe只需要将livenessProbe修改为readinessProbe即可:
apiVersion: v1
kind: Pod
metadata:
name: probe-exec
namespace: coocla
spec:
containers:
- name: nginx
image: nginx
livenessProbe:
exec:
command:
- cat
- /tmp/health
initialDelaySeconds: 5
timeoutSeconds: 1
---
apiVersion: v1
kind: Pod
metadata:
name: probe-http
namespace: coocla
spec:
containers:
- name: nginx
image: nginx
livenessProbe:
httpGet:
path: /
port: 80
host: www.baidu.com
scheme: HTTPS
initialDelaySeconds: 5
timeoutSeconds: 1
---
apiVersion: v1
kind: Pod
metadata:
name: probe-tcp
namespace: coocla
spec:
containers:
- name: nginx
image: nginx
livenessProbe:
initialDelaySeconds: 5
timeoutSeconds: 1
tcpSocket:
port: 80
我们使用上面的construct创建资源:
# kubectl create -f probe.yaml
# kubectl get event
通过event我们可以发现对应的container由于probe监测失败一直处于循环重启中,其事件原因:unhealthy
http://www.tuicool.com/articles/jUBVfqF
相关推荐
3. 容器化监控:结合Docker和Kubernetes,监控容器内的应用性能,确保微服务架构的稳定运行。 4. AIOps(人工智能运维):利用机器学习算法分析监控数据,预测潜在问题,实现智能预警和自愈。 5. 混合云监控:对于...
- **统一监控系统**:构建了一个集中式的监控平台,能够实时监测混合云环境下的各项指标,及时发现问题并进行处理。 - **统一安全方案和服务发现**:为确保数据安全和系统的可靠性,UC实施了一套全面的安全策略,并...
5. **云原生环境监控**:支持Kubernetes、Docker等容器化平台的监控,监控Pod、Service、Container的状态,以及集群资源使用情况。 Hertzbeat的告警功能也非常值得一提。它支持阈值告警通知,这意味着当监控指标...
- **容器集成**:与 Kubernetes 等容器编排系统集成,使存储资源能够更好地与容器化应用程序协同工作。 - **API 标准化**:遵循行业标准的 API,如 CSI(Container Storage Interface),增强不同存储供应商之间的...
随着容器化技术(如Docker、Kubernetes)以及云原生理念的普及,BPF技术也需要不断演进以满足新环境下的需求: - **容器安全监控**:利用BPF监测容器内的网络流量和系统调用,及时发现潜在的安全威胁。 - **资源...
5. Docker+K8S技术:了解Docker容器化技术和Kubernetes(K8S)集群管理,这有助于实现语音服务的快速部署和扩展。 在保险行业中,人工智能工程师-语音方向的角色是推动技术创新和业务发展的关键。他们不仅需要掌握...
- **Docker/Kubernetes**:用于容器化和服务编排,可以帮助管理和部署微服务集群。 - **API Gateway**:作为客户端与后端服务之间的统一入口点,负责路由请求到正确的服务实例。 - **服务注册与发现**:利用Eureka、...
- **数据采集**:需要覆盖视频监控、交通流量、环境监测等多个领域的数据源。 - **数据处理**:支持海量数据的实时处理与分析,确保信息的有效性和时效性。 - **数据分析**:运用先进的数据挖掘算法,对多维度数据...
8. **监控与日志**:通过监控工具如Prometheus、Grafana等实时监测系统性能,结合ELK(Elasticsearch、Logstash、Kibana)日志分析,能够及时发现并解决问题。 综上所述,"ee.rar_8989ee_toy476"这个压缩包很可能...
这个平台很可能是用于医疗监测的软件系统,它允许医生、护士以及其他医疗专业人员远程监控病人的健康状况。源码分析可以帮助我们了解其工作原理和实现技术。 1. **医疗监测系统概述**:医疗监测平台通常包括数据...
9. **容器化与微服务监控**:在Docker或Kubernetes环境下,可能需要使用如Prometheus和Grafana的组合,以及服务网格(如Istio)的监控能力。 10. **数据采集协议**:监控服务可能会使用SNMP、JMX、StatsD、...
3. **微服务架构阶段**:随着云计算技术的成熟和容器化技术的发展,微服务架构成为主流,它进一步细化了服务粒度,提高了系统的灵活性和可维护性。 #### 三、分布式架构的关键特性 - **服务拆分**:将复杂的应用...
同时,云原生意味着vdk-heartbeat可能设计为适应容器化、微服务架构,能够无缝集成到Kubernetes或Docker Swarm等云平台,实现自动化部署和管理。 总结来说,“vdk-heartbeat-0.4.12.tar.gz”是一个针对分布式系统和...
- **容器化技术**:Docker、Kubernetes等。 - **云平台**:云存储、云计算、云服务等基础设施。 **6. 趋势与前沿:** - **人工智能**:AI在时空数据分析中的应用,如自然语言处理(NLP)与计算机视觉(CV)。 - **...
在社交媒体监控、市场研究、客户服务等领域,情感分析具有广泛的应用价值。"empath"库通过预定义的情感词典,快速高效地对文本进行情感分类,使得开发者可以轻松集成情感分析功能到他们的项目中。 当我们下载...
监控工具如Prometheus和Grafana可以实时监测系统性能,确保服务的稳定运行。 总结,这个基于JAVA的全流程供应链系统源码提供了从前端UI到后端业务逻辑的完整实现,是学习和研究供应链管理、JAVA编程、前后端分离...
Docker容器化技术可能被用来打包应用,确保环境的一致性,而Docker Compose或Kubernetes(K8s)可能用于管理和协调这些容器。Kubernetes的YAML配置文件可能定义了服务、部署和卷的详细信息。 日志管理和监控也是...