

# Amazon EKS 和 Kubernetes 上的 Container Insights 的快速入门设置
<a name="Container-Insights-setup-EKS-quickstart"></a>

**重要**  
如果您要在 Amazon EKS 集群上安装 Container Insights，我们建议您使用 Amazon CloudWatch Observability EKS 附加组件进行安装，而不是按照本部分中的说明进行安装。此外，要检索加速计算网络，必须使用 Amazon CloudWatch 可观测性 EKS 附加组件。有关更多信息和说明，请参阅 [Amazon CloudWatch 可观测性 EKS 插件快速入门](Container-Insights-setup-EKS-addon.md)。

要完成 Container Insights 的设置，您可以按照本节中的快速入门说明进行操作。如果您要在 Amazon EKS 集群中进行安装，并且在 2023 年 11 月 6 日当天或之后按照本部分中的说明进行操作，则可以在集群中安装针对 Amazon EKS 增强了可观测性的 Container Insights。

**重要**  
在完成本节中的步骤之前，您必须已对 IAM 权限等先决条件进行验证。有关更多信息，请参阅 [在 CloudWatch 中验证 Container Insights 的先决条件](Container-Insights-prerequisites.md)。

或者，您可以按照以下两节中的说明操作：[设置 CloudWatch 代理以收集集群指标](Container-Insights-setup-metrics.md)和 [将日志发送到 CloudWatch Logs](Container-Insights-EKS-logs.md)。这些章节提供有关 CloudWatch 代理如何与 Amazon EKS 和 Kubernetes 结合使用的更多配置详细信息，但需要您执行更多安装步骤。

在 Container Insights 的原始版本中，收集的指标和摄取的日志将作为自定义指标收费。借助针对 Amazon EKS 增强了可观测性的 Container Insights，Container Insights 指标和日志按每次观测收费，而不是按存储的指标或摄取的日志收费。有关 CloudWatch 定价的信息，请参阅 [Amazon CloudWatch 定价](https://www.amazonaws.cn/cloudwatch/pricing/)。

**注意**  
Amazon 现已推出 Fluent Bit 作为 Container Insights 的默认日志解决方案，其性能显着提高。我们建议您使用 Fluent Bit 而不是 Fluentd。

## 使用 CloudWatch 代理 operator 和 Fluent Bit 快速入门
<a name="Container-Insights-setup-EKS-quickstart-FluentBit"></a>

Fluent Bit 有两种配置：优化版本和更类似于 Fluentd 的体验的版本。快速入门配置使用优化版本。有关 Fluentd 兼容配置的详细信息，请参阅 [将 Fluent Bit 设置为 DaemonSet 以将日志发送到 CloudWatch Logs](Container-Insights-setup-logs-FluentBit.md)。

CloudWatch 代理 operator 是安装到 Amazon EKS 集群的附加容器。它以 OpenTelemetry Operator for Kubernetes 为模型。Operator 管理集群中 Kubernetes 资源的生命周期。它在 Amazon EKS 集群上安装 CloudWatch 代理、DCGM Exporter（NVIDIA）和 Amazon Neuron Monitor 并对其进行管理。Fluent Bit 和 CloudWatch Agent for Windows 可以直接安装到 Amazon EKS 集群中，而无需 operator 对其进行管理。

为了获得更安全、功能更丰富的凭证颁发机构解决方案，CloudWatch 代理 operator 需要使用 cert-manager，这是 Kubernetes 中广泛采用的 TLS 证书管理解决方案。使用 cert-manager 可简化获取、续订、管理和使用这些证书的过程。此解决方案可确保证书有效且最新，并尝试在证书到期前的配置时间续订证书。cert-manager 还便于从各种支持的来源（包括 Amazon Certificate Manager Private Certificate Authority）颁发证书。

**使用快速入门部署 Container Insights**

1. 如果 cert-manager 尚未安装到集群中，则请安装。有关更多信息，请参阅 [cert-manager Installation](https://cert-manager.io/docs/installation/)。

1. 通过输入以下命令安装自定义资源定义（CRD）。

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl apply --server-side -f -
   ```

1. 通过输入以下命令安装 operator。将 *my-cluster-name* 替换为 Amazon EKS 或 Kubernetes 集群的名称，将 *my-cluster-region* 替换为在其中发布日志的区域的名称。我们建议您使用在其中部署集群的同一个区域来降低 Amazon 出站数据传输成本。

   ```
   ClusterName=my-cluster-name
   RegionName=my-cluster-region
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -
   ```

   例如，要在名为 `MyCluster` 的集群上部署 Container Insights 并将日志和指标发布到美国西部（俄勒冈），请输入以下命令。

   ```
   ClusterName='MyCluster'
   RegionName='us-west-2'
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -
   ```

**从 Container Insights 迁移**

如果您已经在 Amazon EKS 集群中配置了 Container Insights，并想要迁移到针对 Amazon EKS 增强了可观测性的 Container Insights，则请参阅 [在 CloudWatch 中升级到针对 Amazon EKS 增强了可观测性的 Container Insights](Container-Insights-upgrade-enhanced.md)

**删除 Container Insights**

如果您想使用快速入门设置删除 Container Insights，则请输入以下命令。

```
ClusterName=my-cluster-name 
RegionName=my-cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl delete -f -
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl delete -f -
```