Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ AKS Automatic ✔️ AKS Standard
Für die Erstellung und Bereitstellung von Images in AKS-Clustern (Azure Kubernetes Service) werden häufig Pipelines verwendet. Dieser Prozess eignet sich zwar sehr gut für die Imageerstellung, vernachlässigt aber die zurückbleibenden veralteten Images und kann zu einer Überfrachtung von Images auf Clusterknoten führen. Diese Images könnten Sicherheitsrisiken enthalten, die zu Sicherheitsproblemen führen könnten. Um Sicherheitsrisiken in Ihren Clustern zu beseitigen, können Sie diese nicht referenzierten Images bereinigen. Das manuelle Bereinigen von Images kann zeitintensiv sein. Image Cleaner führt die automatische Imageerkennung und -entfernung durch, sodass das Risiko veralteter Images verringert und die Zeit für das Bereinigen reduziert wird.
AKS Automatic ist die empfohlene, produktionsreife Standardeinstellung für die meisten AKS-Workloads. Image Cleaner ist auf AKS Automatic-Clustern standardmäßig vorkonfiguriert, um nicht verwendete Images mit Sicherheitsrisiken zu entfernen.
Auf AKS Standard-Clustern ist Image Cleaner optional, und Sie aktivieren es explizit.
Weitere Informationen zu AKS Automatic finden Sie unter Was ist Azure Kubernetes Service (AKS) Automatisch?
Hinweis
Image Cleaner ist ein Feature, das auf Eraser basiert. Bei AKS lauten der Funktionsname und der Eigenschaftsname Image Cleaner, während die Namen der entsprechenden Image-Cleaner-Pods Eraser enthalten.
Verhalten von AKS Automatic und AKS Standard
Voraussetzungen
- Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
- Für die AKS Standard-Konfiguration über Azure CLI ist Azure CLI, Version 2.49.0 oder höher, erforderlich. Führen Sie
az --versionaus, um Ihre Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Begrenzungen
Image Cleaner unterstützt noch keine Windows-Knotenpools oder virtuelle AKS-Knoten.
So funktioniert Image Cleaner
Wenn Sie Image Cleaner auf Ihrem Cluster aktivieren, wird ein Controller-Manager-Pod mit dem Namen eraser-controller-manager bereitgestellt.
Image Cleaner unterstützt automatische und manuelle Bereinigungsmodi.
Konfigurationsoptionen für AKS Standard
Verwenden Sie diese Optionen beim Konfigurieren von Image Cleaner auf AKS Standard mit Azure CLI.
| Name | BESCHREIBUNG | Erforderlich |
|---|---|---|
--enable-image-cleaner |
Aktivieren von Image Cleaner für einen AKS-Cluster | Ja, es sei denn, Sie geben an: |
--disable-image-cleaner |
Deaktivieren des Bildreinigers für einen AKS-Cluster | Ja, es sei denn, Sie geben „enable“ an. |
--image-cleaner-interval-hours |
Intervall in Stunden für zeitgesteuerte Ausführungen deaktivieren. Azure CLI Standard ist eine Woche. Der Mindestwert beträgt 24 Stunden. Maximal drei Monate. | Nicht erforderlich für Azure CLI; erforderlich für ARM-Vorlage oder andere Clients |
Hinweis
Wenn Sie Image Cleaner deaktivieren und später erneut aktivieren, ohne die Konfiguration explizit zu übergeben, wird der vorherige Konfigurationswert wiederverwendet.
Automatischer Modus
Wenn Sie eraser-controller-manager bereitstellen, führt Image Cleaner automatisch die folgenden Aktionen aus:
- Startet die Bereinigung und erstellt
eraser-aks-xxxxxWorker-Pods für jeden Knoten. - Verwendet einen Sammelcontainer zum Sammeln nicht verwendeter Images.
- Verwendet einen Trivy-Scannercontainer , um Sicherheitsrisiken mit Trivy zu scannen.
- Verwendet einen Remover-Container , um nicht verwendete Images mit Sicherheitsrisiken zu entfernen.
- Löscht den Worker-Pod nach Abschluss.
- Plant die nächste Bereinigung gemäß
--image-cleaner-interval-hours.
Manueller Modus
Sie können die Bereinigung auch manuell auslösen, indem Sie ein CRD-Objekt (ImageList) definieren. Dadurch wird eraser-contoller-manager ausgelöst, um eraser-aks-xxxxx-Workerpods für jeden Knoten zu erstellen und den manuellen Entfernungsprozess abzuschließen.
Hinweis
Nach dem Deaktivieren von Image Cleaner ist die alte Konfiguration weiterhin vorhanden. Bei der erneuten Aktivierung des Features ohne explizites Übergeben einer Konfiguration wird somit der vorhandene Wert anstelle des Standardwerts verwendet.
Verwenden von Image Cleaner auf AKS Automatic und AKS Standard
AKS Automatik
Image Cleaner ist auf AKS Automatic Clusters vorkonfiguriert, die für die meisten AKS-Workloads die empfohlene produktionsbereite Standardeinstellung sind. Sie müssen keinen separaten Aktivierungsbefehl ausführen.
Informationen zum Erstellen eines automatischen AKS-Clusters finden Sie unter Erstellen eines automatischen AKS-Clusters.
Verwenden Sie die Anleitungen zur manuellen Bereinigung und Überwachung in diesem Artikel, wenn Sie eine gezielte Korrektur oder betriebstechnische Überprüfung wünschen.
AKS Standard: in einem neuen Cluster aktivieren
Aktivieren Sie Image Cleaner auf einem neuen AKS Standard-Cluster mithilfe des az aks create Befehls mit dem --enable-image-cleaner Parameter.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
AKS Standard: Aktivieren eines vorhandenen Clusters
Aktivieren Sie Image Cleaner auf einem vorhandenen AKS Standard-Cluster mithilfe des az aks update Befehls.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: Updateintervall für einen neuen oder vorhandenen Cluster
Aktualisieren Sie das Image Cleaner-Intervall für einen neuen oder vorhandenen AKS Standardcluster mithilfe des --image-cleaner-interval-hours Parameters.
# Create a new cluster with specifying the interval
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--image-cleaner-interval-hours 48 \
--generate-ssh-keys
# Update the interval on an existing cluster
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--image-cleaner-interval-hours 48
Manuelles Entfernen von Images mithilfe von Image Cleaner
Wichtig
name muss auf imagelist festgelegt werden.
Entfernen Sie ein Abbild manuell mithilfe des folgenden kubectl apply-Befehls. In diesem Beispiel wird das Image docker.io/library/alpine:3.7.3 entfernt, wenn es nicht verwendet wird.
cat <<EOF | kubectl apply -f -
apiVersion: eraser.sh/v1
kind: ImageList
metadata:
name: imagelist
spec:
images:
- docker.io/library/alpine:3.7.3
EOF
Die manuelle Bereinigung ist ein einmaliger Vorgang und wird nur ausgelöst, wenn eine neue imagelist erstellt wird oder an der vorhandenen imagelist Änderungen vorgenommen werden. Nach dem Löschen des Images wird imagelist nicht automatisch gelöscht.
Wenn Sie eine weitere manuelle Bereinigung auslösen möchten, müssen Sie ein neues imagelist erstellen oder ein vorhandenes imagelist ändern. Wenn Sie dasselbe Bild noch einmal entfernen möchten, müssen Sie ein neues imagelist erstellen.
Löschen Sie eine vorhandene ImageList, und erstellen Sie eine neue.
Löschen Sie das alte
imagelistmit dem Befehlkubectl delete.kubectl delete ImageList imagelistErstellen Sie ein neues
imagelistmit demselben Image-Namen. Im folgenden Beispiel wird das gleiche Image wie im vorherigen Beispiel verwendet:cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Vorhandene Bildliste ändern
Ändern Sie die vorhandene imagelist mit dem Befehl kubectl edit.
kubectl edit ImageList imagelist
# Add a new image to the list
apiVersion: eraser.sh/v1
kind: ImageList
metadata:
name: imagelist
spec:
images:
docker.io/library/python:alpine3.18
Bei Verwendung des manuellen Modus wird der eraser-aks-xxxxx-Pod innerhalb von 10 Minuten nach Abschluss des Vorgangs gelöscht.
Liste ausgeschlossener Bilder
Images, die in der Ausschlussliste angegeben sind, werden nicht aus dem Cluster entfernt. Image Cleaner unterstützt systemseitige und benutzerdefinierte Ausschlusslisten. Das Bearbeiten der Systemausschlussliste wird nicht unterstützt.
Überprüfen der Systemausschlussliste
Überprüfen Sie die Systemausschlussliste mit dem folgenden kubectl get-Befehl.
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Erstellen einer benutzerdefinierten Ausschlussliste
Erstellen Sie eine JSON-Beispieldatei, die ausgeschlossene Images enthält.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFErstellen Sie mithilfe der JSON-Beispieldatei ein
configmapmit dem folgendenkubectl create- undkubectl label-Befehl.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Image Cleaner auf AKS Standard deaktivieren
Deaktivieren Sie "Image Cleaner" auf einem AKS Standard-Cluster mithilfe des az aks update Befehls mit dem --disable-image-cleaner Parameter.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Häufig gestellte Fragen (FAQs)
Ist "Image Cleaner" standardmäßig auf AKS Automatic aktiviert?
Ja. Image Cleaner ist auf AKS Automatic Clusters vorkonfiguriert.
Muss ich für Image Cleaner in AKS Automatic Befehle zum Aktivieren ausführen?
Nein. Verwenden Sie die Aktivierungsbefehle für AKS Standard.
Wie kann ich überprüfen, welche Version Image Cleaner verwendet?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Unterstützt Image Cleaner neben dem Trivy-Scanner noch weitere Tools zum Überprüfen auf Sicherheitsrisiken?
Nein.
Kann ich Sicherheitsrisikostufen angeben, nach denen Images bereinigt werden?
Nein. Zu den Standardeinstellungen für Sicherheitsrisikostufen gehören folgende:
-
LOW, -
MEDIUM, -
HIGH, und CRITICAL
Sie können die Standardeinstellungen nicht anpassen.
Wie überprüfe ich, ob Images von Image Cleaner bereinigt wurden?
Image-Logs werden im eraser-aks-xxxxx-Worker-Pod gespeichert. Wenn eraser-aks-xxxxx aktiv ist, können Sie die folgenden Befehle ausführen, um Löschprotokolle anzuzeigen:
kubectl logs -n kube-system <worker-pod-name> -c collector
kubectl logs -n kube-system <worker-pod-name> -c trivy-scanner
kubectl logs -n kube-system <worker-pod-name> -c remover
Der eraser-aks-xxxxx-Pod wird innerhalb von 10 Minuten nach Abschluss der Arbeit gelöscht. Sie können die folgenden Schritte ausführen, um das Azure Monitor-Add-On zu aktivieren und die Podprotokolltabelle von Container Insights zu verwenden. Danach werden Verlaufsprotokolle gespeichert, und Sie können sie auch überprüfen, wenn eraser-aks-xxxxx gelöscht wird.
Stellen Sie sicher, dass Azure Monitor auf Ihrem Cluster aktiviert ist. Eine ausführliche Anleitung finden Sie unter Aktivieren von Container Insights auf AKS-Clustern.
Standardmäßig werden Protokolle für die im Namespace
kube-systemausgeführten Container nicht erfasst. Entfernen Sie denkube-systemNamespace ausexclude_namespacesin der Konfigurationszuordnung, und wenden Sie die Konfigurationszuordnung an, um die Sammlung dieser Protokolle zu aktivieren. Weitere Informationen finden Sie unter Konfigurieren der Datensammlung in Container Insights.Rufen Sie die Log Analytics-Ressourcen-ID mit dem Befehl
az aks showab.az aks show --resource-group myResourceGroup --name myManagedClusterNach wenigen Minuten gibt der Befehl Informationen zur Lösung im JSON-Format, einschließlich der Ressourcen-ID des Arbeitsbereichs, zurück:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }Suchen Sie im Azure-Portal nach der Arbeitsbereichsressourcen-ID, und wählen Sie dann "Protokolle" aus.
Kopieren Sie eine der folgenden Abfragen, und fügen Sie sie in das Abfragefenster ein.
Verwenden Sie die folgende Abfrage, wenn Ihr Cluster das ContainerLogV2-Schema verwendet. Wenn Sie weiterhin verwenden
ContainerLog, führen Sie ein Upgrade auf ContainerLogV2 durch.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceWenn Sie die Verwendung
ContainerLogfortsetzen möchten, verwenden Sie stattdessen die folgende Abfrage:let startTimestamp = ago(1h); KubePodInventory | where TimeGenerated > startTimestamp | project ContainerID, PodName=Name, Namespace | where PodName startswith "eraser-aks-" and Namespace == "kube-system" | distinct ContainerID, PodName | join ( ContainerLog | where TimeGenerated > startTimestamp ) on ContainerID // at this point before the next pipe, columns from both tables are available to be "projected". Due to both // tables having a "Name" column, we assign an alias as PodName to one column which we actually want | project TimeGenerated, PodName, LogEntry, LogEntrySource | summarize by TimeGenerated, LogEntry | order by TimeGenerated desc ```
Klicken Sie auf Ausführen. Alle Protokolle zu gelöschten Images werden im Bereich Ergebnisse angezeigt.
Verwandte Inhalte
- Erfahren Sie mehr über AKS Automatic in Was ist Azure Kubernetes Service (AKS) Automatisch?
- Erstellen Sie einen produktionsfähigen AKS Automatic Cluster mit Create an Azure Kubernetes Service (AKS) Automatic Cluster.