Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ AKS Automatic ✔️ AKS Standard
Det är vanligt att använda pipelines för att skapa och distribuera avbildningar i AKS-kluster (Azure Kubernetes Service). Även om det är bra för att skapa avbildningar tar den här processen ofta inte hänsyn till de inaktuella avbildningar som lämnas kvar och kan leda till att bilden blir uppsvälld på klusternoder. Dessa avbildningar kan innehålla säkerhetsrisker, vilket kan skapa säkerhetsproblem. Om du vill ta bort säkerhetsrisker i dina kluster kan du rensa dessa orefererade avbildningar. Manuell rensning av bilder kan vara tidsintensivt. Image Cleaner utför automatisk bildidentifiering och borttagning, vilket minskar risken för inaktuella bilder och minskar den tid som krävs för att rensa upp dem.
AKS Automatic är den rekommenderade produktionsklara standardinställningen för de flesta AKS-arbetsbelastningar. Image Cleaner är förkonfigurerat i AKS Automatiska kluster för att ta bort oanvända bilder med sårbarheter som standard.
I AKS Standard-kluster är Image Cleaner valfritt och du aktiverar det uttryckligen.
Mer information om AKS Automatic finns i Vad är Azure Kubernetes Service (AKS) Automatisk?
Anteckning
Image Cleaner är en funktion baserad på Eraser. På AKS är funktionsnamnet och egenskapsnamnet Image Cleaner, medan de relevanta Image Cleaner-poddarnas namn innehåller Eraser.
AKS Automatic- och AKS Standard-beteende
Förutsättningar
- Ett Azure-abonnemang. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- För AKS Standard-konfiguration via Azure CLI Azure CLI version 2.49.0 eller senare. Kör
az --versionför att hitta din version. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Begränsningar
Image Cleaner har ännu inte stöd för Windows-nodpooler eller virtuella AKS-noder.
Så här fungerar Image Cleaner
När du aktiverar Image Cleaner i klustret distribueras en controller manager-podd med namnet eraser-controller-manager.
Image Cleaner stöder automatiska och manuella rensningslägen.
Konfigurationsalternativ för AKS Standard
Använd de här alternativen när du konfigurerar Image Cleaner på AKS Standard med Azure CLI.
| Name | beskrivning | Obligatoriskt |
|---|---|---|
--enable-image-cleaner |
Aktivera Image Cleaner för ett AKS-kluster | Ja, såvida du inte anger inaktivera |
--disable-image-cleaner |
Inaktivera Image Cleaner för ett AKS-kluster | Ja, om du inte anger ”enable”. |
--image-cleaner-interval-hours |
Intervall i timmar för schemalagda körningar. Azure CLI standardvärdet är en vecka. Minst 24 timmar. Max är tre månader. | Krävs inte för Azure CLI; krävs för ARM-mall eller andra klienter |
Anteckning
Om du inaktiverar Image Cleaner och senare kan återanvända det utan att uttryckligen skicka konfigurationen återanvänds det tidigare konfigurationsvärdet.
Automatiskt läge
När du distribuerar eraser-controller-managerutför Image Cleaner automatiskt följande åtgärder:
- Startar rensningen och skapar
eraser-aks-xxxxxworker-poddar för varje nod. - Använder en uppsamlingsbehållare för att samla upp oanvända images.
- Använder en trivy-scanner-container för att genomsöka sårbarheter med trivy.
- Använder en remover-container för att ta bort oanvända avbildningar med sårbarheter.
- Raderar worker-podden när den är slutförd.
- Schemalägger nästa rensning enligt
--image-cleaner-interval-hours.
Manuellt läge
Du kan utlösa rensningen manuellt genom att definiera ett CRD-objektImageList. Detta aktiverar eraser-contoller-manager så att eraser-aks-xxxxx skapar arbetspoddar för varje nod och slutför den manuella borttagningsprocessen.
Anteckning
När du har inaktiverat Image Cleaner finns den gamla konfigurationen fortfarande. Det innebär att om du aktiverar funktionen igen utan att uttryckligen skicka konfigurationen används det befintliga värdet i stället för standardvärdet.
Använda Image Cleaner på AKS Automatic och AKS Standard
AKS Automatisk
Image Cleaner är förkonfigurerat i AKS Automatiska kluster, vilket är den rekommenderade produktionsklara standardinställningen för de flesta AKS-arbetsbelastningar. Du behöver inte köra ett separat aktiveringskommando.
Information om hur du skapar ett AKS-automatiskt kluster finns i Skapa ett AKS-automatiskt kluster.
Använd vägledningen för manuell rensning och övervakning i den här artikeln när du vill ha riktad reparation eller driftsverifiering.
AKS Standard: aktivera i ett nytt kluster
Aktivera Image Cleaner i ett nytt AKS Standard-kluster med hjälp av az aks create kommandot med parametern --enable-image-cleaner .
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
AKS Standard: aktivera i ett befintligt kluster
Aktivera Image Cleaner i ett befintligt AKS Standard-kluster med kommandot az aks update .
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: uppdateringsintervall för ett nytt eller befintligt kluster
Uppdatera intervallet Image Cleaner i ett nytt eller befintligt AKS Standard-kluster med hjälp av parametern --image-cleaner-interval-hours .
# 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
Ta bort bilder manuellt med Hjälp av Image Cleaner
Viktigt!
name måste anges till imagelist.
Ta bort en avbildning manuellt med hjälp av följande kubectl apply kommando. Det här exemplet tar bort avbildningen docker.io/library/alpine:3.7.3 om den inte används.
cat <<EOF | kubectl apply -f -
apiVersion: eraser.sh/v1
kind: ImageList
metadata:
name: imagelist
spec:
images:
- docker.io/library/alpine:3.7.3
EOF
Den manuella rensningen är en engångsåtgärd och utlöses bara när en ny imagelist skapas eller ändringar görs i den befintliga imagelist. När bilden har raderats kommer imagelist inte att tas bort automatiskt.
Om du behöver utlösa en annan manuell rensning måste du skapa en ny imagelist eller göra ändringar i en befintlig. Om du vill ta bort samma avbildning igen måste du skapa en ny imagelist.
Ta bort en befintlig imagelist och skapa en ny
Ta bort det gamla
imagelistmed kommandotkubectl delete.kubectl delete ImageList imagelistSkapa en ny
imagelistmed samma bildnamn. I följande exempel används samma bild som i föregående exempel.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Ändra en befintlig imagelist
Ändra den befintliga imagelist med kommandot 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
När du använder manuellt läge eraser-aks-xxxxx tas podden bort inom 10 minuter efter att arbetet har slutförts.
Lista över undantagna bilder
Bilder som anges i undantagslistan tas inte bort från klustret. Image Cleaner stöder system- och användardefinierade undantagslistor. Det går inte att redigera listan över systemundantag.
Kontrollera listan över systemundantag
Kontrollera listan över systemundantag med hjälp av följande kubectl get kommando.
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Skapa en användardefinierad undantagslista
Skapa en JSON-exempelfil som ska innehålla exkluderade bilder.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFSkapa en
configmapmed JSON-exempelfilen med hjälp av följandekubectl createochkubectl labelkommando.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Inaktivera Image Cleaner på AKS Standard
Inaktivera Image Cleaner i ett AKS Standard-kluster med kommandot az aks update med parametern --disable-image-cleaner .
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Vanliga frågor (FAQ)
Är Image Cleaner aktiverat som standard på AKS Automatic?
Ja. Image Cleaner är förkonfigurerat i AKS Automatiska kluster.
Behöver jag köra kommandon för att aktivera Image Cleaner på AKS Automatic?
Nej. Använd aktivera-kommandona för AKS Standard.
Hur kan jag kontrollera vilken version Image Cleaner använder?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Har Image Cleaner stöd för andra sårbarhetsskannrar förutom trivy-scanner?
Nej.
Kan jag ange sårbarhetsnivåer för bilder som ska rensas?
Nej. Standardinställningarna för sårbarhetsnivåer är:
-
LOW. -
MEDIUM. -
HIGHoch CRITICAL
Du kan inte anpassa standardinställningarna.
Hur granskar man bilder har rensats upp av Image Cleaner?
Bildloggar lagras i eraser-aks-xxxxx worker-podden. När eraser-aks-xxxxx är vid liv kan du köra följande kommandon för att visa borttagningsloggar:
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
Podden eraser-aks-xxxxx tas bort inom 10 minuter efter att arbetet har slutförts. Du kan följa de här stegen för att aktivera Azure Monitor-tillägget och använda loggtabellen för Container Insights-podden. Därefter lagras historiska loggar och du kan granska dem även eraser-aks-xxxxx tas bort.
Kontrollera att Azure Monitor är aktiverat i klustret. Detaljerade steg finns i Aktivera Container Insights i AKS-kluster.
Som standard samlas inte loggar för containrar som körs i
kube-systemnamnområdet in.kube-systemTa bort namnområdet frånexclude_namespacesi konfigurationskartan och använd konfigurationskartan för att aktivera insamling av dessa loggar. Mer information finns i Konfigurera datainsamling för Container Insights.Hämta Log Analytics-resurs-ID:t med hjälp av
az aks showkommandot .az aks show --resource-group myResourceGroup --name myManagedClusterEfter några minuter returnerar kommandot JSON-formaterad information om lösningen, inklusive arbetsytans resurs-ID:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }I Azure portalen söker du efter arbetsytans resurs-ID och väljer sedan Loggar.
Kopiera en av följande frågor och klistra in den i frågefönstret.
Använd följande fråga om klustret använder ContainerLogV2-schemat. Om du fortfarande använder
ContainerLoguppgraderar du till ContainerLogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceOm du vill fortsätta använda
ContainerLoganvänder du följande fråga i stället: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 ```
Markera Kör. Alla borttagna bildloggar visas i området Resultat .
Relaterat innehåll
- Läs mer om AKS Automatic i Vad är Azure Kubernetes Service (AKS) Automatisk?
- Skapa ett produktionsklart AKS-automatiskt kluster med Skapa ett Azure Kubernetes Service (AKS) automatiskt kluster.