Quero verificar se a aplicação de patches do sistema operacional (SO) AWS Fargate excluíram meus pods ou nós do Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Para manter os nós seguros, o Amazon EKS realiza a aplicação de patches periodicamente do SO dos nós Fargate. Durante o processo de aplicação de patches, o Amazon EKS recicla os nós para instalar patches do SO. Na aplicação de patches do SO Fargate, o Amazon EKS usa a API de remoção para drenar o pod com segurança e registra a API nos logs de auditoria do Amazon EKS. Se a aplicação de patches do SO Fargate ocorreu, confirme se os logs da API de remoção aparecem nos logs de auditoria. Para obter mais informações, consulte The Eviction API (a API de remoção) no site do Kubernetes.
Resolução
Para verificar se a API de remoção aparece nos logs de auditoria, use o exemplo de consulta a seguir:
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/"
Observação: Substitua NAMESPACE e pod-name por seus valores. Para restringir sua janela de pesquisa, modifique a janela de tempo no Amazon CloudWatch.
Exemplo de saída do log de auditoria:
{
"@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
}
},
Observação: Para limitar o número de pods que ficam inativas ao mesmo tempo em que são recicladas, defina orçamentos de interrupção de pods. Para obter mais informações, consulte Specifying a disruption budget for your application (Especificar um orçamento de interrupção para sua aplicação) no site do Kubernetes.
Informações relacionadas
API-initiated eviction (Remoção iniciada por API) no site do Kubernetes