Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: ✔️ AKS Automatic ✔️ AKS Standard
Het is gebruikelijk om pijplijnen te gebruiken voor het bouwen en implementeren van afbeeldingen in AKS-clusters (Azure Kubernetes Service). Hoewel dit proces zeer geschikt is voor het maken van afbeeldingen, houdt het vaak geen rekening met de verouderde afbeeldingen die achterblijven, wat kan leiden tot een overvloed aan afbeeldingen op knooppunten in clusters. Deze beelden kunnen kwetsbaarheden bevatten, wat beveiligingsproblemen kan veroorzaken. Om beveiligingsrisico's in uw clusters te verwijderen, kunt u deze niet-gereferentieerde afbeeldingen opschonen. Het handmatig opschonen van afbeeldingen kan tijdrovend zijn. Image Cleaner voert automatische identificatie en verwijdering van afbeeldingen uit, waardoor het risico op verouderde afbeeldingen wordt beperkt en de tijd die nodig is om deze op te schonen, wordt verkort.
AKS Automatic is de aanbevolen standaardinstelling die gereed is voor productie voor de meeste AKS-workloads. Image Cleaner is standaard geconfigureerd op AKS Automatic-clusters om ongebruikte containerimages met beveiligingsproblemen te verwijderen.
Op AKS Standard-clusters is Image Cleaner optioneel en moet u deze expliciet inschakelen.
Zie Wat is Azure Kubernetes Service (AKS) Automatic? voor meer informatie over AKS Automatic.
Notitie
"Image Cleaner" is een functie, gebaseerd op "Eraser". In AKS zijn Image Cleaner de functienaam en de eigenschapsnaam, terwijl de namen van de relevante Image Cleaner-pods Eraser bevatten.
Gedrag van AKS Automatic en AKS Standard
Vereisten
- Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
- Voor AKS Standard-configuratie via Azure CLI Azure CLI versie 2.49.0 of hoger. Voer de opdracht uit
az --versionom uw versie te vinden. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.
Beperkingen
Image Cleaner biedt nog geen ondersteuning voor Windows-knooppuntgroepen of virtuele AKS-knooppunten.
Hoe Image Cleaner werkt
Wanneer u Image Cleaner op uw cluster activeert, wordt er een controllerbeheerpod met de naam eraser-controller-managergeïmplementeerd.
Image Cleaner ondersteunt automatische en handmatige opschoningsmodi.
Configuratieopties voor AKS Standard
Gebruik deze opties bij het configureren van Image Cleaner op AKS Standard met Azure CLI.
| Name | Beschrijving | Vereist |
|---|---|---|
--enable-image-cleaner |
Image Cleaner inschakelen voor een AKS-cluster | Ja, tenzij u 'disable' opgeeft. |
--disable-image-cleaner |
Image Cleaner uitschakelen voor een AKS-cluster | Ja, tenzij u 'enable' opgeeft |
--image-cleaner-interval-hours |
Interval in uren tussen geplande uitvoeringen. Azure CLI standaard is één week. Het minimum is 24 uur. Maximum is drie maanden. | Niet vereist voor Azure CLI; vereist voor ARM-sjabloon of andere clients |
Notitie
Als u Image Cleaner uitschakelt en deze later opnieuw kunt in- en uitschakelen zonder de configuratie expliciet door te geven, wordt de vorige configuratiewaarde opnieuw gebruikt.
Automatische modus
Wanneer u implementeert eraser-controller-manager, voert Image Cleaner automatisch deze acties uit:
- Start de opschoning en maakt voor elk knooppunt
eraser-aks-xxxxxworkerpods. - Gebruikt een collector-container om ongebruikte images te verzamelen.
- Maakt gebruik van een trivy-scannercontainer om beveiligingsproblemen met trivy te scannen.
- Maakt gebruik van een verwijdercontainer om ongebruikte images die kwetsbaarheden bevatten te verwijderen.
- Verwijdert de workerpod na voltooiing.
- Plant de volgende opschoonactie volgens
--image-cleaner-interval-hours.
Handmatige modus
U kunt het opschonen handmatig activeren door een CRD-objectImageList te definiëren. Hiermee wordt het eraser-contoller-manager maken van eraser-aks-xxxxx werkrolpods voor elk knooppunt geactiveerd en wordt het handmatige verwijderingsproces voltooid.
Notitie
Na het uitschakelen van Image Cleaner bestaat de oude configuratie nog steeds. Dit betekent dat als u de functie opnieuw inschakelt zonder de configuratie expliciet door te geven, de bestaande waarde wordt gebruikt in plaats van de standaardwaarde.
Image Cleaner gebruiken op AKS Automatic en AKS Standard
AKS Automatisch
Image Cleaner is vooraf geconfigureerd op automatische AKS-clusters. Dit is de aanbevolen standaardinstelling die gereed is voor productie voor de meeste AKS-workloads. U hoeft geen aparte inschakelopdracht uit te voeren.
Zie Een automatisch AKS-cluster maken.
Gebruik de richtlijnen voor handmatig opschonen en bewaken in dit artikel wanneer u gerichte herstel- of operationele verificatie wilt.
AKS Standard: inschakelen op een nieuw cluster
Schakel Image Cleaner in op een nieuw AKS Standard-cluster met behulp van de az aks create opdracht met de --enable-image-cleaner parameter.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
AKS Standard: inschakelen op een bestaand cluster
Schakel Image Cleaner in op een bestaand AKS Standard-cluster met behulp van de az aks update opdracht.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: update-interval op een nieuw of bestaand cluster
Werk het Image Cleaner-interval bij op een nieuw of bestaand AKS Standard-cluster met de parameter --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
Afbeeldingen handmatig verwijderen met Image Cleaner
Belangrijk
De name moet worden ingesteld op imagelist.
Verwijder handmatig een afbeelding met behulp van de volgende kubectl apply opdracht. In dit voorbeeld wordt de docker.io/library/alpine:3.7.3 afbeelding verwijderd als deze niet wordt gebruikt.
cat <<EOF | kubectl apply -f -
apiVersion: eraser.sh/v1
kind: ImageList
metadata:
name: imagelist
spec:
images:
- docker.io/library/alpine:3.7.3
EOF
Het handmatig opschonen is een eenmalige bewerking en wordt alleen geactiveerd wanneer er een nieuwe imagelist wordt gemaakt of wijzigingen worden aangebracht in de bestaande imagelist. Nadat de afbeelding is verwijderd, wordt deze imagelist niet automatisch verwijderd.
Als u een andere handmatige opschoning moet activeren, moet u een nieuwe imagelist maken of wijzigingen aanbrengen in een bestaande. Als u dezelfde installatiekopieën opnieuw wilt verwijderen, moet u een nieuwe imagelistmaken.
Een bestaande ImageList verwijderen en een nieuwe maken
Verwijder het oude
imagelistmet behulp van dekubectl deleteopdracht.kubectl delete ImageList imagelistMaak een nieuwe
imagelistmet dezelfde installatiekopieënnaam. In het volgende voorbeeld wordt dezelfde afbeelding gebruikt als in het vorige voorbeeld.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Een bestaande ImageList wijzigen
Wijzig de bestaande imagelist met behulp van de kubectl edit opdracht.
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
Wanneer u de handmatige modus gebruikt, wordt de eraser-aks-xxxxx pod binnen 10 minuten na voltooiing van het werk verwijderd.
Uitsluitingslijst voor afbeeldingen
Afbeeldingen die zijn opgegeven in de uitsluitingslijst, worden niet verwijderd uit het cluster. Image Cleaner ondersteunt door het systeem en door de gebruiker gedefinieerde uitsluitingslijsten. Het wordt niet ondersteund om de lijst met systeemuitsluitingen te bewerken.
Controleer de lijst met systeemuitsluitingen
Controleer de lijst met systeemuitsluitingen met behulp van de volgende kubectl get opdracht.
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Een door de gebruiker gedefinieerde uitsluitingslijst maken
Maak een JSON-voorbeeldbestand dat uitgesloten afbeeldingen bevat.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFMaak een
configmapmet behulp van het JSON-voorbeeldbestand met behulp van de volgendekubectl createenkubectl labelopdracht.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 uitschakelen op AKS Standard
Schakel Image Cleaner uit op een AKS Standard-cluster met behulp van de az aks update opdracht met de --disable-image-cleaner parameter.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Veelgestelde vragen (FAQ's)
Is Image Cleaner standaard ingeschakeld op AKS Automatic?
Ja. Image Cleaner is vooraf geconfigureerd op AKS Automatic-clusters.
Moet ik opdrachten voor het inschakelen van de Image Cleaner uitvoeren op AKS Automatic?
Nee Gebruik de inschakelopdrachten voor AKS Standard.
Hoe kan ik controleren welke versie Image Cleaner gebruikt?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Ondersteunt Image Cleaner andere scanners voor beveiligingsproblemen naast trivy-scanner?
Nee
Kan ik beveiligingsniveaus opgeven voor het opschonen van afbeeldingen?
Nee De standaardinstellingen voor beveiligingsniveaus zijn onder andere:
-
LOW, -
MEDIUM, -
HIGH, en CRITICAL
U kunt de standaardinstellingen niet aanpassen.
Hoe kunt u afbeeldingen controleren die zijn opgeschoond door Image Cleaner?
Afbeeldingslogboeken worden opgeslagen in de eraser-aks-xxxxx worker pod. Wanneer eraser-aks-xxxxx deze actief is, kunt u de volgende opdrachten uitvoeren om verwijderingslogboeken weer te geven:
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
De eraser-aks-xxxxx pod wordt binnen 10 minuten na voltooiing van het werk verwijderd. U kunt deze stappen volgen om de Azure Monitor-invoegtoepassing in te schakelen en de Container Insights-podlogboektabel te gebruiken. Daarna worden historische logboeken opgeslagen en kunt u ze bekijken, zelfs als eraser-aks-xxxxx is verwijderd.
Zorg ervoor dat Azure Monitor is ingeschakeld op uw cluster. Zie Container Insights inschakelen op AKS-clusters voor gedetailleerde stappen.
Logboeken voor de containers die in de
kube-systemnaamruimte worden uitgevoerd, worden standaard niet verzameld. Verwijder dekube-systemnaamruimte uitexclude_namespacesde configuratietoewijzing en pas de configuratietoewijzing toe om het verzamelen van deze logboeken in te schakelen. Zie Container Insights-gegevensverzameling configureren voor meer informatie.Haal de Log Analytics-resource-id op met behulp van de
az aks showopdracht.az aks show --resource-group myResourceGroup --name myManagedClusterNa enkele minuten retourneert de opdracht JSON-opgemaakte informatie over de oplossing, inclusief de resource-id van de werkruimte:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }Zoek in de Azure-portal naar de resource-id van de werkruimte en selecteer vervolgens Logboeken.
Kopieer een van de volgende query's en plak deze in het queryvenster.
Gebruik de volgende query als uw cluster gebruikmaakt van het ContainerLogV2-schema. Als u nog steeds gebruikt
ContainerLog, voert u een upgrade uit naar ContainerLogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceAls u wilt doorgaan met het gebruik
ContainerLog, gebruikt u in plaats daarvan de volgende query: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 ```
Selecteer Uitvoeren. Verwijderde afbeeldingslogboeken worden weergegeven in het gebied Resultaten .
Verwante inhoud
- Meer informatie over AKS Automatic in What is Azure Kubernetes Service (AKS) Automatic?
- Maak een automatisch AKS-cluster dat gereed is voor productie met een Azure Kubernetes Service (AKS) Automatisch cluster maken.