Amazon EKS 和 Kubernetes 上的 Container Insights 的快速入门设置 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon EKS 和 Kubernetes 上的 Container Insights 的快速入门设置

重要

如果您要在 Amazon EKS 集群上安装 Container Insights,我们建议您使用 Amazon CloudWatch Observability EKS 附加组件进行安装,而不是按照本部分中的说明进行安装。此外,要检索加速计算网络,必须使用 Amazon CloudWatch 可观测性 EKS 附加组件。有关更多信息和说明,请参阅 安装 Amazon CloudWatch Observability EKS 附加组件

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

重要

在完成本节中的步骤之前,您必须已对 IAM 权限等先决条件进行验证。有关更多信息,请参阅 验证 先决条件

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

在 Container Insights 的原始版本中,收集的指标和摄取的日志将作为自定义指标收费。借助针对 Amazon EKS 增强了可观测性的 Container Insights,Container Insights 指标和日志按每次观测收费,而不是按存储的指标或摄取的日志收费。有关 CloudWatch 定价的信息,请参阅 Amazon CloudWatch 定价

注意

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

使用 CloudWatch 代理 operator 和 Fluent Bit 快速入门

Fluent Bit 有两种配置:优化版本和更类似于 Fluentd 的体验的版本。快速入门配置使用优化版本。有关 Fluentd 兼容配置的详细信息,请参阅 将 Fluent Bit 设置为 DaemonSet 以将日志发送到 CloudWatch Logs

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

  2. 通过输入以下命令安装自定义资源定义(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 -
  3. 通过输入以下命令安装 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,则请参阅 升级到针对 Amazon EKS 增强了可观测性的 Container Insights

删除 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 -