指标帮助程序
CNI 指标帮助程序是一种工具,您可以用来抓取网络接口和 IP 地址信息、在集群级别聚合指标以及将指标推送到 Amazon CloudWatch。要详细了解指标帮助程序,请参阅 GitHub 上的 cni-metrics-helper
在管理 Amazon EKS 集群时,您可能希望了解已经分配了多少个 IP 地址以及还有多少个地址可用。CNI 指标帮助程序可帮助您:
-
跟踪这些指标随时间的变化
-
诊断和排除与 IP 分配和回收相关的问题
-
提供容量规划见解
预置了节点时,CNI 插件会自动从节点的子网向主网络接口 (eth0
) 分配辅助 IP 地址池。此 IP 地址池称为暖池,其大小由节点的实例类型确定。例如,一个 c4.large
实例的每个接口可以支持三个网络接口和九个 IP 地址。可供指定 pod 使用的 IP 地址数量比最大值(十个)少一个,因为其中一个 IP 地址预留给弹性网络接口自身。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的每个实例类型的每个网络接口的 IP 地址。
在 IP 地址池耗尽时,该插件会自动附加另一个弹性网络接口到实例,并将另外一组辅助 IP 地址分配到接口。此过程将继续,直到节点不再支持额外的弹性网络接口。
系统为您的集群收集以下指标并导出到 CloudWatch:
-
集群可以支持的网络接口的最大数量
-
已分配到 pods 的网络接口数
-
当前分配给 pods 的 IP 地址
-
IP 地址总数以及最大可用 IP 地址数
-
ipamD 错误数
先决条件
-
集群的现有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供程序。要确定您是否已经拥有一个或是否要创建一个,请参阅 为集群创建 IAM OIDC 提供商。
-
您的计算机或 AWS CloudShell 上安装并配置了
2.7.13
版或更高版本,或1.25.25
版或更高版本的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南中的安装、更新和卸载 AWS CLI 以及使用aws configure
进行快速配置。 -
计算机或 AWS CloudShell 上安装了
kubectl
命令行工具。该版本可以与集群的 Kubernetes 版本相同,或者最多早于或晚于该版本一个次要版本。例如,如果您的集群版本为1.21
,则可以将kubectl
版本1.20
、1.21
或1.22
用于它。要安装或升级kubectl
,请参阅 安装或更新 kubectl。 -
如果您的集群为
1.21
版本或更高版本,确保您的 Amazon VPC CNI plugin for Kubernetes、kube-proxy
和 CoreDNS 附加组件为服务账户令牌中列出的最低版本。
部署 CNI 指标帮助程序
创建 IAM policy 和角色并部署指标帮助程序。
部署 CNI 指标帮助程序
-
创建一项 IAM policy,该策略需向 CNI 指标帮助程序授予
cloudwatch:PutMetricData
权限,以便向 CloudWatch 发送指标数据。-
将以下内容复制到名为
的文件中。cni-metrics-helper-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*" } ] }
-
创建一项名为
的 IAM policy。AmazonEKSVPCCNIMetricsHelperPolicy
aws iam create-policy --policy-name
AmazonEKSVPCCNIMetricsHelperPolicy
\ --description "Grants permission to write metrics to CloudWatch" \ --policy-document file://cni-metrics-helper-policy.json
-
-
创建 IAM 角色并向其附加此 IAM policy。创建 Kubernetes 服务账户。用 IAM 角色 ARN 对 Kubernetes 服务账户进行注释,用 Kubernetes 服务账户名称对 IAM 角色进行注释。您可以使用
eksctl
或 AWS CLI 创建角色。 -
对您的集群所在的 AWS 区域 使用以下命令,以将 CNI 指标帮助程序的推荐版本添加到您的集群中。
重要 您每次只更新一个次要版本。例如,如果您的当前版本为
1.9
,并且您想要更新到1.11
,则应首先更新到1.10
,再更新到1.11
,方法是在以下其中一个命令中更改版本号。推荐版本和最新版本适用于 Amazon EKS 支持的所有 Kubernetes 版本。
AWS GovCloud(美国东部)(
us-gov-east-1
)kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v
1.11.2
/config/master/cni-metrics-helper-us-gov-east-1.yamlAWSGovCloud (US-West)
us-gov-west-1
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v
1.11.2
/config/master/cni-metrics-helper-us-gov-west-1.yaml所有其他 AWS 区域
-
下载清单文件。
curl -o cni-metrics-helper.yaml https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v
1.11.2
/config/master/cni-metrics-helper.yaml -
如果您的集群不位于
us-west-2
,则将以下命令中的
替换为您的集群所在的运行修改的命令将文件中的region-code
us-west-2
替换为您的 AWS 区域。sed -i.bak -e 's/us-west-2/
region-code
/' cni-metrics-helper.yaml -
如果您的集群不位于
us-west-2
,则对于您的集群所在的 AWS 区域,将以下命令中的
替换为 Amazon 容器镜像注册表 中的账户,然后运行修改的命令将文件中的602401143452
602401143452
。sed -i.bak -e 's/602401143452/
602401143452
/' cni-metrics-helper.yaml -
将清单文件应用于集群。
kubectl apply -f cni-metrics-helper.yaml
-
-
用之前创建的 IAM 角色的 ARN 注释上一步创建的
cni-metrics-helper
Kubernetes 服务账户。将
替换为账户 ID,将111122223333
替换为集群名称,将my-cluster
替换为上一步创建的 IAM 角色名称。AmazonEKSVPCCNIMetricsHelperRole
kubectl annotate serviceaccount cni-metrics-helper \ -n kube-system \ eks.amazonaws.com/role-arn=arn:aws:iam::
111122223333
:role/AmazonEKSVPCCNIMetricsHelperRole
(可选)配置您的 Kubernetes 服务账户使用的 AWS Security Token Service 端点类型。有关更多信息,请参阅为服务账户配置 AWS Security Token Service 端点。
-
重新启动
cni-metrics-helper
部署。kubectl rollout restart \ deployment cni-metrics-helper \ -n kube-system
创建指标控制面板
部署 CNI 指标帮助程序之后,您可在 CloudWatch 控制台中查看 CNI 指标。本主题可帮助您创建控制面板来查看集群的 CNI 指标。
创建 CNI 指标面板
-
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
请在左侧导航窗格中,选择 Metrics(指标),然后选择 All metrics(全部指标)。
-
在 Custom Namespaces(自定义命名空间)中选择 Kubernetes。
-
选择 CLUSTER_ID。
-
在 Metrics(指标)选项卡上,选择要添加到控制面板的指标。
-
在控制台右上方,选择 Actions(操作),然后选择 Add to dashboard(添加到控制面板)。
-
在 Select a dashboard(选择控制面板)部分选择 Create new(新建),为控制面板输入一个名称(例如
EKS-CNI-metrics
),然后选择 Create(创建)。 -
在 Widget type(小组件类型)部分选择 Number(数字)。
-
在 Customize widget title(自定义小组件标题)部分中,输入控制面板标题的逻辑名称,例如
EKS CNI metrics
。 -
选择 Add to dashboard(添加到控制面板)完成操作。现在,您的 CNI 指标已添加到可以监控的控制面板,如下所示。