生Kubernetes监控功能详解-Part2

今晚20:30,Kubernetes Master Class在线培训第六期《在Kubernetes中创建高可用应用》即将开播,点击http://live.vhall.com/847710932 即可免费预约注册!

监控的重要性不言而喻,它让我们能充分了解到应用程序的状况。Kubernetes有很多内置工具可供用户们选择,让大家更好地对基础架构层(node)和逻辑层(pod)有充分的了解。

在本系列文章的第一篇中,我们关注了专为用户提供监控和指标的工具Dashboard和cAdvisor。在本文中,我们将继续分享关注工作负载扩缩容和生命周期管理的监控工具:Probe(探针)和Horizontal Pod Autoscaler(HPA)。同样的,一切介绍都将以demo形式进行。

Demo的前期准备

在本系列文章的上一篇中,我们已经演示了如何启动Rancher实例以及Kubernetes集群。在上篇文章中我们提到过,Kubernetes附带了一些内置的监控工具,包括:

  • Kubernetes dashboard:为集群上运行的资源提供一个概览。它还提供了一种非常基本的部署以及与这些资源进行交互的方法。

  • cAdvisor:一种用于监控资源使用情况并分析容器性能的开源代理。

  • Liveness和Readiness Probe:主动监控容器的健康情况。

  • Horizontal Pod Autoscaler:基于通过分析不同指标所收集的信息,根据需要增加pod的数量。

在上篇文章了,我们深度分析了前两个组件Kubernetes Dashboard和cAdvisor,在本文中,我们将继续探讨后两个工具:探针及HPA。

Probe(探针)

健康检查有两种:liveness和readiness。

readiness探针让Kubernetes知道应用程序是否已准备好,来为流量提供服务。只有探针允许通过时,Kubernetes才会允许服务将流量发送到pod。如果探针没有通过,Kubernetes将停止向该Pod发送流量,直到再次通过为止。

当你的应用程序需要花费相当长的时间来启动时,readiness探针非常有用。即使进程已经启动,在探针成功通过之前,该服务也无法工作。默认情况下,Kubernetes将在容器内的进程启动后立即开始发送流量,但是在有readiness探针的情况下,Kubernetes将在应用程序完全启动后再允许服务路由流量。

liveness探针让Kubernetes知道应用程序是否处于运行状态。如果处于运行状态,则不采取任何行动。如果该应用程序未处于运行状态,Kubernetes将删除该pod并启动一个新的pod替换之前的pod。当你的应用程序停止提供请求时,liveness探针非常有用。由于进程仍在运行,因此默认情况下,Kubernetes将继续向pod发送请求。凭借liveness探针,Kubernetes将检测到应用程序不再提供请求并将重新启动pod。

对于liveness和readiness检查,可以使用以下类型的探针:

  • http:自定义探针中最常见的一种。Kubernetes ping一条路径,如果它在200-300的范围内获得http响应,则将该pod标记为健康。

  • command:使用此探针时,Kubernetes将在其中一个pod容器内运行命令。如果该命令返回退出代码0,则容器将标记为健康。

  • tcp:Kubernetes将尝试在指定端口上建立TCP连接。如果能够建立连接,则容器标记为健康。

配置探针时,可提供以下参数:

  • initialDelaySeconds:首次启动容器时,发送readiness/liveness探针之前等待的时间。对于liveness检查,请确保仅在应用程序准备就绪后启动探针,否则你的应用程序将会继续重新启动。

  • periodSeconds:执行探针的频率(默认值为10)。

  • timeoutSeconds:探针超时的时间,以秒为单位(默认值为1)。

  • successThreshold:探针成功的最小连续成功检查次数。

  • failureThreshold:放弃之前探针失败的次数。放弃liveness探针会导致Kubernetes重新启动pod。对于liveness探针,pod将被标记为未准备好。

Readiness探针的演示

在本节中,我们将使用命令检查来配置readiness探针。我们将使用默认的nginx容器部署两个副本。在容器中找到名为/tmp/healthy的文件之前,不会有任何流量发送到pod。

首先,输入以下命令创建一个readiness.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: readiness-demo
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
 
Kubernetes中,可以使用YAML格式来编写资源对象的配置文件。YAML是一种简洁的非标记性语言,以数据为中心,使用空白、缩进和换行来组织数据。以下是一些关于YAML文件编写的详细信息: 1. 大小写敏感:YAML是大小写敏感的,因此在编写YAML文件时需要注意大小写的正确使用。 2. 使用缩进表示层级关系:YAML使用缩进来表示数据的层级关系,一般使用空格键进行缩进。Tab键是不被允许的。 3. 缩进的空格数目不重要:相同层级的元素只需要左侧对齐即可,一般情况下使用两个空格进行缩进。 4. 使用#表示注释:在YAML文件中,可以使用#符号来添加注释,注释内容从#字符开始一直到行尾都会被解析器忽略。 5. 特殊字符的使用:在YAML中,一些特殊字符如冒号、逗号、短横杠等需要进行特殊处理,通常在这些字符后面会缩进一个空格。 6. 对象的表示:对象使用键值对的方式表示,使用冒号结构进行分隔,例如`animal: pets`。 7. 另一种对象的写法:YAML还支持将所有键值对写在一行内的行内对象表示法,例如`hash: {name: Steve, foo: bar}`。 8. 数组的表示:数组使用连词线开头的行来表示,每个元素占据一行,例如: ``` - Cat - Dog - Goldfish ``` 9. 子成员是数组:如果数据结构的子成员是一个数组,可以在该项下面缩进一个空格,例如: ``` - - Cat - Dog - Goldfish ``` 10. 文件示例:下面是一个Kubernetes的YAML文件的示例,用于创建一个名为"kubernetes-dashboard"的命名空间: ``` apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard ``` 以上是关于Kubernetes中YAML文件编写的一些详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kubernetes-----YAML文件编写详解](https://blog.csdn.net/qq_42761527/article/details/105897465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [k8s集成kubernetes-dashboard可视化界面](https://blog.csdn.net/crazy1013/article/details/126575777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值