Direkt zum Inhalt

Wie überprüfe ich, ob das Patchen des Betriebssystems von AWS Fargate meine Pods oder Knoten gelöscht hat?

Lesedauer: 2 Minute
0

Ich möchte überprüfen, ob durch das Patchen des Betriebssystems (OS) von AWS Fargate meine Amazon Elastic Kubernetes Service (Amazon EKS)-Pods oder -Knoten gelöscht wurden.

Kurzbeschreibung

Um die Sicherheit der Knoten zu gewährleisten, patcht Amazon EKS regelmäßig das Betriebssystem für Fargate-Knoten. Während des Patch-Vorgangs recycelt Amazon EKS die Knoten, um Betriebssystem-Patches zu installieren. Beim Patching des Betriebssystems von Fargate verwendet Amazon EKS die Bereinigungs-API, um den Pod sicher zu leeren und zeichnet die API in Amazon EKS-Audit-Protokollen auf. Wenn ein Patching des Betriebssystems von Fargate stattgefunden hat, vergewissere dich, dass die Protokolle für die Bereinigungs-API in den Audit-Protokollen erscheinen. Weitere Informationen findest du in der Bereinigungs-API auf der Kubernetes-Website.

Lösung

Verwende die folgende Beispielabfrage, um zu überprüfen, ob die Bereinigungs-API in den Audit-Protokollen erscheint:

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/"

Hinweis: Ersetze NAMESPACE und pod-name durch deine Werte. Um das Suchfenster einzugrenzen, ändere das Zeitfenster in Amazon CloudWatch.
Beispiel für eine Audit-Protokollausgabe:

{
        "@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
                }
            },

Hinweis: Um die Anzahl der Pods zu begrenzen, die zur selben Zeit ausfallen, wenn Pods recycelt werden, lege Unterbrechungsbudgets für Pods fest. Weitere Informationen findest du auf der Kubernetes-Website unter Angeben eines Unterbrechungsbudgets für die Anwendung.

Ähnliche Informationen

API-initiierte Bereinigung auf der Kubernetes-Website