Direkt zum Inhalt

Wie konfiguriere ich Amazon EKS-Worker-Knoten, um den Image-Cache bei einem bestimmten Prozentsatz der Festplattennutzung zu bereinigen?

Lesedauer: 4 Minute
0

Ich möchte Amazon Elastic Kubernetes Service (Amazon EKS) Worker-Knoten verwenden, um den Image-Cache bei einem bestimmten Prozentsatz der Festplattennutzung zu bereinigen.

Kurzbeschreibung

Verwende die folgenden Kubelet-Garbage Collection-Argumente, um den Image-Cache mit Amazon EKS-Worker-Knoten zu bereinigen:

  • **---image-gc-high-threshold ** definiert den Prozentsatz der Festplattennutzung, mit dem Kubelet beginnt, die Image-Garbage-Collection auszuführen.
    Hinweis: Die Standardeinstellung für dieses Argument beträgt 85 %.
  • **--image-gc-low-threshold ** definiert den niedrigsten Prozentsatz der Festplattennutzung, auf dem Kubelet die Kubelet-Image-Garbage-Collection ausführt.
    Hinweis: Die Standardeinstellung für dieses Argument beträgt 80 %.

Füge je nach Anwendungsfall die Kubelet-Garbage-Collection zur Standardkonfigurationsdatei oder zu einem vorhandenen Knoten hinzu. Stelle dann sicher, dass die Argumente im Knotenendpunkt vorhanden sind.

Weitere Informationen findest du auf der Kubernetes-Website unter Garbage Collection ungenutzter Container und Images.

Behebung

Hinweis: Die folgende Lösung gilt für Linux Amazon Machine Images (AMIs), die für Amazon EKS optimiert sind.

Hinzufügen der Kubelet Garbage Collection-Argumente zur Standard-Kubelet-Konfiguration

Führe die folgenden Schritte aus:

  1. Führe den folgenden Befehl aus, um die Datei kubelet-config im AMI zu aktualisieren:
    #!/bin/bashset -o xtrace
    
    KUBELET_CONFIG=/etc/kubernetes/kubelet/kubelet-config.json
    
    # Inject imageGCHighThresholdPercent value unless it has already been set.
    if ! grep -q imageGCHighThresholdPercent $KUBELET_CONFIG;
    then
    echo "$(jq ".imageGCHighThresholdPercent=70" $KUBELET_CONFIG)" > $KUBELET_CONFIG
    fi
    
    # Inject imageGCLowThresholdPercent value unless it has already been set.
    if ! grep -q imageGCLowThresholdPercent $KUBELET_CONFIG;
    then
    echo "$(jq ".imageGCLowThresholdPercent=60" $KUBELET_CONFIG)" > $KUBELET_CONFIG
    fi
    
    /etc/eks/bootstrap.sh your-cluster-name
    Hinweis: Ersetze your_cluster_name durch den Amazon EKS-Clusternamen. Wenn du nicht die Standard-Kubelet-Konfigurationsdatei verwenden, ersetze kubelet-config.json durch den Dateinamen. Der vorhergehende Befehl setzt imageGCHighThresholdPercent auf 70 % und ImageGClowThresholdPercent auf 60 %. Infolgedessen bereinigt Kubelet den Image-Cache im Worker-Knoten, wenn die Festplattennutzung 70 % erreicht. Wenn die Festplattennutzung weniger als 60 % beträgt, bereinigt Kubelet den Image-Cache nicht.
  2. Erstelle eine Worker-Knotengruppe mit der Startvorlage.

Die Kubelet Garbage Collection-Argumente zu einem vorhandenen Worker-Knoten hinzufügen

Voraussetzungen: Du musst über SSH-Verbindungszugriff zu einem vorhandenen Worker-Knoten verfügen und über Sudo-Zugriff verfügen.

Gehe wie folgt vor, um einem vorhandenen Worker-Knoten Kubelet-Garbage Collection-Argumente hinzuzufügen:

  1. Verwende SSH, um eine Verbindung zu einem vorhandenen Worker-Knoten herzustellen.

  2. Führe den folgenden Befehl aus, um die Datei /etc/kubernetes/kubelet/kubelet-config.json im Worker-Knoten zu öffnen:

    sudo vi /etc/kubernetes/kubelet/kubelet-config.json

    Wenn du den Worker-Knoten mit eksctl gestartet hast, führe den folgenden Befehl aus, um /etc/eksctl/kubelet.yaml zu öffnen:

    sudo vi /etc/eksctl/kubelet.yaml
  3. Füge die Kubelet-Garbage Collection-Argumente zur Datei kubelet-config.json hinzu und speichere dann die Datei. Beispieldatei:

    {  "kind": "KubeletConfiguration",  "apiVersion": "kubelet.config.k8s.io/v1beta1",
      .
      .
      .
      "imageGCHighThresholdPercent": 70,         ==> Add the argument under the same alignment as the "kind"
      "imageGCLowThresholdPercent": 60,
      "maxPods": ...
    }

    Hinweis: Der vorhergehende Befehl setzt ImageGCHighThresholdPercent auf 70 % und ImageGClowThresholdPercent auf 60 %.
    Wenn du den Worker-Knoten mit eksctl gestartet hast, füge die Kubelet-Garbage Collection-Argumente zur kubelet.yaml-Datei hinzu und speichere die Datei dann. Beispieldatei:

    kind: KubeletConfiguration
    kubeReserved:
      cpu: 70m
      ephemeral-storage: 1Gi
      memory: 1843Mi
    serverTLSBootstrap: true
    imageGCHighThresholdPercent: 70        ==> Add the arguments under the alignment "Kind" in the yaml file
    imageGCLowThresholdPercent: 60

    Hinweis: Der vorhergehende Befehl setzt ImageGCHighThresholdPercent auf 70 % und ImageGClowThresholdPercent auf 60 %.

  4. Führe den folgenden Befehl aus, um den Kubelet-Dienst im Worker-Knoten neu zu starten:

    sudo service kubelet restart
  5. Wiederhole die vorherigen Lösungsschritte für jeden vorhandenen Worker-Knoten im Amazon EKS-Cluster.

Sicherstellen, dass sich die neuen Kubelet Garbage Collection-Argumente im Configz-Endpunkt des Knotens befinden

Führe die folgenden Schritte aus:

  1. Führen den folgenden Befehl aus, um den Namen der Worker-Knoten abzurufen:

    kubectl get nodes
  2. Führe den folgenden Befehl aus, um eine Verbindung zum API-Server herzustellen:

    kubectl proxy
  3. Um die Konfiguration des Knotens zu überprüfen, öffne ein neues Terminal und führe dann den folgenden Befehl aus:

    curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool

    Hinweis: Ersetzen node_name durch deinen Knotennamen. Wenn du curl oder Python nicht verwenden kannst, öffne die URL http://localhost:8001/api/v1/nodes/node_name/proxy/configz in einem Webbrowser.
    Beispielausgabe:

    {"kubeletconfig": {  .
      .
      "imageGCHighThresholdPercent": 70,          <=== The new value is set to 70 as given in UserData
      "imageGCLowThresholdPercent": 60,           <=== The new value is set to 50 as given in UserData
      .
      .
    }
    }

    Hinweis: Die vorherige Befehlsausgabe zeigt die Einstellungen für die Datei bootstrap.sh aus der Datei kubeletconfig.

AWS OFFICIALAktualisiert vor 9 Monaten