

# 在 CloudWatch 中验证 Container Insights 的先决条件
<a name="Container-Insights-prerequisites"></a>

在 Amazon EKS 或 Kubernetes 上安装 Container Insights 之前，请验证以下内容。无论您是使用 CloudWatch 代理还是 AWS Distro for OpenTelemetry 在 Amazon EKS 集群上设置 Container Insights，这些先决条件都适用。
+ 在其中一个支持适用于 Amazon EKS 和 Kubernetes 的 Container Insights 的区域中，您具有正常工作的 Amazon EKS 集群或 Kubernetes 集群并附加了节点。有关支持的区域列表，请参阅[Container Insights](ContainerInsights.md)。
+ 您已安装并正在运行 `kubectl`。有关更多信息，请参阅 *Amazon EKS 用户指南* 中的[安装 `kubectl`](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)。
+ 如果您使用在 AWS 上运行的 Kubernetes，而不是使用 Amazon EKS，则还需要满足以下先决条件：
  + 确保您的 Kubernetes 集群已启用基于角色的访问控制 (RBAC)。有关更多信息，请参阅《Kubernetes 参考》中的 [使用 RBAC 授权](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)。
  + 您的 kubelet 已启用 Webhook 授权模式。有关更多信息，请参阅《Kubernetes 参考》中的 [Kubelet 身份验证/授权](https://kubernetes.io/docs/reference/access-authn-authz/kubelet-authn-authz/)。

您还必须授予 IAM 权限，以使 Amazon EKS Worker 节点能够向 CloudWatch 发送指标和日志。有两种方式可执行此操作：
+ 将策略附加到 Worker 节点的 IAM 角色。这同时适用于 Amazon EKS 集群和其他 Kubernetes 集群。
+ 对集群的服务账户使用 IAM 角色，并将策略附加到此角色。这仅适用于 Amazon EKS 集群。

第一个选项授予 CloudWatch 对整个节点的权限，而对服务账户使用 IAM 角色仅授予 CloudWatch 对相应守护程序集 Pod 的访问权限。

**将策略附加到 Worker 节点的 IAM 角色**

按照以下步骤将策略附加到 Worker 节点的 IAM 角色。这同时适用于 Amazon EKS 外部的 Amazon EKS 集群和 Kubernetes 集群。

**将所需的策略附加到 Worker 节点的 IAM 角色**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择其中的一个 Worker 节点实例，然后在描述中选择 IAM 角色。

1. 在 IAM 角色页面上，选择 **Attach policies（附加策略）**。

1. 在策略列表中，选中 **CloudWatchAgentServerPolicy** 旁边的复选框。如有必要，请使用搜索框查找该策略。

1. 选择**附加策略**。

如果您在 Amazon EKS 外部运行 Kubernetes 集群，则可能无法将 IAM 角色附加到 Worker 节点。如果没有，您必须先将一个 IAM 角色附加到实例，然后按照前面步骤中所述添加策略。有关将角色附加到实例的更多信息，请参阅《Amazon EC2 用户指南》**中的[将 IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)。

如果您在 Amazon EKS 外部运行 Kubernetes 集群，并且希望在指标中收集 EBS 卷 ID，则必须向附加到该实例的 IAM 角色添加另一个策略。添加以下内容作为内联策略。有关更多信息，请参阅 *IAM 用户指南*中的[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ec2:DescribeVolumes"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

**使用 IAM 服务账户角色**

此方法仅适用于 Amazon EKS 集群。

**使用 IAM 服务账户角色向 CloudWatch 授予权限**

1. 为集群上的服务账户启用 IAM 角色（如果尚未执行此操作）。有关更多信息，请参阅[为集群上的服务账户启用 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)。

1. 配置服务账户以使用 IAM 角色（如果尚未进行此配置）。有关更多信息，请参阅[配置 Kubernetes 服务账户以代入 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)。

   创建角色时，除了您为角色创建的策略外，还将 **CloudWatchAgentServerPolicy** IAM 策略附加到角色。此外，应在 `amazon-cloudwatch` 命名空间中创建链接至此角色的关联 Kubernetes 服务账户，在接下来的步骤中，CloudWatch 和 Fluent Bit 进程守护程序集将在其中部署

1. 将 IAM 角色与集群中的服务账户相关联（如果尚未执行此操作）。有关更多信息，请参阅[配置 Kubernetes 服务账户以代入 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)。