我找不到 Amazon Elastic Container Service (Amazon ECS) 任務或 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 的容器記錄。
簡短描述
如果您在 Amazon ECS 或 Amazon EKS 中缺少容器日誌,則可能是主機執行個體出現問題。或者,如果您的容器化應用程式沒有寫入正確的位置,那麼 Docker 常駐程式可能無法看到您的日誌。
以下是容器化應用程式未寫入部分或全部日誌的常見情況:
- 您在 Amazon ECS 中的容器執行個體上執行了 docker logs yourContainerName 命令。
- 您在 Amazon ECS 的任務中使用了 awslogs 日誌驅動程式。
- 您在 Amazon EKS 叢集中執行了 kubectl logs yourPodName 命令。
解決方法
對 Amazon ECS 任務日誌的問題進行疑難排解
請確認您的任務設定正確
檢查您的 CloudWatch Logs
如果您的任務使用 awslogs 日誌驅動程式,則日誌將串流傳輸到 Amazon CloudWatch Logs。這些日誌永遠不會寫入到容器執行個體中。執行 docker logs yourContainerName 命令時,傳回以下錯誤訊息:"Error response from daemon: configured logging driver does not support reading."
授予正確的權限
若要讓 Amazon Elastic Compute Cloud (Amazon EC2) 啟動類型能夠串流傳輸至 CloudWatch Logs,請向您的容器執行個體 IAM 角色授予權限。
若要允許 AWS Fargate 啟動類型串流傳輸到 CloudWatch Logs,請向任務使用的任務 IAM 角色授予權限。
如果您的日誌仍然缺失,請完成應用程式容器疑難排解區段中的步驟。
對 Amazon EKS 上的 Kubernetes Pod 日誌進行疑難排解
若要傳回從 Pod 容器產生的日誌檔案,請執行以下 kubectl 命令:
kubectl logs yourPodName
**注意:**kubelet 會在 Pod 結束後自動移除日誌檔案。如需詳細資訊,請參閱 Kubernetes 網站上的未使用的容器和映像檔的垃圾回收。若要在工作節點上保留這些日誌檔案更長時間,請設定 kubelet 減少垃圾回收的頻率。
如果您的日誌仍然缺失,請完成應用程式容器疑難排解區段中的步驟。
對應用程式容器問題進行疑難排解
若要對應用程式容器進行疑難排解,請完成以下任務:
- 在容器建置期間,將應用程式設定為正確的日誌層級。
**注意:**您的應用程式可能需要您透過環境變數或組態檔案來設定日誌記錄。
- 將您的應用程式作為容器的 ENTRYPOINT。如需詳細資訊,請參閱 Docker Docs 網站上的 ENTRYPOINT。
**注意:**dockerfile 中的 ENTRYPOINT 是記錄 STDOUT 和 STDERR I/O 串流的程序。如需詳細資訊,請參閱 Docker Docs 網站上的查看容器日誌。
- 使用連結到 STDOUT 和 STDERR 的應用程式日誌檔案來建置您的容器。或者,將您的應用程式設定為直接記錄到 /proc/1/fd/1 (stdout) 和 /proc/1/fd/2 (stderr)。有關範例,請參閱 Docker Hub 網站上的 nginx 和 httpd 官方容器映像檔。
**注意:**如果您的使用案例允許,則請將您的應用程式程序作為容器中的上層程序。如果您的容器使用 Shell 指令碼作為 ENTRYPOINT,則請設定該指令碼在執行時期初始化您的容器資料。