CNI 指标帮助程序 - Amazon EKS

CNI 指标帮助程序

CNI 指标帮助程序是一种工具,您可以用来抓取弹性网络接口和 IP 地址信息、在集群级别聚合指标以及将指标推送到 Amazon CloudWatch。

在管理 Amazon EKS 集群时,您可能希望了解已经分配了多少个 IP 地址以及还有多少个地址可用。CNI 指标帮助程序可帮助您:

  • 跟踪这些指标随时间的变化

  • 诊断和排除与 IP 分配和回收相关的问题

  • 提供容量规划见解

预配置了工作线程节点时,CNI 插件会自动从节点的子网向主弹性网络接口 (eth0) 分配辅助 IP 地址池。此 IP 地址池称为 暖池,其大小由工作线程节点的实例类型确定。例如,一个 c4.large 实例的每个接口可以支持三个弹性网络接口和九个 IP 地址。可供指定 Pod 使用的 IP 地址数量比最大值(十个)少一个,因为其中一个 IP 地址预留给弹性网络接口自身。有关更多信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的每个实例类型的每个网络接口的 IP 地址

在 IP 地址池耗尽时,该插件会自动附加另一个弹性网络接口到实例,并将另外一组辅助 IP 地址分配到接口。此过程将继续,直到节点不再支持额外的弹性网络接口。

系统为您的集群收集以下指标并导出到 CloudWatch:

  • 集群可以支持的支持的弹性网络接口最大数

  • 已分配到 Pod 的弹性网络接口数

  • 当前分配给 Pod 的 IP 地址

  • IP 地址总数以及最大可用 IP 地址数

  • ipamD 错误数

部署 CNI 指标帮助程序

CNI 指标帮助程序需要 cloudwatch:PutMetricData 权限以将指标数据发送到 CloudWatch。此部分帮助您创建具有这些权限的 IAM 策略,将其应用到工作线程节点实例角色,然后部署 CNI 指标帮助程序。

为 CNI 指标帮助程序创建 IAM 策略

  1. 创建名为 allow_put_metrics_data.json 的文件并向其中填充以下策略文档。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }
  2. 为工作线程节点实例配置文件创建一个名为 CNIMetricsHelperPolicy 的 IAM 策略,该策略允许 CNI 指标帮助程序代表您调用 AWS API。可使用以下 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。

  3. 获取工作线程节点的 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。集群中的每个节点组均应有一个值。

  4. 使用以下命令将新的 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.6/config/v1.6/cni-metrics-helper.yaml

创建指标控制面板

部署 CNI 指标帮助程序之后,您可在 CloudWatch 控制台中查看 CNI 指标帮助程序。本主题可帮助您创建控制面板来查看集群的 CNI 指标。

创建 CNI 指标面板

  1. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  2. 在左侧导航窗格中,选择 Metrics (指标)

  3. 自定义命名空间中,选择 Kubernetes

  4. 选择 CLUSTER_ID

  5. 所有指标选项卡上,选择要添加到控制面板的指标。

  6. 选择操作,然后选择添加到控制面板

  7. 选择控制面板部分,选择新建,然后输入控制面板的名称,例如“EKS-CNI-metrics”。

  8. 选择小部件类型部分中,选择数字

  9. Customize the widget title (自定义小部件标题) 部分中,输入控制面板标题的逻辑名称,例如“EKS CNI 指标”。

  10. 选择添加到控制面板以完成操作。现在,您的 CNI 指标已添加到可以监控的控制面板,如下所示。

    
                        EKS CNI 指标