本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EKS 中的記錄類型
在 Amazon EKS 中,記錄涉及擷取、儲存和分析 Kubernetes
-
系統日誌:基礎 Amazon Elastic Compute Cloud (Amazon EC2)
執行個體或AWS Fargate 節點的相關資訊 -
容器執行期日誌:來自容器執行期的資訊,例如 Docker
或 containerd -
應用程式日誌:來自容器化應用程式的輸出
若要有效管理 Amazon EKS 環境中的日誌,您通常會採用 AWS 服務第三方工具和最佳實務的組合。這可能包括使用 Amazon CloudWatch
以下各節探討在 Amazon EKS 中記錄的各種層面,包括實作 Kubernetes 叢集中完整記錄策略的最佳實務、工具和技術 AWS。
系統日誌
Amazon EKS 中基礎 EC2 執行個體或 Fargate 節點的記錄涉及不同的方法,具體取決於節點類型。
若要在 Amazon EKS 中實作 EC2 執行個體的記錄,您可以使用下列工具:
-
CloudWatch 代理程式:在您的 EC2 執行個體上安裝和設定 CloudWatch 代理程式。將其設定為收集系統日誌,例如
/var/log/messages和/var/log/secure。您可以使用使用者資料指令碼或組態管理工具來自動化此程序。 -
Fluent Bit:將 Fluent Bit 部署為 DaemonSet,以收集所有節點的日誌。將其設定為將日誌轉送至 CloudWatch Logs 或其他集中式日誌系統。
-
Container Insights:在您的 EKS 叢集中啟用 Container Insights,以自動從 EC2 執行個體收集指標和日誌。
-
自訂指令碼:開發自訂指令碼以收集特定日誌,並將其傳送至您偏好的日誌目的地。
-
SSM 代理程式:使用 AWS Systems Manager 代理程式 (SSM 代理程式) 收集日誌並將其轉送至 CloudWatch Logs。
若要在 Amazon EKS 中實作 Fargate 節點的記錄,請使用下列工具:
-
Fargate 記錄:Fargate 會自動從您的容器收集
stdout和stderr日誌。設定 Fargate 設定檔,將這些日誌傳送至 CloudWatch Logs。 -
適用於 Fargate 的 Fluent Bit
: AWS 提供專門用於 Fargate 記錄的 Fluent Bit 映像。在 Fargate Pod 中將其部署為附屬容器,以收集和轉送日誌。 -
適用於 Fargate 的 Container Insights
:啟用 Container Insights 以從 Fargate 節點收集指標和日誌。
Kubernetes 元件日誌
從 Amazon EKS 中的 API 伺服器、排程器和控制器管理員等 Kubernetes 元件收集日誌,需要稍微不同於應用程式記錄的方法。這些元件會做為由 管理的 Amazon EKS 控制平面的一部分執行 AWS。以下是您可以收集和存取這些日誌的方式:
-
啟用控制平面記錄:您可以透過 AWS 管理主控台、 AWS Command Line Interface (AWS CLI) 或基礎設施即程式碼 (IaC) 工具,例如 AWS CloudFormation或 Terraform,為您的 EKS 叢集啟用控制平面記錄。當您啟用控制平面記錄時,日誌會傳送至 Amazon CloudWatch Logs。您可以在
/aws/eks/<cluster-name>/cluster日誌群組的 CloudWatch 主控台中檢視它們。在此日誌群組中,每個控制平面元件都有自己的日誌串流,如下所示:串流名稱 Description kube-apiserver Kubernetes API 伺服器日誌 kube-scheduler 排程器決策日誌 kube-controller-manager 控制器管理員日誌 驗證器 IAM 驗證器日誌 audit Kubernetes 稽核日誌 (必須明確啟用) 若要檢視特定元件的日誌,請導覽至叢集日誌群組,並依目標日誌串流名稱篩選。
-
使用 CloudWatch Logs Insights:您可以使用 CloudWatch Logs Insights 對日誌執行複雜的查詢。
-
匯出日誌至 Amazon S3:對於長期儲存或進一步分析,您可以將日誌匯出至 Amazon Simple Storage Service (Amazon S3)。
-
使用第三方工具:您可以使用 Fluent Bit 等工具收集這些日誌,並將其轉送至 Elasticsearch 或 Splunk 等其他日誌系統。
-
使用 AWS CloudTrail: AWS CloudTrail服務可以提供對 EKS 叢集進行 API 呼叫的其他洞見。
容器執行期日誌
在 Amazon EKS 中記錄容器執行期日誌涉及從容器執行期擷取和管理日誌,這通常containerd適用於 Amazon EKS。以下是如何在 Amazon EKS 中記錄容器執行期日誌的方法:
-
直接存取 Amazon EC2 節點上的日誌。對於自我管理的 EC2 節點,您可以從這些位置直接存取主機上的容器執行期日誌:
-
containerd日誌:/var/log/containers/ -
Docker 日誌 (如果您使用的是 Docker 執行期):
/var/log/docker.log
-
-
使用 DaemonSet 進行日誌收集。
-
將日誌收集代理程式 (例如 Fluent Bit) 部署為 DaemonSet,以從所有節點收集日誌。
-
設定 CloudWatch 代理程式以收集容器執行期日誌。
-
啟用 Container Insights 以收集容器執行期指標和日誌。
-
使用 Fargate。對於 Fargate 節點,容器執行期日誌會自動收集,並且可以透過 CloudWatch Logs 存取。
-
使用 Fluent Bit 或 Logstash 等工具實作自訂記錄解決方案。設定 CloudWatch 警示或使用 Prometheus 等工具來監控容器執行期日誌中的特定模式或問題。請考慮使用與 Kubernetes 和 Amazon EKS 完美整合的第三方記錄解決方案,例如 Datadog、Splunk 或 Elastic Stack (ELK Stack)。使用日誌彙總工具從多個來源收集日誌,並將其轉送至集中式日誌系統。
應用程式記錄
Amazon EKS 中的應用程式日誌是維護和疑難排解應用程式的重要部分。若要在 Amazon EKS 中實作應用程式記錄,您可以從下列選項中選擇:
-
將日誌寫入
stdout/stderr:處理應用程式日誌最簡單且最原生的 Kubernetes 方法是將日誌寫入stdout和stderr。Kubernetes 會自動擷取這些串流。 -
實作日誌彙總:使用 Fluent Bit 等日誌彙總器,從您的所有 Pod 收集日誌。
-
設定日誌路由:設定您的日誌彙總器,將日誌路由到所需的目的地 (例如 CloudWatch Logs 或 Elasticsearch)。
-
使用 CloudWatch Container Insights:啟用 Container Insights 進行全面的記錄和監控。