本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CNI 指标帮助程序
CNI 指标帮助程序是一种工具,您可以用它来抓取网络接口和 IP 地址信息、在集群级别聚合指标,并将指标发布到 Amazon CloudWatch。
在管理 Amazon EKS 集群时,您可能希望了解已经分配了多少个 IP 地址以及还有多少个地址可用。CNI 指标帮助程序可帮助您:
-
跟踪这些指标随时间的变化
-
诊断和排除与 IP 分配和回收相关的问题
-
提供容量规划见解
预配置节点时,CNI 插件会自动将辅助 IP 地址池从节点的子网分配给主网络接口 (eth0
)。此 IP 地址池称为热池,其大小由节点的实例类型决定。例如,一个 c4.large
实例可以支持三个网络接口,每个接口有九个 IP 地址。可供指定 Pod 使用的 IP 地址数量比最大值(十个)少一个,因为其中一个 IP 地址预留给弹性网络接口自身。有关更多信息,请参阅
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI 中的Amazon EC2 用户指南(适用于 Linux 实例)每个实例类型的每个网络接口的私有 IP 地址。
在 IP 地址池耗尽时,该插件会自动附加另一个弹性网络接口到实例,并将另外一组辅助 IP 地址分配到接口。此过程将继续,直到节点不再支持额外的弹性网络接口。
系统为您的集群收集以下指标并导出到 CloudWatch:
-
集群可以支持的最大网络接口数量
-
已分配给 Pod 的网络接口数
-
当前分配给 Pod 的 IP 地址
-
IP 地址总数以及最大可用 IP 地址数
-
错误的数量ipamD
部署 CNI 指标帮助程序
CNI 指标帮助程序需要 cloudwatch:PutMetricData
权限以将指标数据发送到 CloudWatch。本部分帮助您创建具有这些权限的 IAM 策略,将其应用于节点实例角色,然后部署 CNI 指标帮助程序。
为 CNI 指标帮助程序创建 IAM 策略
-
创建名为
allow_put_metrics_data.json
的文件并向其中填充以下策略文档。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }
-
为节点实例配置文件创建一个名为 IAM 的
CNIMetricsHelperPolicy
策略,该策略允许 CNI 指标帮助程序代表您调用 AWS APIs。可使用以下 AWS CLI 命令在 AWS 账户中创建 IAM 策略。aws iam create-policy --policy-name CNIMetricsHelperPolicy \ --description "Grants permission to write metrics to CloudWatch" \ --policy-document file://allow_put_metrics_data.json
记下返回的策略 ARN。
-
获取节点的 IAM 角色名称。可使用以下命令打印
aws-auth
configmap。kubectl -n kube-system describe configmap aws-auth
输出:
Name: aws-auth Namespace: kube-system Labels: <none> Annotations: <none> Data ==== mapRoles: ---- - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::<111122223333>:role/<eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU> username: system:node:{{EC2PrivateDNSName}} Events: <none>
记录已向其分配
system:nodes
组的任何rolearn
值的角色名称。在上面的示例输出中,角色名称为 <eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU>。集群中的每个节点组均应有一个值。 -
使用以下命令将新的
CNIMetricsHelperPolicy
IAM 策略附加到您之前标识的每个节点 IAM 角色,同时将红色文本替换为您自己的 AWS 账号和节点 IAM 角色名称。aws iam attach-role-policy \ --policy-arn arn:aws:iam::<111122223333>:policy/CNIMetricsHelperPolicy \ --role-name <eksctl-prod-nodegroup-standard-wo-NodeInstanceRole-GKNS581EASPU>
部署 CNI 指标帮助程序
-
使用与集群所在的区域对应的命令应用 CNI 指标帮助程序清单。
-
区域之外的所有区域。中国
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.7/config/v1.7/cni-metrics-helper.yaml
-
北京和宁夏 中国区域。
kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/master/config/v1.7/cni-metrics-helper-cn.yaml
-
创建指标控制面板
部署 CNI 指标帮助程序之后,您可在 CloudWatch 控制台中查看 CNI 指标帮助程序。本主题可帮助您创建控制面板来查看集群的 CNI 指标。
创建 CNI 指标面板
-
通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/
。 -
在左侧导航窗格中,选择 Metrics (指标)。
-
在自定义命名空间中,选择 Kubernetes。
-
选择 CLUSTER_ID。
-
在所有指标选项卡上,选择要添加到控制面板的指标。
-
选择操作,然后选择添加到控制面板。
-
在选择控制面板部分,选择新建,然后输入控制面板的名称,例如“EKS-CNI-metrics”。
-
在选择小部件类型部分中,选择数字。
-
在 Customize the widget title (自定义小部件标题) 部分中,输入控制面板标题的逻辑名称,例如“EKS CNI 指标”。
-
选择添加到控制面板以完成操作。现在,您的 CNI 指标已添加到可以监控的控制面板,如下所示。