2019年11月,在圣地亚哥KubeCon,我们发布了kuberhealth 2.0.0——将kuberhealthy作为合成监测的Kubernetes operator。这个新功能为开发人员提供了创建自己的kuberhealth检查容器的方法,以合成监控其应用程序和集群。社区很快采用了这个新特性,感谢在自己的集群中实现和测试kuberhealth 2.0.0的每个人。

1部署Kuberhealthy

要安装Kuberhealthy,请确保安装了Helm 3。如果没有,可以使用此部署文件夹中生成的flat spec文件。如果不使用Prometheus Operator,可以用kuberhealthy- Prometheus.yaml。如果您根本没有使用Prometheus,那么您仍然可以使用kuberhealthy和JSON状态页以及/或InfluxDB集成,使用此规范。

2使用Helm 3安装

  1. 在所需的Kubernetes集群/上下文中创建命名空间“kuberhealthy”:

kubectl create namespace kuberhealthy

2.将当前命名空间设置为“kuberhealthy”:

kubectl config set-context --current --namespace=kuberhealthy

3.将kuberhealthy repo添加到Helm:

helm repo add kuberhealthy https://comcast.github.io/kuberhealthy/helm-repos

  1. 根据Prometheus实现,为集群选择适当的命令安装kuberhealthy:

如果使用 Prometheus Operator:

helm install kuberhealthy kuberhealthy/kuberhealthy --set prometheus.enabled=true,prometheus.enableAlerting=true,prometheus.enableScraping=true,prometheus.serviceMonitor=true

如果使用Prometheus, 但不是Prometheus Operator:

helm install kuberhealthy kuberhealthy/kuberhealthy --set prometheus.enabled=true,prometheus.enableAlerting=true,prometheus.enableScraping=true

有关配置scrape注释的更多细节,请参阅下面Prometheus Integration details一节。

最后,如果你不使用Prometheus:

helm install kuberhealthy kuberhealthy/kuberhealthy

运行Helm命令将自动安装Kuberhealthy(v2.2.0)的最新版本,并进行一些基本检查。如果运行kubectl get pods,应该会看到两个kuberhealth pods。这些是创建、协调和跟踪测试pod的pod。这两个Kuberhealthy pods还提供JSON状态页和a/metrics端点。您看到创建的其他每个pod都是一个checker pod,设计用于执行和关闭。

3配置其他检查

接下来,可以运行kubectl get khchecks。可以看到默认安装了三个Kuberhealthy检查:

•daemonset: 部署并关闭一个daemonset,以确保群集中的所有节点都能正常工作。

•deployment:创建部署,然后触发滚动更新。测试部署是否可以通过服务访问,然后删除所有内容。过程中的任何问题都会导致失败。

•dn -status-internal:验证内部集群DNS是否正常运行。

要查看其他可用的外部检查,请查看外部检查注册表,找到可以应用于集群启用各种检查的其他yaml文件。

kuberhealthy 检查pod应该在kuberhealthy运行后不久(1-2分钟)开始运行。另外,check-reaper cronjob每隔几分钟运行一次,以确保一次不超过5个checker pods被丢弃。

要获取这些检查的状态页视图,需要通过编辑kuberhealthy服务并设置Type:LoadBalancer来对外公开kuberhealthy服务,或者使用kubectl port-forward 服务/kuberhealthy 8080:80。查看时,服务端点将显示一个JSON状态页,如下所示:

{
"OK": true,
"Errors": [],
"CheckDetails": {"kuberhealthy/daemonset": {"OK": true,"Errors": [],"RunDuration": "22.512278967s","Namespace": "kuberhealthy","LastRun": "2020-04-06T23:20:31.7176964Z","AuthoritativePod": "kuberhealthy-67bf8c4686-mbl2j","uuid": "9abd3ec0-b82f-44f0-b8a7-fa6709f759cd"},"kuberhealthy/deployment": {"OK": true,"Errors": [],"RunDuration": "29.142295647s","Namespace": "kuberhealthy","LastRun": "2020-04-06T23:20:31.7176964Z","AuthoritativePod": "kuberhealthy-67bf8c4686-mbl2j","uuid": "5f0d2765-60c9-47e8-b2c9-8bc6e61727b2"},"kuberhealthy/dns-status-internal": {"OK": true,"Errors": [],"RunDuration": "2.43940936s","Namespace": "kuberhealthy","LastRun": "2020-04-06T23:20:44.6294547Z","AuthoritativePod": "kuberhealthy-67bf8c4686-mbl2j","uuid": "c85f95cb-87e2-4ff5-b513-e02b3d25973a"}
},
"CurrentMaster": "kuberhealthy-7cf79bdc86-m78qr"

}

JSON页面显示集群中运行的所有kuberhealth检查。要在不同命名空间运行Kuberhealthy检查,可以通过在状态页URL中添加GET变量名称空间参数:?namespace=kuberhealth,kube-system来过滤它们。

这个JSON页面显示在你的集群中运行的所有kuberhealthy检查。如果你在不同的名称空间中运行Kuberhealthy检查,你可以通过在状态页面URL中添加GET变量namespace参数:?namespace=kuberhealthy,kube-system来过滤它们。

4Writing Your Own Checks

Kuberhealthy被设计为扩展自定义检查容器,任何人都可以编写容器来检查任何内容。这些检查可以用任何语言编写,只要它们打包在容器中。这使得Kuberhealthy成为创建自己的合成监测的优秀平台!

创建自己的检查是验证client library、模拟真实的用户工作流程,以及在服务或系统正常运行时创建高度信任的好方法。

5Prometheus集成细节

当启用Prometheus时,Kuberhealthy服务将添加以下注释:

prometheus.io/path: /metrics
prometheus.io/port: "80"
prometheus.io/scrape: "true"

在prometheus配置中,添加以下示例scrape_config,该配置通过添加的prometheus注释来获取kuberhealthy服务:

- job_name:'kuberhealthy'scrape_interval:1m honor_labels:true metrics_path:/metrics kubernetes_sd_configs:
  • role:service namespaces: names: - kuberhealthy relabel_configs:

    • source_labels:[__meta_kubernetes_service_annotation_prometheus_io_scrape] action:keep regex:true}}}

还可以使用这个示例作业指定要刮除的目标端点: {{{- job_name:kuberhealthy scrape_interval:1m honor_labels:true  metrics_path:/metrics  static_configs:  - targets:    - kuberhealthy.kuberhealthy.svc.cluster.local:80

应用了适当的prometheus配置,能够看到以下kuberhealthy指标:

•kuberhealthy_check

•kuberhealthy_check_duration_seconds

•kuberhealthy_cluster_states

•kuberhealthy_running

6创建关键绩效指标

使用这些Kuberhealthy度量,团队能够收集基于以下定义、计算和PromQL查询的kpi。

可用性

我们将可用性定义为K8s集群控制平面按预期启动和运行。这是通过在一段时间内创建部署、执行滚动更新和删除部署的能力来衡量的。通过测量Kuberhealthy的部署检查成败来计算这一点。

•Availability = Uptime / (Uptime * Downtime)

•Uptime = Number of Deployment Check Passes * Check Run Interval

•Downtime = Number of Deployment Check Fails * Check Run Interval

•Check Run Interval = how often the check runs (runInterval set in your KuberhealthyCheck Spec)

•PromQL Query (Availability % over the past 30 days):

1 - (sum(count_over_time(kuberhealthy_check{check="kuberhealthy/deployment", status="0"}[30d])) OR vector(0))/(sum(count_over_time(kuberhealthy_check{check="kuberhealthy/deployment", status="1"}[30d])) * 100)

利用率

我们将利用率定义为用户对产品(k8s)及其资源(pod、服务等)的接受程度。通过客户使用了多少节点、部署、有状态集、持久卷、服务、pods和jobs来衡量。通过计算节点、部署、有状态集、持久卷、服务、pods和jobs的总数来计算。

持续时间(延迟)

持续时间定义为控制平面的容量和吞吐量的利用率。通过捕获kuberhealthy部署检查运行的平均运行持续时间来计算。

PromQL查询(部署检查平均运行持续时间):

avg(kuberhealthy_check_duration_seconds{check="kuberhealthy/deployment"})

错误/警报

我们将错误定义为所有k8s集群和Kuberhealthy相关警报。每次Kuberhealthy检查失败,都会收到失败的警报。

原文地址:

https://kubernetes.io/blog/202 ... lthy/

如何对K8s进行考核?Kuberhealthy来打个样!相关推荐

  1. 【云原生】k8s(Kubernetes)中yaml文件快速阅读理解

    简言: k8s yaml中文件内容一般有kind类型之分,每种类型有不同的功能(一般用---符号隔开) 常见的kind类型:         (1)Endpoints:Endpoints可以把外部的链 ...

  2. 非专业计算机考试基础内容,全国高等教育自学考试指定教材:计算机应用基础·非计算机专业公共基础科·代码00018...

    &nbsp&nbsp[导读]:全国高等教育自学考试指定教材:计算机应用基础·非计算机专业公共基础科·代码00018,更多自学考试内容.模拟试题和历年真题,请访问易考吧自学考试网(htt ...

  3. 学习 Linux,101: 使用 vi 编辑文件

    总是可用的编辑器 了解如何使用 vi 编辑器,这款编辑器在大部分 UNIX® 和 Linux® 系统中都存在.本文提供的材料可以帮助您准备 Linux 系统管理员认证 LPI 101 考试,也可以作为 ...

  4. 这几个CNAD领域对实验人员的要求,赶紧收藏

    这几个CNAD领域对实验人员的要求,赶紧收藏 CNAS对各个领域的人员都有特定的要求,我们来帮助大家总结下,各个领域的特殊要求. 1.微生物领域: 4.1.5 g)实验室应设置生物安全责任人和生物安全 ...

  5. 星际空间环境地面模拟:气氛、气压或真空度的精确模拟及控制

    摘要:针对星际空间气氛环境,介绍了地面模拟试验中的气氛.气压或真空度的精确模拟及控制技术,特别介绍了美国标准化技术研究所NIST和上海依阳实业有限公司在这方面所做的研究工作. 美国NASA火星探测器 ...

  6. 第三方检验检测机构实验室人员能力评价如何进行?

    人员作为实验室重要的"硬实力"之一,其技术能力和素质水平体现了实验室水平的高低,而人员的能力并不是从开始就一成不变的,所以有效地评价实验室人员的技术能力,是保证实验室活动的必要条件 ...

  7. 【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美

    作者 |  韩堂.柘远.沉醉 来源 | 阿里巴巴云原生公众号 ​ 前言 台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯:"第一个十年我才华横溢,'贼光闪现',令周边黯然 ...

  8. 【深度探讨】阿里巴巴万级规模 K8s 集群全局高可用体系之美

    简介:台湾作家林清玄在接受记者采访的时候,如此评价自己 30 多年写作生涯:"第一个十年我才华横溢,'贼光闪现',令周边黯然失色:第二个十年,我终于'宝光现形',不再去抢风头,反而与身边的美 ...

  9. 华为宣布:免费培养K8s和微服务开发者

    云原生2.0时代已经到来 IDC发布<IDC FutureScape: 全球云计算2020 年预测--中国启示>显示,云原生应用所影响的领域正逐渐从互联网走向非互联网,从传统应用升级走向云 ...

最新文章

  1. 如何在 5 分钟内建立一个数据驱动的新型冠状病毒肺炎应用程序
  2. 关于win2003服务器远程断开后自动注销的问题解决
  3. 【数据可视化应用】绘制极坐标(附Python代码)
  4. 【收藏】GeoMesa Spark
  5. js向服务器发送信息,Angularjs向服务器发送请求
  6. sql server2005 分页特性
  7. 【Spark】Spark kafka because consumer rebalance same group id joined different streaming
  8. sphinx xmlpipe2 php,PHP+MongoDB+Coreseek/Sphinx打造搜索引擎
  9. 读取ANSYS结果文件中的数据C语言,[转载][转载]如何在ANSYS中读入txt文件的数据
  10. 浙江正泰中自 DCS系统PCS1800系统介绍
  11. 低功耗中的Isolation cells 和Level shifter cells
  12. php几种常用的加密解密算法
  13. python爬取股票最新数据并用excel绘制树状图
  14. 成为Googler的资源分享!
  15. word树状分支图_word中插入树状图的两种方法
  16. 对标大厂标准,C站(CSDN)软件工程师能力认证正式上线
  17. 使用drbd实现数据的高可用
  18. PE工具制作(大白菜+U盘启动模式)+系统重装
  19. python 倒数两列_相机标定之张正友标定法数学原理详解(含python源码)
  20. 2020-11-30 09:51:55 精确到秒的时间戳

热门文章

  1. 开发一个简单的APP到底需要多少钱
  2. 定积分的计算(牛顿-莱布尼茨公式)
  3. 百度云重磅发布ABC 3.0 尹世明如何诠释百度云的“新”打法
  4. 【VBA研究】再论取EXCEL有效行列数方法
  5. 【转】数学的关键是思想
  6. IT企业专利工程师之三:计算机技术领域专利挖掘刍议
  7. UVA 11542 Square(求增广矩阵的秩)
  8. 还重构?就这代码只能铲了重写!
  9. 《Apollo 智能驾驶进阶课程》三、无人车自定位技术
  10. 从头开始制作51智能车——循迹+遥控+避障