本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EKS 的日誌記錄
Kubernetes 記錄可以分為控制平面記錄、節點記錄和應用程式記錄。Kubernetes 控制平面
Kubernetes 也會在每個執行 Pod 的 Kubernetes 節點kube-proxy上執行系統元件,例如 kubelet和 。這些元件會在每個節點內寫入日誌,您可以設定 CloudWatch 和 Container Insights 來擷取每個 Amazon EKS 節點的這些日誌。
容器會分組為 Kubernetes 叢集內的 Pod/var/log/pods目錄中。您可以設定 CloudWatch 和 Container Insights 來擷取每個 Amazon EKS Pod 的這些日誌。
Amazon EKS 控制平面記錄
Amazon EKS 叢集包含 Kubernetes 叢集的高可用性、單一租用戶控制平面,以及執行容器的 Amazon EKS 節點。控制平面節點會在 管理的 帳戶中執行 AWS。Amazon EKS 叢集控制平面節點已與 CloudWatch 整合,您可以開啟特定控制平面元件的記錄。
日誌會針對每個 Kubernetes 控制平面元件執行個體提供。 會 AWS 管理控制平面節點的運作狀態,並為 Kubernetes 端點提供服務層級協議 (SLA)
Amazon EKS 節點和應用程式記錄
我們建議您使用 CloudWatch Container Insights 來擷取 Amazon EKS 的日誌和指標。Container Insights 使用 CloudWatch 代理程式和 Fluent Bit 或 Fluentd 實作叢集、節點和 Pod 層級指標,以將日誌擷取至 CloudWatch。Container Insights 也提供自動儀表板,其中包含所擷取 CloudWatch 指標的分層檢視。Container Insights 部署為在每個 Amazon EKS 節點上執行的 CloudWatch DaemonSet 和 Fluent Bit DaemonSet。Container Insights 不支援 Fargate 節點,因為節點是由 管理 AWS 且不支援 DaemonSets。本指南會分別介紹 Amazon EKS 的 Fargate 記錄。
下表顯示 Amazon EKS 預設 Fluentd 或 Fluent Bit 日誌擷取組態擷取的 CloudWatch 日誌群組和日誌。 https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html
/aws/containerinsights/Cluster_Name/application |
中的所有日誌檔案/var/log/containers。此目錄提供/var/log/pods目錄結構中所有 Kubernetes 容器日誌的符號連結。這會擷取寫入 stdout或 的應用程式容器日誌stderr。它還包含 Kubernetes 系統容器的日誌aws-vpc-cni-init,例如 kube-proxy、 和 coreDNS。 |
/aws/containerinsights/Cluster_Name/host |
來自 /var/log/dmesg、 /var/log/secure和 的日誌/var/log/messages。 |
/aws/containerinsights/Cluster_Name/dataplane |
/var/log/journal 中適用於 kubelet.service、kubeproxy.service 和 docker.service 的日誌。 |
如果您不想使用 Container Insights 搭配 Fluent Bit 或 Fluentd 進行記錄,您可以使用安裝在 Amazon EKS 節點上的 CloudWatch 代理程式來擷取節點和容器日誌。Amazon EKS 節點是 EC2 執行個體,這表示您應該將其包含在 Amazon EC2 的標準系統層級記錄方法中。如果您使用 Distributor 和 State Manager 安裝 CloudWatch 代理程式,Amazon EKS 節點也會包含在 CloudWatch 代理程式安裝、組態和更新中。
下表顯示 Kubernetes 特有的日誌,如果您未使用 Container Insights 搭配 Fluent Bit 或 Fluentd 進行記錄,則必須擷取這些日誌。
/var/log/containers |
此目錄提供/var/log/pods目錄結構下所有 Kubernetes 容器日誌的符號連結。這可有效地擷取寫入 stdout或 的應用程式容器日誌stderr。這包括 Kubernetes 系統容器的日誌aws-vpc-cni-init,例如 kube-proxy、 和 coreDNS。重要:如果您使用 Container Insights,則不需要這樣做。 |
var/log/aws-routed-eni/ipamd.log/var/log/aws-routed-eni/plugin.log |
您可以在此處找到 L-IPAM 協助程式的日誌 |
您必須確保 Amazon EKS 節點安裝並設定 CloudWatch 代理程式,以傳送適當的系統層級日誌和指標。不過,Amazon EKS 最佳化 AMI 不包含 Systems Manager 代理程式。透過使用啟動範本,您可以自動化 Systems Manager 代理程式安裝和預設 CloudWatch 組態,以透過使用者資料區段實作的啟動指令碼擷取重要的 Amazon EKS 特定日誌。Amazon EKS 節點使用 Auto Scaling 群組做為受管節點群組或自我管理節點進行部署。
使用受管節點群組,您可以提供包含使用者資料區段的啟動範本,以自動化 Systems Manager 代理程式安裝和 CloudWatch 組態。您可以自訂並使用 amazon_eks_managed_node_group_launch_config.yamlCloudWatchAgentServerPolicy和 AmazonSSMManagedInstanceCore AWS 受管政策。
透過自我管理節點,您可以直接佈建和管理 Amazon EKS 節點的生命週期和更新策略。自我管理節點可讓您在 Amazon EKS 叢集和 Bottlerocket
記錄 Fargate 上的 Amazon EKS
使用 Fargate 上的 Amazon EKS,您可以部署 Pod,而無需配置或管理您的 Kubernetes 節點。這樣就不需要擷取 Kubernetes 節點的系統層級日誌。若要從 Fargate Pod 擷取日誌,您可以使用 Fluent Bit 將日誌直接轉送至 CloudWatch。這可讓您自動將日誌路由到 CloudWatch,而無需進一步設定或 Fargate 上 Amazon EKS Pod 的附屬容器。如需詳細資訊,請參閱 Amazon EKS 文件中的 Fargate 記錄,以及 AWS 部落格上的適用於 Amazon EKS 的 Fluent BitSTDOUT 和STDERR輸入/輸出 (I/O) 串流,並根據 Fargate 上為 Amazon EKS 叢集建立的 Fluent Bit 組態,透過 Fluent Bit 將其傳送至 CloudWatch。