`
m635674608
  • 浏览: 5027945 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Kubernetes技术研究容器监控监测

 
阅读更多

大部分的应用程序我们在部署的时候都会适当的添加监控,对于运行载体容器则更应该如此。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
分享到:
评论

相关推荐

    基于大数据平台的自动化运维及监控技术.zip

    3. 容器化监控:结合Docker和Kubernetes,监控容器内的应用性能,确保微服务架构的稳定运行。 4. AIOps(人工智能运维):利用机器学习算法分析监控数据,预测潜在问题,实现智能预警和自愈。 5. 混合云监控:对于...

    UC基于Kubernetes混合云的选型和架构.pdf

    - **统一监控系统**:构建了一个集中式的监控平台,能够实时监测混合云环境下的各项指标,及时发现问题并进行处理。 - **统一安全方案和服务发现**:为确保数据安全和系统的可靠性,UC实施了一套全面的安全策略,并...

    hertzbeat-master.zip

    5. **云原生环境监控**:支持Kubernetes、Docker等容器化平台的监控,监控Pod、Service、Container的状态,以及集群资源使用情况。 Hertzbeat的告警功能也非常值得一提。它支持阈值告警通知,这意味着当监控指标...

    可扩展虚拟化存储的云原生实现.pptx

    - **容器集成**:与 Kubernetes 等容器编排系统集成,使存储资源能够更好地与容器化应用程序协同工作。 - **API 标准化**:遵循行业标准的 API,如 CSI(Container Storage Interface),增强不同存储供应商之间的...

    Linux Observability with BPF Advanced Programming

    随着容器化技术(如Docker、Kubernetes)以及云原生理念的普及,BPF技术也需要不断演进以满足新环境下的需求: - **容器安全监控**:利用BPF监测容器内的网络流量和系统调用,及时发现潜在的安全威胁。 - **资源...

    北京保险行业人工智能工程师-语音方向岗位介绍JD模板.docx

    5. Docker+K8S技术:了解Docker容器化技术和Kubernetes(K8S)集群管理,这有助于实现语音服务的快速部署和扩展。 在保险行业中,人工智能工程师-语音方向的角色是推动技术创新和业务发展的关键。他们不仅需要掌握...

    传统架构迁移到微服务架构方案

    - **Docker/Kubernetes**:用于容器化和服务编排,可以帮助管理和部署微服务集群。 - **API Gateway**:作为客户端与后端服务之间的统一入口点,负责路由请求到正确的服务实例。 - **服务注册与发现**:利用Eureka、...

    平安城市智能感知多维大数据.docx

    - **数据采集**:需要覆盖视频监控、交通流量、环境监测等多个领域的数据源。 - **数据处理**:支持海量数据的实时处理与分析,确保信息的有效性和时效性。 - **数据分析**:运用先进的数据挖掘算法,对多维度数据...

    ee.rar_8989ee_toy476

    8. **监控与日志**:通过监控工具如Prometheus、Grafana等实时监测系统性能,结合ELK(Elasticsearch、Logstash、Kibana)日志分析,能够及时发现并解决问题。 综上所述,"ee.rar_8989ee_toy476"这个压缩包很可能...

    Medical-Monitoring-Platform-源码.rar

    这个平台很可能是用于医疗监测的软件系统,它允许医生、护士以及其他医疗专业人员远程监控病人的健康状况。源码分析可以帮助我们了解其工作原理和实现技术。 1. **医疗监测系统概述**:医疗监测平台通常包括数据...

    MonitoringService

    9. **容器化与微服务监控**:在Docker或Kubernetes环境下,可能需要使用如Prometheus和Grafana的组合,以及服务网格(如Istio)的监控能力。 10. **数据采集协议**:监控服务可能会使用SNMP、JMX、StatsD、...

    分布式架构原理与实践(崔皓)

    3. **微服务架构阶段**:随着云计算技术的成熟和容器化技术的发展,微服务架构成为主流,它进一步细化了服务粒度,提高了系统的灵活性和可维护性。 #### 三、分布式架构的关键特性 - **服务拆分**:将复杂的应用...

    PyPI 官网下载 | vdk-heartbeat-0.4.12.tar.gz

    同时,云原生意味着vdk-heartbeat可能设计为适应容器化、微服务架构,能够无缝集成到Kubernetes或Docker Swarm等云平台,实现自动化部署和管理。 总结来说,“vdk-heartbeat-0.4.12.tar.gz”是一个针对分布式系统和...

    地理大数据的时空分析.pptx

    - **容器化技术**:Docker、Kubernetes等。 - **云平台**:云存储、云计算、云服务等基础设施。 **6. 趋势与前沿:** - **人工智能**:AI在时空数据分析中的应用,如自然语言处理(NLP)与计算机视觉(CV)。 - **...

    PyPI 官网下载 | empath-0.86.tar.gz

    在社交媒体监控、市场研究、客户服务等领域,情感分析具有广泛的应用价值。"empath"库通过预定义的情感词典,快速高效地对文本进行情感分类,使得开发者可以轻松集成情感分析功能到他们的项目中。 当我们下载...

    基于JAVA的全流程供应链系统源码(前后端分离).zip

    监控工具如Prometheus和Grafana可以实时监测系统性能,确保服务的稳定运行。 总结,这个基于JAVA的全流程供应链系统源码提供了从前端UI到后端业务逻辑的完整实现,是学习和研究供应链管理、JAVA编程、前后端分离...

    DevopsCalculator

    Docker容器化技术可能被用来打包应用,确保环境的一致性,而Docker Compose或Kubernetes(K8s)可能用于管理和协调这些容器。Kubernetes的YAML配置文件可能定义了服务、部署和卷的详细信息。 日志管理和监控也是...

Global site tag (gtag.js) - Google Analytics