写点什么

与 Prometheus 搭配使用 Amazon EKS 控制平面指标

  • 2019-10-04
  • 本文字数:2134 字

    阅读完需:约 7 分钟

与 Prometheus 搭配使用 Amazon EKS 控制平面指标

您可以利用 Kubernetes 核心组件中提供的一系列丰富指标来观察控制平面中正在发生的情况。您可以了解的信息包括:API 服务器的每个资源中 watchers 的数量、审核跟踪事件的数量、向 API 服务器所发送请求的延迟,以及更多信息。这些指标来自于 Kubernetes API 服务器、Kubelet、Cloud Controller Manager 和 Scheduler。这些组件会在 /metrics 处显示内容类型为 text/plain 的“指标”终端节点(通过 HTTP 响应)。这篇博文将详细向您介绍如何基于 Amazon Elastic Container Service for Kubernetes (EKS) 集群获取 API 服务器指标。

先决条件

首先,您必须设置一个 Amazon EKS 集群。在此博文中,我们将在集群配置文件机制中使用 eksctl。首先,必须下载以下工具:


  • eksctl

  • kubectl

  • helm

  • 安装所有必需的工具后,即可开始启动 EKS 集群。在本例中,我们会将集群部署在 us-east-2(即 AWS 俄亥俄区域)中,您可将 AWS_REGION 替换为支持 Amazon EKS 的任何区域。

部署集群

export AWS_REGION=us-east-2
复制代码


在导出区域后,按照如下所示创建 ClusterConfig:


cat >cluster.yaml <<EOFapiVersion: eksctl.io/v1alpha4kind: ClusterConfigmetadata:  name: control-plane-metrics  region: us-east-2
nodeGroups: - name: ng-1 desiredCapacity: 2EOF
复制代码


在创建该文件后,使用 eksctl create cluster 命令创建集群:


eksctl create cluster -f cluster.yaml
复制代码


完成此操作大约需要 10 – 15 分钟时间,之后,便可获得可供使用的 Amazon EKS 集群。

原始指标

在直观呈现指标、监视指标以及接收与指标相关的提醒之前,您可以先看一看这些指标终端节点的输出是怎样的。


kubectl get --raw /metrics
复制代码



这些指标的输出采用 Prometheus 格式。Prometheus 是云原生计算基金会 (CNCF) 的一个成熟项目。它可以扫描与抓取您的集群内的指标终端节点,甚至还能扫描其自身的终端节点。Prometheus 指标的语法为:


metric_name {[ "tag" = "value" ]*} value
复制代码


您可以设置 metric_name、为指标定义 tags(可用于查询),以及设置 value。以下是使用 apiserver_request_count 的一个指标示例:


apiserver_request_count{client="kube-apiserver/v1.11.8 (linux/amd64) kubernetes/7c34c0d",code="200",contentType="application/vnd.kubernetes.protobuf",resource="pods",scope="cluster",subresource="",verb="LIST"} 7
复制代码


这行代码的意思是,我们有 7 个发送给 pods 资源的 LIST 请求。


接下来,我们要使用 helm 设置 Prometheus。

配置 Helm

创建集群后,您可以在本地设置 helm,以免在集群中运行 tiller。按照博文 Using Helm with Amazon EKS 中的步骤操作。


在完成这些步骤之后,您便可以部署 Prometheus。

部署 Prometheus

首先,创建一个 Kubernetes 命名空间,并使用 helm 来部署 stable/prometheus 软件包:


kubectl create namespace prometheushelm install stable/prometheus \              --name prometheus \             --namespace prometheus \             --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2",server.service.type=LoadBalancer
复制代码


安装完毕后,您可以把服务列出来,以获取负载均衡器的地址:


kubectl get svc -o wide —namespace prometheus
复制代码



您可以在浏览器中输入此负载均衡器的地址来导航到此负载均衡器,系统会加载 Prometheus UI。您可以在这个地方前往状态 → 目标 – 此页面会向您显示控制平面节点:



如果能够看到自己的节点,您就可以继续检查某些指标。导航到图表,在下拉列表 – 插入光标处的指标 – 中选择任意以 apiserver_ 开头的指标并单击执行。系统随即会从 API 服务器加载最新同步的数据。



您现在可以在控制台视图中查看指标,并且可以切换到图表并直观呈现此数据:


清除

如果您专为运行此测试部署了一个集群,并且希望在测试完后清除此集群的话,您可以先删除 prometheus 命名空间,然后删除集群:


kubectl delete namespace prometheuseksctl delete cluster -f cluster.yaml
复制代码


您可以利用 Prometheus 查看 Kubernetes API 服务器中正在发生的情况,并且能够以图表形式呈现这些指标在一段时间内的变化。您还可以使用 Prometheus 来设置提醒规则(这会填充提醒选项卡)。另外,您可以利用此 helm 图表来部署 Alertmanager,从而根据自己定义的提醒规则来配置提醒。尝试一下修改 prometheus-server configmap 来自己设置一些规则:


kubectl get configmap -n prometheus prometheus-server -o yaml
复制代码


如果您想了解如何像在 Kubernetes API 中这样,在自己的应用程序中使用指标,请查看 Nicholas Turner 和 Nic Cope 的演讲北美 2018 KubeCon CloudNativeCon – 监控全世界:适用于容器化应用程序和集群的有意义指标


作者介绍:


Chris Hein


Chris Hein 是一位资深的开发者,倡导 Amazon Web Services 的 Kubernetes/EKS。加入 Amazon 之前,Chris 曾就职于众多规模不等的公司,如 GoPro、Sproutling 和 Mattel。有关 Chris 的更多信息,请访问 https://aws.amazon.com/blogs/opensource/author/heichris/,并通过 @christopherhein 关注他


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-eks-control-plane-metrics-prometheus/


2019-10-04 20:341154
用户头像

发布了 1850 篇内容, 共 118.1 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

SelectDB 创始人兼 CEO 连林江荣获 OSCAR 开源产业大会「尖峰开源人物 」奖项

SelectDB

数据库 大数据 数据仓库 企业号九月金秋榜 尖峰开源

优化帮助中心需要做到以下几点

Baklib

产品 帮助中心 在线设计

我所知道的webpack5那些不太一样的改变

Java-fenn

Java

安利一个比Gitbook更好用的国内帮助文档制作平台

Baklib

J神出品!让 Compose 从此摆脱 ViewModel

Java-fenn

Java java;

华为云GaussDB——打造金融行业坚实数据底座,共创数字金融新未来

Java-fenn

Java

测试驱动开发 (TDD) 在线练功房 | 12 月 17 日开课

ShineScrum

【9.16-9.23】写作社区精彩技术博文回顾

InfoQ写作社区官方

优质创作周报

TiDB Hackathon 2022丨总奖金池超 35 万!邀你唤醒代码世界的更多可能性!

PingCAP

#TiDB

企业选择局域网即时通讯软件的必要性是什么?

WorkPlus

Kong重构了其事件通知机制

八苦-瞿昙

Event Gateway API Gateway

通过 Kasten K10 by Veeam 与 SUSE Rancher 实现云原生应用灾备迁移

Java-fenn

Java

数据湖系列之二 | 打造无限扩展的云存储系统,元数据存储底座的设计和实践

Baidu AICLOUD

数据湖 元数据

2022年震荡与加速中前行的新消费

易观分析

疫情 消费

牛客网趋势最热Java八股文,速度赶紧马上打包带走!

Java-fenn

Java 编程 程序员 java面试 Java面试题

金九银十必备!这份java面经让你轻松拿下45kOffer

Java-fenn

Java 程序员 面试 java面试 Java面试题

疫情时代下,线上协同办公成时下热点

Baklib

远程办公 企业 协同办公 在线设计

日系“怎样”系列新版升级,一本书讲透程序运行的方方面面

图灵社区

Python 程序员 C语言 计算机

MyBatis批量插入几千条数据慎用foreach

Java-fenn

Java

前端必读3.0:如何在 Angular 中使用SpreadJS实现导入和导出 Excel 文件

葡萄城技术团队

最全Java面试攻略,吃透25个技术栈Offer拿到手软

Java-fenn

Java 编程 程序员 java面试 Java面试题

怎样体面地讲道理?

图灵社区

写作 表达 逻辑

《软件开发的201个原则》思考:6. 低可靠性比低效率更糟糕

非晓为骁

个人成长 软件工程能力 高质量

Github最新Java面试1658核心讲,助力百人入大厂!

Java-fenn

Java 编程 程序员 java面试 Java面试题

CAT 认证敏捷团队教练工作坊 (Coaching Agile Teams) | 2023年1月 7 日开课

ShineScrum

敏捷教练 专业教练

电商黄牛,你被小红书盯上了

小红书技术REDtech

算法 电商风控 黄牛治理

当你 git push 时,极狐GitLab上发生了什么?

极狐GitLab

DevOps gitlab SSH gitops 极狐GitLab

2021年中国自然语言处理软件及服务市场规模超200亿,市场保持高速增长,竞争格局远未稳定

易观分析

自然语言处理 市场

WorkPlus移动办公系统:打造安全专属、统一业务与运营的企业门户

WorkPlus

聚焦金融行业未来,博睿数据亮相第五届中国银行CIO峰会

博睿数据

AIOPS 金融 银行 博睿数据 ONE平台

Chrome操作指南——入门篇(十一)network

Augus

Chrome开发者工具 9月月更

与 Prometheus 搭配使用 Amazon EKS 控制平面指标_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章