本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Amazon EKS 上的 Container Insights 進行故障診斷
本節涵蓋您在 Amazon EKS 上設定或操作 Container Insights 時可能遇到的常見問題。無論您使用 OTel 還是 Classic 方法,都請使用下表和診斷命令來識別和解決問題。
如需特定方法的設定指引,請參閱 快速入門:Amazon EKS 上的 OTel Container Insights或 設定指南 (AWS CLI)。若要比較方法,請參閱 比較 Container Insights 方法。
指標未顯示在 CloudWatch 中
如果您在ContainerInsights命名空間中看不到指標,請使用下表來識別原因。
| 徵狀 | 原因 | Resolution |
|---|---|---|
ContainerInsights 命名空間中沒有指標 |
IAM 角色缺少cloudwatch:PutMetricData許可 |
將 CloudWatchAgentServerPolicy受管政策連接至客服人員 IAM 角色。 |
| 指標對某些節點顯示,但對其他節點顯示 | 由於污點,代理程式 DaemonSet 未排程在所有節點上 | 將容錯新增至代理程式 DaemonSet,以允許在污點節點上排程。 |
| 指標停止顯示 | 代理程式 Pod 已 OOMKilled 或正在重新啟動 | 增加代理程式 Pod 資源規格中的記憶體限制。 |
| 指標為過時或零 | 網路連線已封鎖 | 檢查 VPC 安全群組,並確認 CloudWatch VPC 端點是否存在。 |
| 缺少增強型指標 | 代理程式未設定為增強可觀測性 | 在代理程式組態enhancedObservability: true中設定 。 |
代理程式 Pod 未啟動
如果代理程式 Pod 無法啟動或保持非執行中狀態,請使用下表來診斷問題。
| 徵狀 | 原因 | Resolution |
|---|---|---|
ImagePullBackOff |
無法連線 Amazon ECR 或映像標籤不正確 | 驗證映像 URI 並確認節點可存取 Amazon ECR。 |
Pending |
節點上的 CPU 或記憶體不足 | 擴展節點群組或減少代理程式 Pod 規格中的資源請求。 |
CrashLoopBackOff |
無效的組態或缺少磁碟區掛載 | 透過在受影響的 Pod kubectl logs上執行 ,檢查 Pod 日誌是否有組態錯誤。 |
FailedScheduling |
節點親和性或污點會阻止排程 | 檢閱 DaemonSet 規格中的 nodeSelector和 容錯。 |
| 結束程式碼 1 | 服務帳戶缺少 IRSA 註釋 | 確認服務帳戶具有 eks.amazonaws.com/role-arn註釋。 |
附加元件安裝失敗
如果附加amazon-cloudwatch-observability元件無法安裝或報告運作狀態不佳的狀態,請使用下表進行故障診斷。
| 徵狀 | 原因 | Resolution |
|---|---|---|
CREATE_FAILED |
先前安裝的資源衝突 | 刪除衝突的資源,並在建立附加元件--resolve-conflicts OVERWRITE時使用 。 |
| 找不到 OIDC 提供者 | 叢集不存在 IAM OIDC 身分提供者 | 執行 來建立提供者eksctl utils associate-iam-oidc-provider。 |
| 版本衝突 | 附加元件版本與 Kubernetes 版本不相容 | 執行 以列出相容的版本aws eks describe-addon-versions。 |
DEGRADED 狀態 |
由於缺少許可,運作狀態檢查失敗 | 檢查 Pod 日誌,並確認 IRSA 角色已連接必要的政策。 |
日誌交付問題
如果容器日誌未出現在 Amazon CloudWatch Logs 中,請使用下表來識別原因。
| 徵狀 | 原因 | Resolution |
|---|---|---|
| 日誌群組不存在 | 缺少logs:CreateLogGroup許可 |
將 Amazon CloudWatch Logs 許可新增至代理程式 IAM 角色。 |
| 日誌群組存在,但空白 | 未為日誌設定代理程式,或區域不相符 | 確認代理程式組態包含日誌集合,且 區域符合您的叢集區域。 |
| 日誌延遲超過 5 分鐘 | 排清間隔太高或節點負載過重 | 減少代理程式組態中的force_flush_interval值。 |
| 缺少效能日誌 | 代理程式僅針對應用程式日誌設定 | 確認 Container Insights 效能日誌區段存在於代理程式組態中。 |
遷移特定問題
如果您在 Container Insights 方法之間遷移時遇到問題,請使用下表。如需完整的遷移工作流程,請參閱 遷移指南。
| 徵狀 | 原因 | Resolution |
|---|---|---|
| 平行執行期間重複的指標 | 這兩種方法同時發佈指標 | 此行為預期會在平行執行期間發生。驗證新方法之後,請停用舊版方法。 |
| 方法之間的不同指標值 | 不同的計算方法 | 預期會有些微的差異 (低於 5%)。大差異表示方法之間的組態不相符。 |
| 轉返失敗 | 自訂組態未重新套用 | 當您轉返時,請重新套用完整的組態值。 |
| 警示在遷移期間觸發 | 轉換期間的指標差距 | 暫時將受影響警示notBreaching上遺失的資料處理設定為 。 |
OTel Container Insights 問題
以下是 OTel Container Insights 方法特有的問題。如需一般設定指引,請參閱 快速入門:Amazon EKS 上的 OTel Container Insights。
| 徵狀 | 原因 | Resolution |
|---|---|---|
| 403 禁止的匯出工具錯誤 | IAM 角色缺少 CloudWatch 許可 | 確認 CloudWatchAgentServerPolicy 已連接至客服人員角色。 |
| 指標端點上的連線遭拒 | 收集器無法連接 kubelet | 確認hostNetwork: true已在 Pod 規格中設定 ,或確認服務帳戶具有必要的許可。 |
| 高記憶體用量 | 批次處理器佇列太大 | 減少收集器組態中的 batch/timeout和 batch/send_batch_size值。 |
| 自訂指標未顯示 | 未為應用程式端點設定接收器 | 新增 Prometheus 接收器,以收集器組態中的應用程式指標連接埠為目標。 |
一般診斷命令
使用下列命令來收集容器洞見部署的相關資訊。
若要檢查代理程式 Pod 狀態,請執行下列命令。
kubectl get pods -n amazon-cloudwatch
若要檢視代理程式 Pod 日誌,請執行下列命令。
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50
若要檢查代理程式 DaemonSet 狀態,請執行下列命令。
kubectl get daemonset -n amazon-cloudwatch
若要驗證服務帳戶的 IAM 角色,請執行下列命令。
kubectl get serviceaccount -n amazon-cloudwatch -o yaml
若要檢查叢集附加元件狀態,請執行下列命令。使用 Amazon EKS 叢集的名稱取代 cluster-name。
aws eks describe-addon --cluster-namecluster-name--addon-name amazon-cloudwatch-observability
若要列出 Container Insights 日誌群組,請執行下列命令。使用 Amazon EKS 叢集的名稱取代 cluster-name。
aws logs describe-log-groups --log-group-name-prefix "/aws/containerinsights/cluster-name"
相關資源
如需在 Amazon EKS 上設定和操作 Container Insights 的詳細資訊,請參閱下列主題。
-
快速入門:Amazon EKS 上的 OTel Container Insights – 設定 OTel Container Insights
-
設定指南 (AWS CLI) – 設定 Classic Container Insights
-
遷移指南 – 在方法之間遷移
-
比較 Container Insights 方法 – 比較 Container Insights 方法