CNI 指标帮助程序 - Amazon EKS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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 策略

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudwatch:PutMetricData", "Resource": "*" } ] }
  2. 为节点实例配置文件创建一个名为 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。

  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.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 指标面板

  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 指标