我想確認 AWS Fargate 作業系統 (OS) 修補是否刪除了我的 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 或節點。
簡短描述
為了保持節點的安全,Amazon EKS 會定期為 Fargate 節點修補作業系統。在修補過程中,Amazon EKS 會回收節點以安裝作業系統修補程式。在 Fargate 作業系統修補 中,Amazon EKS 使用移出 API 來安全地清空 Pod,並將該 API 記錄於 Amazon EKS 稽核日誌中。如果已執行 Fargate 作業系統修補,請確認稽核日誌中是否出現移出 API 的記錄。如需更多資訊,請參閱 Kubernetes 網站上的移出 API。
解決方法
若要確認移出 API 是否出現在稽核日誌中,請使用以下範例查詢:
filter @logStream like /^kube-apiserver-audit/ | fields @timestamp, user.username, user.extra.canonicalArn.0, @message
| sort @timestamp desc
| filter verb == "create" and objectRef.subresource == 'eviction'
| filter requestURI like "/api/v1/namespaces/NAMESPACE/pods/pod-name/"
**注意:**請將 NAMESPACE 和 pod-name 替換為您的值。如需縮小搜尋範圍,請在 Amazon CloudWatch 中調整時間範圍。
稽核日誌範例輸出結果:
{
"@logStream": "kube-apiserver-audit",
"@timestamp": "xxx",
"@message": {
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
・・・
"stage": "ResponseComplete",
"requestURI": "/api/v1/namespaces/<Namespace>/pods/<Pod_Name>/eviction.."
"verb": "create",
"user": {
"username": "<username>",
・・・
},
"userAgent": "<agent>",
"objectRef": {
"resource": "pods",
"namespace": "xxx",
"name": "xxx",
"apiVersion": "v1",
"subresource": "eviction"
},
"responseStatus": {
"metadata": {},
"status": "Success",
"code": 201
},
"requestObject": {
"kind": "Eviction",
"apiVersion": "policy/v1beta1",
"metadata": {
"name": "xxx",
"namespace": "xxx",
"creationTimestamp": null
}
},
**注意:**若要限制 Pod 回收時同時停機的 Pod 數量,請設定 Pod 中斷預算。如需詳細資訊,請參閱 Kubernetes 網站上的為應用程式指定中斷預算。
相關資訊
Kubernetes 網站上的由 API 發起的移出