CNI 指标帮助程序 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

CNI 指标帮助程序

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

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

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

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

  • 提供容量规划见解

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

在 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作为节点实例配置文件,该配置文件允许 CNI 指标帮助程序调用Amazon代表您使用 API。请使用以下Amazon CLI命令在Amazonaccount.

    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-cn: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 角色,并将红色文本替换为您自己的红色文本。Amazon账户号和节点 IAM 角色名称。

    aws iam attach-role-policy \ --policy-arn arn:aws-cn: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 指标