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 中验证 Container Insights 的先决条件。
或者,您可以按照以下两节中的说明操作:设置 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)和 AWS Neuron Monitor 并对其进行管理。Fluent Bit 和 CloudWatch Agent for Windows 可以直接安装到 Amazon EKS 集群中,而无需 operator 对其进行管理。
为了获得更安全、功能更丰富的凭证颁发机构解决方案,CloudWatch 代理 operator 需要使用 cert-manager,这是 Kubernetes 中广泛采用的 TLS 证书管理解决方案。使用 cert-manager 可简化获取、续订、管理和使用这些证书的过程。此解决方案可确保证书有效且最新,并尝试在证书到期前的配置时间续订证书。cert-manager 还便于从各种支持的来源(包括 AWS Certificate Manager Private Certificate Authority)颁发证书。
使用快速入门部署 Container Insights
如果 cert-manager 尚未安装到集群中,则请安装。有关更多信息,请参阅 cert-manager Installation
。 通过输入以下命令安装自定义资源定义(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 -
通过输入以下命令安装 operator。将
my-cluster-name
替换为 Amazon EKS 或 Kubernetes 集群的名称,将my-cluster-region
替换为在其中发布日志的区域的名称。我们建议您使用在其中部署集群的同一个区域来降低 AWS 出站数据传输成本。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
如果您想使用快速入门设置删除 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 -