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