Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ AKS Automatic AKS Standard ✔️
Pipeline'y są często używane do tworzenia i wdrażania obrazów w klastrach usługi Azure Kubernetes Service (AKS). Podczas tworzenia obrazów często nie są uwzględniane nieaktualne obrazy pozostawione w tle, co może prowadzić do nadmiaru obrazów na węzłach klastra. Te obrazy mogą zawierać luki w zabezpieczeniach, które mogą powodować problemy z zabezpieczeniami. Aby zredukować zagrożenia bezpieczeństwa w klastrach, możesz wyczyścić te nieodwołane obrazy. Ręczne czyszczenie obrazów może być czasochłonne. Narzędzie Image Cleaner wykonuje automatyczną identyfikację i usuwanie obrazów, co zmniejsza ryzyko nieaktualnych obrazów i skraca czas potrzebny do ich wyczyszczenia.
AKS Automatic to zalecany, gotowy do użycia w środowisku produkcyjnym domyślny wybór dla większości obciążeń AKS. Narzędzie Image Cleaner jest domyślnie skonfigurowane w klastrach AKS Automatic, aby pomagać w usuwaniu nieużywanych obrazów zawierających luki w zabezpieczeniach.
W klastrach AKS Standard narzędzie Image Cleaner jest opcjonalne i należy je włączyć jawnie.
Aby uzyskać więcej informacji o AKS Automatic, zobacz Co to jest AKS Automatic w usłudze Azure Kubernetes Service (AKS)?
Uwaga
Image Cleaner to funkcja oparta na Eraser. W usłudze AKS nazwa funkcji i nazwa właściwości to Image Cleaner, a nazwy odpowiednich zasobników Image Cleaner zawierają Eraser.
Zachowanie AKS Automatic i AKS Standard
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji Azure, możesz utworzyć bezpłatne konto Azure.
- Do konfiguracji usługi AKS Standard za pomocą interfejsu wiersza polecenia platformy Azure (Azure CLI) wymagana jest wersja 2.49.0 lub nowsza. Uruchom polecenie
az --version, aby znaleźć swoją wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Ograniczenia
Narzędzie Image Cleaner nie obsługuje jeszcze pul węzłów systemu Windows ani węzłów wirtualnych usługi AKS.
Jak działa narzędzie Image Cleaner
Po aktywowaniu narzędzia Image Cleaner w klastrze wdraża zasobnik menedżera kontrolerów o nazwie eraser-controller-manager.
Narzędzie Image Cleaner obsługuje tryby automatycznego i ręcznego czyszczenia.
Opcje konfiguracji usługi AKS Standard
Użyj tych opcji podczas konfigurowania narzędzia Image Cleaner w usłudze AKS Standard przy użyciu Azure CLI.
| Nazwa/nazwisko | opis | Wymagane |
|---|---|---|
--enable-image-cleaner |
Włącz funkcję Image Cleaner dla klastra AKS | Tak, chyba że zostanie określona opcja wyłącz |
--disable-image-cleaner |
Wyłączanie funkcji Image Cleaner w klastrze AKS | Tak, chyba że określono, że ma być włączone |
--image-cleaner-interval-hours |
Interwał w godzinach zaplanowanych przebiegów. Domyślna wartość w Azure CLI to jeden tydzień. Minimalna wartość to 24 godziny. Wartość maksymalna to trzy miesiące. | Nie jest wymagane dla Azure CLI; wymagane w przypadku szablonu ARM lub innych klientów |
Uwaga
Jeśli wyłączysz Image Cleaner, a później ponownie go włączysz bez jawnego przekazania konfiguracji, zostanie użyta poprzednia wartość konfiguracji.
Tryb automatyczny
Po wdrożeniu eraser-controller-manager narzędzie Image Cleaner automatycznie wykonuje następujące czynności:
- Uruchamia czyszczenie i tworzy zasobniki robocze
eraser-aks-xxxxxdla każdego węzła. - Używa kontenera kolektora do zbierania nieużywanych obrazów.
- Używa kontenera trivy-scanner do skanowania luk w zabezpieczeniach za pomocą trivy.
- Używa kontenera remover do usuwania nieużywanych obrazów z lukami w zabezpieczeniach.
- Usuwa pod roboczy po zakończeniu.
- Planuje kolejne czyszczenie zgodnie z
--image-cleaner-interval-hours.
Tryb ręczny
Czyszczenie można wyzwolić ręcznie, definiując obiekt CRD. Spowoduje, że eraser-contoller-manager utworzy eraser-aks-xxxxx zasobniki procesów roboczych dla każdego węzła i dokończy proces ręcznego usuwania.
Uwaga
Po wyłączeniu narzędzia Image Cleaner stara konfiguracja nadal istnieje. Oznacza to, że jeśli funkcja zostanie ponownie włączona bez jawnego przekazywania konfiguracji, istniejąca wartość jest używana zamiast wartości domyślnej.
Korzystanie z narzędzia Image Cleaner w AKS Automatic i AKS Standard
Automatyczne usługi AKS
Narzędzie Image Cleaner jest domyślnie skonfigurowane w klastrach AKS Automatic, które są zalecanym, gotowym do użycia w środowisku produkcyjnym rozwiązaniem domyślnym dla większości obciążeń AKS. Nie trzeba uruchamiać oddzielnego polecenia włączania.
Aby utworzyć klaster automatyczny usługi AKS, zobacz Tworzenie klastra automatycznego usługi AKS.
Skorzystaj ze wskazówek dotyczących ręcznego czyszczenia i monitorowania w tym artykule, jeśli chcesz przeprowadzić ukierunkowane korygowanie lub weryfikację operacyjną.
AKS Standard: włącz w nowym klastrze
Włącz funkcję Image Cleaner w nowym klastrze AKS w warstwie Standard za pomocą polecenia az aks create z parametrem --enable-image-cleaner.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
AKS Standard: włącz w istniejącym klastrze
Włącz funkcję Image Cleaner w istniejącym klastrze AKS w warstwie Standard przy użyciu polecenia az aks update.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: interwał aktualizacji w nowym lub istniejącym klastrze
Zaktualizuj interwał działania funkcji Image Cleaner dla nowego lub istniejącego klastra AKS w warstwie Standard przy użyciu parametru --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
Ręczne usuwanie obrazów przy użyciu narzędzia Image Cleaner
Ważne
Parametr name musi mieć wartość imagelist.
Ręcznie usuń obraz przy użyciu następującego kubectl apply polecenia. W tym przykładzie docker.io/library/alpine:3.7.3 obraz jest usuwany, jeśli jest on nieużywany.
cat <<EOF | kubectl apply -f -
apiVersion: eraser.sh/v1
kind: ImageList
metadata:
name: imagelist
spec:
images:
- docker.io/library/alpine:3.7.3
EOF
Czyszczenie ręczne jest jednorazową operacją i jest wyzwalane tylko wtedy, gdy zostanie utworzony nowy imagelist lub zmiany zostaną wprowadzone do istniejącego imagelistelementu. Po usunięciu obrazu, imagelist nie zostanie usunięty automatycznie.
Jeśli musisz wyzwolić inne ręczne czyszczenie, musisz utworzyć nowe imagelist lub wprowadzić zmiany w istniejącym. Jeśli chcesz ponownie usunąć ten sam obraz, musisz utworzyć nowy imagelistelement .
Usuń istniejącą ImageList i utwórz nową
Usuń stary
imagelistprzy użyciukubectl deletepolecenia .kubectl delete ImageList imagelistUtwórz nowy
imagelisto tej samej nazwie obrazu. W poniższym przykładzie użyto tego samego obrazu co w poprzednim przykładzie.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Modyfikowanie istniejącej listy obrazów
Zmodyfikuj istniejący imagelist przy użyciu polecenia 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
W przypadku korzystania z trybu eraser-aks-xxxxx ręcznego zasobnik zostanie usunięty w ciągu 10 minut po zakończeniu pracy.
Lista wykluczeń obrazów
Obrazy określone na liście wykluczeń nie są usuwane z klastra. Narzędzie Image Cleaner obsługuje listy wykluczeń zdefiniowanych przez użytkownika i systemowych. Edytowanie listy wykluczeń systemu nie jest obsługiwane.
Sprawdzanie listy wykluczeń systemu
Sprawdź listę wykluczeń systemu przy użyciu następującego kubectl get polecenia.
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Tworzenie listy wykluczeń zdefiniowanych przez użytkownika
Utwórz przykładowy plik JSON zawierający wykluczone obrazy.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFUtwórz
configmapprzy użyciu przykładowego pliku JSON i następujących poleceńkubectl createorazkubectl label.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Wyłączanie narzędzia Image Cleaner w usłudze AKS Standard
Wyłącz funkcję Image Cleaner w klastrze AKS w warstwie Standard za pomocą polecenia az aks update z parametrem --disable-image-cleaner.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Często zadawane pytania (FAQ)
Czy czyszczenie obrazów jest domyślnie włączone w usłudze AKS Automatic?
Tak. Image Cleaner jest domyślnie skonfigurowany w klastrach AKS Automatic.
Czy muszę uruchomić polecenia włączania narzędzia Image Cleaner w usłudze AKS Automatic?
Nr Użyj poleceń włączających dla AKS Standard.
Jak sprawdzić, której wersji używa narzędzie Image Cleaner?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
Czy narzędzie Image Cleaner obsługuje inne skanery wrażliwości oprócz trivy-scanner?
Nr
Czy mogę ustalić poziomy podatności dla obrazów do usunięcia?
Nr Domyślne ustawienia poziomów luk w zabezpieczeniach obejmują:
-
LOW. -
MEDIUM. -
HIGHi CRITICAL
Nie można dostosować ustawień domyślnych.
Jak przeglądać obrazy, które zostały oczyszczone przez program Image Cleaner?
Logi obrazów są przechowywane w zasobniku roboczym eraser-aks-xxxxx. Gdy eraser-aks-xxxxx jest aktywny, możesz uruchomić następujące polecenia, aby wyświetlić dzienniki usuwania:
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
Zasobnik eraser-aks-xxxxx zostanie usunięty w ciągu 10 minut po zakończeniu pracy. Możesz wykonać następujące kroki, aby włączyć dodatek usługi Azure Monitor i użyć tabeli dzienników zasobników usługi Container Insights. Następnie dzienniki historyczne będą przechowywane i można je przejrzeć nawet eraser-aks-xxxxx po usunięciu.
Upewnij się, że Azure Monitor jest włączona w klastrze. Aby uzyskać szczegółowe instrukcje, zobacz Włączanie Container Insights w klastrach AKS.
Domyślnie dzienniki kontenerów uruchomionych w
kube-systemprzestrzeni nazw nie są zbierane.kube-systemUsuń przestrzeń nazw zexclude_namespacesmapy konfiguracji i zastosuj mapę konfiguracji, aby włączyć zbieranie tych dzienników. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie zbierania danych usługi Container Insights.Pobierz identyfikator zasobu usługi Log Analytics przy użyciu
az aks showpolecenia .az aks show --resource-group myResourceGroup --name myManagedClusterPo kilku minutach polecenie zwraca informacje o rozwiązaniu w formacie JSON, w tym identyfikator zasobu obszaru roboczego:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }W portalu Azure wyszukaj identyfikator zasobu obszaru roboczego, a następnie wybierz pozycję Dzienniki.
Skopiuj jedno z poniższych zapytań i wklej je w oknie zapytania.
Użyj następującego zapytania, jeśli klaster używa schematu ContainerLogV2. Jeśli nadal używasz
ContainerLog, uaktualnij do ContainerLogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceJeśli chcesz kontynuować korzystanie z
ContainerLogusługi , użyj następującego zapytania: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 ```
Wybierz Uruchom. Wszystkie usunięte dzienniki obrazów są wyświetlane w obszarze Wyniki .
Treści powiązane
- Dowiedz się więcej o usłudze AKS Automatic w Czym jest usługa Azure Kubernetes Service (AKS) Automatic?
- Utwórz automatyczny klaster AKS gotowy do użycia produkcyjnego, korzystając z Tworzenie automatycznego klastra usługi Azure Kubernetes Service (AKS).