本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EKS 叢集的執行期涵蓋範圍和疑難排解
啟用執行期監控並手動或透過自動代理程式組態安裝 EKS 的 GuardDuty 安全代理程式 (附加元件) 之後,您就可以開始評估 EKS 叢集的涵蓋範圍。
檢閱涵蓋範圍統計資料
與您帳戶或您的成員帳戶相關聯的 EKS 叢集涵蓋範圍統計資料,是指運作狀態良好的 EKS 叢集在所選 AWS 區域的所有 EKS 叢集中所佔百分比。可以用下列方程式將此表示為:
(運作狀態良好的叢集/所有叢集) * 100
選擇其中一種存取方法來檢閱您帳戶的涵蓋範圍統計資料。
- Console
-
- API/CLI
-
-
使用您自己的有效偵測器 ID、區域和服務端點執行 ListCoverage API。您可以使用此 API 篩選和排序叢集清單。
aws guardduty --region us-east-1
list-coverage --detector-id 12abc34d567e8fa901bc2d34e56789f0
--sort-criteria '{"AttributeName": "EKS_CLUSTER_NAME
", "OrderBy": "DESC
"}' --filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID
", "FilterCondition":{"EqualsValue":"111122223333"}}] }' --max-results 5
-
執行 GetCoverageStatistics API,以根據 statisticsType
擷取彙總的涵蓋範圍統計資料。
aws guardduty --region us-east-1
get-coverage-statistics --detector-id 12abc34d567e8fa901bc2d34e56789f0
--statistics-type COUNT_BY_COVERAGE_STATUS
--filter-criteria '{"FilterCriterion":[{"CriterionKey":"ACCOUNT_ID
", "FilterCondition":{"EqualsValue":"123456789012"}}] }'
如果 EKS 叢集的涵蓋範圍狀態為運作狀態不良,請參閱對 Amazon EKS 執行期涵蓋範圍問題進行故障診斷。
使用 EventBridge 通知變更涵蓋狀態
您帳戶中 EKS 叢集的涵蓋範圍狀態可能會顯示為運作狀態不良。若要偵測涵蓋範圍狀態何時變成運作狀態不良,建議您定期監控涵蓋範圍狀態,並在狀態為運作狀態不良時進行疑難排解。或者,您也可以建立 Amazon EventBridge 規則,以便在涵蓋範圍狀態從 Unhealthy
變更成 Healthy
或其他狀態時通知您。GuardDuty 預設在您帳戶的EventBridge 匯流排中發布此通知。
範例通知結構描述
在 EventBridge 規則中,您可以使用預先定義的範例事件和事件模式來接收涵蓋範圍狀態通知。如需有關建立 EventBridge 規則的詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的建立規則。
此外,您可以使用下列範例通知結構描述來建立自訂事件模式。請務必替換您帳戶的值。若要在 Amazon EKS 叢集的涵蓋範圍狀態從 變更為 Healthy
時收到通知Unhealthy
, detail-type
應該是 GuardDuty Runtime Protection Unhealthy
。若要在涵蓋範圍狀態從 Unhealthy
變更成 Healthy
時收到通知,請使用 GuardDuty 執行期監控運作狀態不良
取代 detail-type
的值。
{
"version": "0",
"id": "event ID",
"detail-type": "GuardDuty Runtime Protection Unhealthy
",
"source": "aws.guardduty",
"account": "AWS 帳戶 ID",
"time": "event timestamp (string)",
"region": "AWS 區域",
"resources": [
],
"detail": {
"schemaVersion": "1.0",
"resourceAccountId": "string",
"currentStatus": "string",
"previousStatus": "string",
"resourceDetails": {
"resourceType": "EKS",
"eksClusterDetails": {
"clusterName": "string",
"availableNodes": "string",
"desiredNodes": "string",
"addonVersion": "string"
}
},
"issue": "string",
"lastUpdatedAt": "timestamp"
}
}
對 Amazon EKS 執行期涵蓋範圍問題進行故障診斷
如果 EKS 叢集的涵蓋範圍狀態為 Unhealthy
,您可以在 GuardDuty 主控台的問題資料欄下方檢視對應的錯誤,或使用 CoverageResource 資料類型檢視對應的錯誤。
使用包含或排除標籤選擇性地監控 EKS 叢集時,標籤可能需要一些時間才能同步。這可能會影響相關聯 EKS 叢集的涵蓋範圍狀態。您可以嘗試再次移除和新增對應的標籤 (包含或排除)。如需詳細資訊,請參閱《Amazon ECS 使用者指南》中的為您的 Amazon EKS 資源加上標籤。
涵蓋範圍問題的結構是 Issue type:Extra information
。這些問題一般會有選用的額外資訊,其中可能包含特定的用戶端例外狀況或與問題相關的描述。根據其他資訊,下表提供建議的步驟,以針對 EKS 叢集的涵蓋範圍問題進行疑難排解。
問題類型 (字首) |
額外資訊 |
建議的疑難排解步驟 |
附加元件建立失敗 |
附加元件 aws-guardduty-agent 不相容於 ClusterName 叢集目前的叢集版本。不支援指定的附加元件。 |
請確保您使用的是支援 aws-guardduty-agent EKS 附加元件部署的其中一個 Kubernetes 版本。如需詳細資訊,請參閱GuardDuty 安全代理程式支援的 Kubernetes 版本。如需有關更新您的 Kubernetes 版本的資訊,請參閱更新 Amazon EKS 叢集 Kubernetes 版本。
|
附加元件建立失敗
附加元件更新失敗
附加元件狀態不良 |
EKS 附加元件問題 - AddonIssueCode :AddonIssueMessage |
如需特定附加元件問題碼的建議步驟資訊,請參閱 Troubleshooting steps for Addon creation/updatation error with Addon issue code。
如需您在此問題中可能遇到的附加元件問題代碼清單,請參閱 AddonIssue。
|
VPC 端點建立失敗
|
共用 VPC vpcId 不支援建立 VPC 端點
|
執行期監控現在支援在組織內使用共用 VPC。請確定您的帳戶符合所有先決條件。如需詳細資訊,請參閱使用共用 VPC 的先決條件。
|
只有在搭配自動代理程式組態使用共用 VPC 時
共用 VPC vpcId 的擁有者帳戶 ID 111122223333 未啟用執行期監控、自動代理程式組態或兩者。
|
共用 VPC 擁有者帳戶必須至少為一種資源類型 (Amazon EKS 或 Amazon ECS (AWS Fargate)) 啟用執行期監控和自動代理程式組態。如需詳細資訊,請參閱GuardDuty 執行期監控的特定先決條件。 |
啟用私有 DNS 需要 enableDnsSupport 和 enableDnsHostnames VPC 屬性針對 vpcId 設定為 true (服務:Ec2、狀態碼:400,請求 ID:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 )。 |
請確保將下列 VPC 屬性設定為 true :enableDnsSupport 和 enableDnsHostnames 。如需詳細資訊,請參閱 VPC 中的 DNS 屬性。
如果您造訪 https://console.aws.amazon.com/vpc/ 以使用 Amazon VPC 主控台建立 Amazon VPC,請務必選擇啟用 DNS 主機名稱和啟用 DNS 解析。如需詳細資訊,請參閱 VPC 組態選項。 |
共用 VPC 端點刪除失敗 |
帳戶 ID 111122223333 、共用 VPC vpcId 、擁有者帳戶 ID 555555555555 不允許刪除共用 VPC 端點。 |
可能的步驟:
-
停用共用 VPC 參與者帳戶的執行期監控狀態不會影響共用 VPC 端點政策和存在於擁有者帳戶中的安全群組。
若要刪除共用 VPC 端點和安全群組,您必須在共用 VPC 擁有者帳戶中停用執行期監控或自動代理程式組態狀態。
-
共用 VPC 參與者帳戶無法刪除託管在共用 VPC 擁有者帳戶中的共用 VPC 端點和安全群組。
|
本機 EKS 叢集 |
本機 Outpost 叢集不支援 EKS 附加元件。 |
不可行。
如需詳細資訊,請參閱 Amazon EKS on AWS outposts。
|
未授予 EKS 執行期監控啟用許可 |
(不一定會顯示其他資訊) |
-
如果此問題有額外資訊可用,請修正根本原因,然後依照下一個步驟進行。
-
切換 EKS 執行期監控以關閉此功能,然後再重新開啟。確保也會部署 GuardDuty 代理程式,無論是透過 GuardDuty 自動還是手動進行部署。
|
EKS 執行期監控啟用資源佈建進行中 |
(不一定會顯示其他資訊) |
不可行。
啟用 EKS 執行期監控之後,在資源佈建步驟完成之前,涵蓋範圍狀態可能保持為 Unhealthy 。涵蓋範圍狀態會得到定期監控和更新。 |
其他 (任何其他問題) |
由於授權失敗而發生錯誤 |
切換 EKS 執行期監控以關閉此功能,然後再重新開啟。確保也會部署 GuardDuty 代理程式,即透過 GuardDuty 自動或手動進行部署。 |
使用附加元件問題碼對附加元件建立/上傳錯誤的步驟進行故障診斷
附加元件建立或更新錯誤 |
疑難排解步驟 |
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為它沒有所需的複本數量。
|
-
您可以使用問題訊息來識別和修正根本原因。您可以從描述叢集開始。例如,使用 kubectl describe pods 來識別 Pod 失敗的根本原因。
修正根本原因後,請重試 步驟 (附加元件建立或更新)。
-
如果問題仍然存在,請驗證 Amazon EKS 叢集的 VPC 端點是否已正確設定。如需詳細資訊,請參閱驗證 VPC 端點組態。
|
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為一個或多個 Pod 未排程0/x 節點可用:x Insufficient cpu. preemption: not eligible due to preemptionPolicy=Never 。
|
若要解決此問題,您可以執行下列項目之一:
-
將 GuardDuty 代理程式的 Pod 優先順序更新為:將 PriorityClass 可設定的參數和值設定為支援 preemptionPolicy 值的任何一個選項PreemptLowerPriority 。如需 Pod 優先順序的資訊,請參閱 Kubernetes 文件中的 Pod 優先順序和先佔。
-
擴展執行個體:如需管理您的資源和選擇最佳執行個體,請參閱《Amazon EKS 使用者指南》中的使用節點管理運算資源和選擇最佳 Amazon EC2 節點執行個體類型。 Amazon EC2
訊息會顯示 o/x ,因為 GuardDuty 只會報告第一個找到的錯誤。GuardDuty 協助程式集中執行中的 Pod 實際數量可能大於 0。
|
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為一個或多個 Pod 未排程0/x 節點可用:x Too many pods. preemption: not eligible due to preemptionPolicy=Never 。
|
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為一個或多個 Pod 未排程0/x 節點可用:1 Insufficient memory. preemption: not eligible due to preemptionPolicy=Never 。
|
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為一或多個 Pod 有等待中的容器 CrashLoopBackOff: Completed
|
您可以檢視與 Pod 相關聯的日誌,並識別問題。如需如何執行此操作的資訊,請參閱 Kubernetes 文件中的偵錯執行中的 Pod。
使用以下檢查清單來疑難排解此附加元件問題:
-
驗證已啟用執行期監控。
-
驗證是否符合 Amazon EKS 叢集支援的先決條件,例如已驗證的作業系統分佈和支援的 Kubernetes 版本。
-
當您手動管理安全代理程式時,請確認您已建立所有 VPC VPCs 端點。當您啟用 GuardDuty 自動化組態時,您仍應驗證 VPC 端點是否已建立。例如,在自動化組態中使用共用 VPC 時。
若要驗證此項目,請參閱 驗證 VPC 端點組態。
-
確認 GuardDuty 安全代理程式能夠解析 GuardDuty VPC 端點私有 DNS。若要了解端點,請參閱 中端點的私有 DNS 名稱管理 GuardDuty 安全代理程式。
若要這樣做,您可以在 Windows 或 Mac 上使用 nslookup 工具,或在 Linux 上使用 dig 工具。使用 nslookup 時,您可以將 region us-west-2 取代為您的區域之後,可以使用下列命令:
nslookup guardduty-data.us-west-2 .amazonaws.com
-
驗證您的 GuardDuty VPC 端點政策或服務控制政策是否不會影響guardduty:SendSecurityTelemetry 動作。
|
EKS 附加元件問題 - InsufficientNumberOfReplicas :附加元件運作狀態不佳,因為一或多個 Pod 有等待中的容器 CrashLoopBackOff: Error
|
您可以檢視與 Pod 相關聯的日誌,並識別問題。如需如何執行此操作的資訊,請參閱 Kubernetes 文件中的偵錯執行中的 Pod。
找出問題之後,請使用下列檢查清單進行疑難排解:
|
EKS 附加元件問題 - AdmissionRequestDenied : 許可 Webhook "validate.kyverno.svc-fail" 拒絕請求:DaemonSet/amazon-guardduty/aws-guardduty-agent 資源違規政策: restrict-image-registries:autogen-validate-registries : ... |
-
Amazon EKS 叢集或安全管理員必須檢閱封鎖附加元件更新的安全政策。
-
您必須停用控制器 (webhook ) 或讓控制器接受來自 Amazon EKS 的請求。
|
EKS 附加元件問題 - ConfigurationConflict :嘗試套用時發現衝突。由於解析衝突模式而無法繼續。 Conflicts: DaemonSet.apps aws-guardduty-agent - .spec.template.spec.containers[name="aws-guardduty-agent"].image |
建立或更新附加元件時,請提供OVERWRITE 解析衝突旗標。這可能會覆寫使用 Kubernetes API 直接對 Kubernetes 中相關資源所做的任何變更。
您可以先從叢集移除 Amazon EKS 附加元件,然後重新安裝。
|
EKS 附加元件問題 - AccessDenied: priorityclasses.scheduling.k8s.io "aws-guardduty-agent.priorityclass" is forbidden: User "eks:addon-manager" cannot patch resource "priorityclasses" in API group "scheduling.k8s.io" at the cluster scope |
您必須eks:addon-cluster-admin ClusterRoleBinding 手動將缺少的許可新增至 。將下列項目yaml 新增至 eks:addon-cluster-admin :
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: eks:addon-cluster-admin
subjects:
- kind: User
name: eks:addon-manager
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
您現在可以使用下列命令yaml 將此項目套用至 Amazon EKS 叢集:
kubectl apply -f eks-addon-cluster-admin.yaml
|
AddonUpdationFailed:EKSAddonIssue - AccessDenied: namespaces\"amazon-guardduty\"isforbidden:User\"eks:addon-manager\"cannotpatchresource\"namespaces\"inAPIgroup\"\"inthenamespace\"amazon-guardduty\"
|
EKS 附加元件問題 - AccessDenied: admission webhook "validation.gatekeeper.sh" denied the request: [all-namespace-must-have-label-owner] All namespaces must have an `owner` label |
您必須停用控制器,或讓控制器接受來自 Amazon EKS 叢集的請求。
在建立或更新附加元件之前,您也可以建立 GuardDuty 命名空間並將其標記為 owner 。
|
EKS 附加元件問題 - AccessDenied: admission webhook "validation.gatekeeper.sh" denied the request: [all-namespace-must-have-label-owner] All namespaces must have an `owner` label |
您必須停用控制器,或讓控制器接受來自 Amazon EKS 叢集的請求。
在建立或更新附加元件之前,您也可以建立 GuardDuty 命名空間並將其標記為 owner 。 |
EKS 附加元件問題 - AccessDenied: admission webhook "validation.gatekeeper.sh" denied the request: [allowed-container-registries] container <aws-guardduty-agent> has an invalid image registry |
將 GuardDuty 的映像登錄檔新增至您的許可控制器allowed-container-registries 中的 。如需詳細資訊,請參閱 中的適用於 EKS v1.8.1-eks-build.2 的 ECR 儲存庫。 託管 GuardDuty 代理程式的 Amazon ECR 儲存庫
|