Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Gyakran használunk folyamatokat a rendszerképek Azure Kubernetes Service-fürtökön való létrehozására és üzembe helyezésére. Bár kiválóan alkalmas a rendszerképek létrehozására, ez a folyamat gyakran nem veszi figyelembe a hátrahagyott elavult képeket, és a fürtcsomópontokon képdúsuláshoz vezethet. Ezek a képek biztonsági réseket tartalmazhatnak, amelyek biztonsági problémákat eredményezhetnek. A fürtök biztonsági kockázatainak eltávolításához törölheti ezeket a nem hivatkozott lemezképeket. A képek manuális tisztítása időt igényelhet. Az Image Cleaner automatikus képazonosítást és eltávolítást végez, amely csökkenti az elavult képek kockázatát, és csökkenti a törléshez szükséges időt.
Feljegyzés
Az Image Cleaner a Radíron alapuló funkció.
Egy AKS-fürtben a funkciónév és tulajdonságnév Image Cleaner, míg a megfelelő Képtisztító podok nevei tartalmazzák a(z) Eraser-t.
Előfeltételek
- Azure-előfizetés. Ha nem rendelkezik Azure-előfizetéssel, létrehozhat egy ingyenes fiókot.
- Az Azure CLI 2.49.0-s vagy újabb verziója. Futtassa a
az --versionparancsot a verzió megkereséséhez. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
Korlátozások
Az Image Cleaner még nem támogatja a Windows-csomópontkészleteket vagy az AKS virtuális csomópontokat.
Az Image Cleaner működése
Az Image Cleaner engedélyezése után egy vezérlőkezelő pod eraser-controller-manager lesz üzembe helyezve a fürtön.
A Képtisztítóval a manuális és az automatikus mód, valamint a következő konfigurációs beállítások közül választhat:
Konfigurációs lehetőségek
| Név | Leírás | Kötelező |
|---|---|---|
--enable-image-cleaner |
Képtisztító funkció engedélyezése AKS-fürtökhöz | Igen, kivéve, ha a letiltás meg van adva |
--disable-image-cleaner |
Az AKS-fürt Képtisztító funkciójának letiltása | Igen, kivéve, ha engedélyezve van. |
--image-cleaner-interval-hours |
Ez a paraméter határozza meg azt az időközt (órákban), amelyet az Image Cleaner használ a futtatásra. Az Azure CLI alapértelmezett értéke egy hét, a minimális érték 24 óra, a maximum három hónap. | Az Azure CLI-hez nem szükséges, ARM-sablonhoz vagy más ügyfelekhez szükséges |
Automatikus mód
Az üzembe helyezés után eraser-controller-manager a rendszer automatikusan elvégzi a következő lépéseket:
- Azonnal elindítja a tisztítási folyamatot, és munkapodokat hoz létre
eraser-aks-xxxxxaz egyes csomópontokhoz. - Mindegyik munkavégző podban három tároló található:
- Egy gyűjtő, amely nem használt képeket gyűjt.
- Egy trivy-scanner, amely a kép biztonsági réseinek vizsgálatára használja a trivy-t .
- Eltávolító, amely eltávolítja a sebezhető, használaton kívüli képeket.
- A tisztítási folyamat befejezése után a munkavégző pod törlődik, és a következő ütemezett tisztítás az
--image-cleaner-interval-hoursÖn által megadottak szerint történik.
Manuális mód
A törlést manuálisan is aktiválhatja egy CRD-objektumImageList definiálásával. Ez aktiválja a eraser-contoller-manager munkavégző podok létrehozását eraser-aks-xxxxx az egyes csomópontokhoz, és végrehajtja a manuális eltávolítási folyamatot.
Feljegyzés
Az Image Cleaner letiltása után a régi konfiguráció továbbra is létezik. Ez azt jelenti, hogy ha a konfiguráció explicit átadása nélkül ismét engedélyezi a funkciót, a rendszer a meglévő értéket használja az alapértelmezett helyett.
Képtisztító engedélyezése az AKS-fürtön
Képtisztító engedélyezése új klaszteren
Engedélyezze az Image Cleanert egy új AKS-fürtön a
az aks createparanccsal, a--enable-image-cleanerparamétert használva.az aks create \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner \ --generate-ssh-keys
Image Cleaner engedélyezése meglévő fürtön
Engedélyezze az Image Cleanert egy meglévő AKS-fürtön a
az aks updateparanccsal.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-image-cleaner
Az Image Cleaner időközének frissítése új vagy meglévő fürtön
Frissítse az Image Cleaner időközt egy új vagy meglévő AKS-fürtön a
--image-cleaner-interval-hoursparaméter használatával.# 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
Képek manuális eltávolítása a Képtisztítóval
Fontos
A(z) name beállítása a következő legyen: imagelist.
A következő
kubectl applyparanccsal távolítsa el manuálisan a képet. Ez a példa eltávolítja adocker.io/library/alpine:3.7.3képet, ha nincs használatban.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
A manuális törlés egy egyszeri művelet, amely csak akkor aktiválódik, ha új imagelist jön létre vagy a meglévő imagelist módosításra kerül. A rendszerkép törlése után a imagelist rendszer nem törli automatikusan a rendszerképet.
Ha egy másik manuális törlést kell aktiválnia, létre kell hoznia egy újat imagelist , vagy módosítania kell egy meglévőt. Ha ismét el szeretné távolítani ugyanazt a képet, létre kell hoznia egy újat imagelist.
Meglévő ImageList törlése és új létrehozása
Törölje a régit
imagelistakubectl deleteparanccsal.kubectl delete ImageList imagelistHozzon létre egy újat
imagelistugyanazzal a képnévvel. Az alábbi példa ugyanazt a képet használja, mint az előző példában.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Meglévő ImageList módosítása
Módosítsa a meglévőt
imagelistakubectl editparanccsal.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
Manuális mód használatakor a pod a eraser-aks-xxxxx munka befejezése után 10 percen belül törlődik.
Képkizárási lista
A kizárási listában megadott képek nem törlődnek a fürtből. Az Image Cleaner támogatja a rendszer- és felhasználó által definiált kizárási listákat. A rendszerkizárási lista szerkesztése nem támogatott.
A rendszerkizárási lista ellenőrzése
Ellenőrizze a rendszerkizárási listát az alábbi
kubectl getparanccsal.kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Felhasználó által definiált kizárási lista létrehozása
Hozzon létre egy JSON-mintafájlt kizárt képek tárolásához.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFHozzon létre egy
configmapJSON-mintafájlt az alábbikubectl createéskubectl labela parancs használatával.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Képtisztító letiltása
Tiltsa le az Image Cleanert a fürtben a
az aks updateparaméterrel rendelkező--disable-image-cleanerparanccsal.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --disable-image-cleaner
GYIK
Hogyan ellenőrizhetim, hogy az Image Cleaner melyik verziót használja?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Támogatja az Image Cleaner a trivy-scanneren kívül más biztonságirés-szkennereket is?
Nem
Megadhatok biztonsági résszinteket a tisztítandó képekhez?
Nem A biztonságirés-szintek alapértelmezett beállításai a következők:
-
LOW, -
MEDIUM, -
HIGHés CRITICAL
Az alapértelmezett beállítások nem szabhatók testre.
Hogyan nézheted át azokat a képeket, amelyeket a Képtisztító megtisztított?
A rendszerképnaplókat a eraser-aks-xxxxx munkavégző pod tárolja. Ha eraser-aks-xxxxx még él, a törlési naplók megtekintéséhez futtassa a következő parancsokat:
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
A eraser-aks-xxxxx pod a munka befejezése után 10 percen belül törlődik. Ezeket a lépéseket követve engedélyezheti az Azure Monitor bővítményt , és használhatja a Container Insights podnapló-táblát. Ezután a rendszer tárolja az előzménynaplókat, és áttekintheti őket még a törlésükkor is eraser-aks-xxxxx .
Győződjön meg arról, hogy az Azure Monitoring engedélyezve van a fürtön. Részletes lépésekért tekintse meg a Container Insights engedélyezése AKS-fürtökön című témakört.
A névtérben
kube-systemfutó tárolók naplói alapértelmezés szerint nem lesznek összegyűjtve. Távolítsa el akube-systemnévteret aexclude_namespacesconfigmap-ről, és alkalmazza a configmap-et a naplók gyűjtésének engedélyezéséhez. Részletekért lásd a Container Insights adatgyűjtésének konfigurálását ismertető cikket.Kérje le a Log Analytics erőforrás-azonosítóját a
az aks showparanccsal.az aks show --resource-group myResourceGroup --name myManagedClusterNéhány perc elteltével a parancs JSON formátumú információkat ad vissza a megoldásról, beleértve a munkaterület erőforrás-azonosítóját:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }Az Azure Portalon keresse meg a munkaterület erőforrás-azonosítóját, majd válassza a Naplók lehetőséget.
Másolja ki az alábbi lekérdezések egyikét, és illessze be a lekérdezési ablakba.
Használja a következő lekérdezést, ha a fürt a ContainerLogV2 sémát használja. Ha továbbra is használja
ContainerLog, frissítsen a ContainerlogV2-re.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceHa továbbra is használni
ContainerLogszeretné, használja inkább a következő lekérdezést: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
Válassza a Futtatás lehetőséget. A törölt képnaplók megjelennek az Eredmények területen.