AWS Fargate 운영 체제(OS) 패치로 인해 내 Amazon Elastic Kubernetes Service(Amazon EKS) 포드나 노드가 삭제되었는지 확인하고 싶습니다.
간략한 설명
Amazon EKS에서는 노드의 보안을 유지하기 위해 Fargate 노드용 OS를 정기적으로 패치합니다. 이 패치 프로세스 중에 노드를 재활용해 OS 패치를 설치합니다. Amazon EKS는 Fargate OS 패치 과정에서 제거 API를 사용해 포드를 안전하게 비우고 Amazon EKS 감사 로그에 API를 기록합니다. Fargate OS가 패치된 경우 감사 로그에 제거 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
}
},
**참고:**포드 재활용 시 동시에 다운되는 포드 수를 제한하려면 포드 중단 예산을 설정하세요. 자세한 내용은 Kubernetes 웹 사이트에서 애플리케이션의 중단 예산 지정을 참고하세요.
관련 정보
API 실행 제거(Kubernetes 웹 사이트)