Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K vytváření a nasazování image v clusterech Azure Kubernetes Service (AKS) se běžně používají pipeliny. I když je tento proces skvělý pro vytváření image, často nezohledňuje zastaralé image, které zůstaly na uzlech clusteru, a může vést k nafouknutí image. Tyto image můžou obsahovat ohrožení zabezpečení, což může způsobit problémy se zabezpečením. Pokud chcete odebrat rizika zabezpečení ve vašich clusterech, můžete tyto neodkazované image vyčistit. Ruční čištění obrázků může být časově náročné. Nástroj Image Cleaner provádí automatickou identifikaci a odebrání obrázků, což snižuje riziko zastaralých obrázků a zkracuje dobu potřebnou k jejich vyčištění.
Note
Image Cleaner je funkce založená na nástroji Eraser.
V clusteru AKS je název funkce a název vlastnosti Image Cleaner, zatímco názvy příslušných podů Image Cleaner obsahují Eraser.
Prerequisites
- Předplatné služby Azure. Pokud ještě nemáte předplatné Azure, můžete si vytvořit bezplatný účet.
- Azure CLI verze 2.49.0 nebo novější Spuštěním
az --versionvyhledejte svou verzi. Pokud potřebujete instalovat nebo upgradovat, podívejte se na Install Azure CLI.
Limitations
Nástroj Image Cleaner zatím nepodporuje fondy uzlů Windows nebo virtuální uzly AKS.
Jak funguje Image Cleaner
Po povolení nástroje Image Cleaner se do vašeho clusteru nasadí pod správce kontroleru s názvem eraser-controller-manager .
Pomocí nástroje Image Cleaner si můžete vybrat mezi ručním a automatickým režimem a následujícími možnostmi konfigurace:
Možnosti konfigurace
| Name | Description | Required |
|---|---|---|
--enable-image-cleaner |
Povolení funkce Image Cleaner pro cluster AKS | Ano, pokud není zadána deaktivace |
--disable-image-cleaner |
Zakázání funkce Image Cleaner pro cluster AKS | Ano, pokud není zadáno povolení |
--image-cleaner-interval-hours |
Tento parametr určuje časový interval (v hodinách), ve kterém se spouští Image Cleaner. Výchozí hodnota azure CLI je jeden týden, minimální hodnota je 24 hodin a maximum je tři měsíce. | Nevyžaduje se pro Azure CLI, vyžaduje se pro šablonu ARM nebo jiné klienty. |
Automatický režim
Po nasazení eraser-controller-manager se automaticky provedou následující kroky:
- Okamžitě spustí proces vyčištění a vytvoří
eraser-aks-xxxxxpracovní pody pro každý uzel. - Každý pracovní pod obsahuje tři kontejnery:
- Kolektor, který shromažďuje nepoužívané image.
- Trivy-scanner, který využívá trivy ke skenování zranitelností obrázků.
- Odstraňovač, který odebere nepoužívané image s ohroženími zabezpečení.
- Po dokončení procesu čištění se pracovní pod odstraní a podle vámi definované definice
--image-cleaner-interval-hoursproběhne další naplánované vyčištění.
Ruční režim
Vyčištění můžete aktivovat ručně definováním objektuImageList CRD. Tím se spustí eraser-contoller-manager vytvoření pracovních podů eraser-aks-xxxxx pro každý uzel a dokončení ručního procesu odebrání.
Note
Po zakázání nástroje Image Cleaner stále existuje stará konfigurace. To znamená, že pokud funkci znovu povolíte bez explicitního předávání konfigurace, použije se stávající hodnota místo výchozí hodnoty.
Povolení funkce Image Cleaner v clusteru AKS
Povolení funkce Image Cleaner v novém clusteru
Povolte nástroj Image Cleaner v novém clusteru AKS pomocí příkazu
az aks creates parametrem--enable-image-cleaner.az aks create \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner \ --generate-ssh-keys
Povolení funkce Image Cleaner v existujícím clusteru
Povolte nástroj Image Cleaner v existujícím AKS clusteru pomocí příkazu
az aks update.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner
Aktualizace intervalu Čištění obrázků v novém nebo existujícím clusteru
Pomocí parametru
--image-cleaner-interval-hoursaktualizujte interval nástroje Image Cleaner na novém nebo existujícím clusteru AKS.# 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
Ruční odebrání obrázků pomocí nástroje Image Cleaner
Important
name musí být nastaveno na imagelist.
Ručně odeberte obrázek pomocí následujícího
kubectl applypříkazu. Tento příklad odeberedocker.io/library/alpine:3.7.3obraz, pokud se nepoužívá.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Ruční vyčištění je jednorázová operace a aktivuje se pouze tehdy, když je vytvořen nový imagelist nebo jsou provedeny změny ve stávajícím imagelist. Po odstranění obrázku se imagelist neodstraní automaticky.
Pokud potřebujete aktivovat další ruční vyčištění, musíte vytvořit nový imagelist nebo provést změny existujícího. Pokud chcete stejnou image znovu odebrat, musíte vytvořit novou imagelist.
Odstraňte existující ImageList a vytvořte nový
Pomocí příkazu
kubectl deleteodstraňte starouimagelist.kubectl delete ImageList imagelistVytvořte nový
imagelistse stejným názvem obrazu. Následující příklad používá stejný obrázek jako předchozí příklad.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Úprava existujícího ImageListu
Upravte existující
imagelistpomocíkubectl editpříkazu.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
Při použití ručního režimu se eraser-aks-xxxxx pod odstraní do 10 minut po dokončení práce.
Seznam vyloučení obrázků
Image zadané v seznamu vyloučení se z clusteru neodeberou. Image Cleaner podporuje seznamy vyloučení definované systémem a uživatelem. Není podporováno úpravu seznamu vyloučení systému.
Kontrola seznamu vyloučení systému
Pomocí následujícího
kubectl getpříkazu zkontrolujte seznam vyloučení systému.kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Vytvoření seznamu vyloučení definovaných uživatelem
Vytvořte ukázkový soubor JSON, který bude obsahovat vyloučené obrázky.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFVytvořte
configmappomocí ukázkového souboru JSON s použitím následujících příkazůkubectl createakubectl label.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Zakázání čističe obrázků
Pomocí příkazu s parametrem
az aks updatezakažte nástroj Image Cleaner ve vašem clusteru--disable-image-cleaner.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --disable-image-cleaner
časté otázky
Jak zjistím, jakou verzi Image Cleaner používá?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Podporuje Image Cleaner jiné nástroje pro skenování zranitelností než trivy-scanner?
No.
Můžu určit úrovně zranitelnosti pro vyčištění obrazů?
No. Mezi výchozí nastavení úrovní ohrožení zabezpečení patří:
-
LOW, -
MEDIUM, -
HIGH, a CRITICAL
Výchozí nastavení nemůžete přizpůsobit.
Jak zkontrolovat obrázky, které byly vyčištěny pomocí nástroje Image Cleaner?
Protokoly obrázků jsou uloženy v pracovním podu eraser-aks-xxxxx. Pokud eraser-aks-xxxxx je aktivní, můžete spuštěním následujících příkazů zobrazit protokoly odstranění:
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
Pod eraser-aks-xxxxx se odstraní do 10 minut po dokončení práce. Tímto postupem povolíte doplněk Azure Monitor a použijete tabulku protokolů podů Container Insights. Potom se uloží historické protokoly a můžete je zkontrolovat, i když je eraser-aks-xxxxx odstraněno.
Ujistěte se, že je ve vašem clusteru povolené monitorování Azure. Podrobný postup najdete v tématu Povolení služby Container Insights v clusterech AKS.
Protokoly pro kontejnery spuštěné v
kube-systemoboru názvů se ve výchozím nastavení neshromažďují.kube-systemOdeberte obor názvů zexclude_namespacesobjektu configmap a použijte mapu konfigurace pro povolení shromažďování těchto protokolů. Podrobnosti najdete v tématu Konfigurace shromažďování dat Container Insights .Pomocí příkazu
az aks showzískejte ID prostředku Log Analytics.az aks show --resource-group myResourceGroup --name myManagedClusterPo několika minutách příkaz vrátí informace o řešení ve formátu JSON, včetně ID prostředku pracovního prostoru:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }Na portálu Azure vyhledejte ID prostředku pracovního prostoru a poté vyberte Protokoly.
Zkopírujte jeden z následujících dotazů a vložte ho do okna dotazu.
Pokud váš cluster používá schéma ContainerLogV2, použijte následující dotaz. Pokud stále používáte
ContainerLog, měli byste upgradovat na ContainerlogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourcePokud chcete pokračovat v používání
ContainerLog, použijte místo toho následující dotaz: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
Vyberte Spustit. Všechny odstraněné protokoly obrázků se zobrazí v oblasti Výsledky .