Je souhaite vérifier si l’application de correctifs pour le système d’exploitation AWS Fargate a supprimé mes nœuds ou pods Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
Pour garantir la sécurité des nœuds, Amazon EKS applique régulièrement des correctifs au système d’exploitation concernant les nœuds Fargate. Pendant le processus d’application des correctifs, Amazon EKS recycle les nœuds pour installer les correctifs du système d’exploitation. Dans le cadre de l’application de correctifs au système d’exploitation Fargate, Amazon EKS utilise l’API d’éviction pour drainer le pod en toute sécurité et enregistre l’API dans les journaux d’audit Amazon EKS. Si des correctifs ont été appliqués au système d’exploitation Fargate, vérifiez que les journaux relatifs à l’API d’éviction apparaissent dans les journaux d’audit. Pour en savoir plus, consultez la page Eviction API du site Web Kubernetes.
Résolution
Pour vérifier que l’API d’éviction apparaît dans les journaux d’audit, utilisez l’exemple de requête suivant :
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/"
Remarque : remplacez NAMESPACE et pod-name par vos valeurs. Pour affiner votre fenêtre de recherche, modifiez la plage horaire dans Amazon CloudWatch.
Exemple de sortie du journal d’audit :
{
"@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
}
},
Remarque : pour limiter le nombre de pods arrêtés en même temps pendant le recyclage des pods, définissez des budgets d’interruption des pods. Pour en savoir plus, consultez la page Specifying a disruption budget for your application du site Web Kubernetes.
Informations connexes
Page API-initiated eviction du site Web Kubernetes