Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard
É comum usar pipelines para criar e implantar imagens em clusters do Serviço Kubernetes do Azure (AKS). Embora seja ótimo para a criação de imagens, esse processo geralmente não leva em conta as imagens obsoletas deixadas para trás e pode levar ao inchaço da imagem nos nós do cluster. Essas imagens podem conter vulnerabilidades, o que pode criar problemas de segurança. Para remover os riscos de segurança em seus clusters, você pode limpar essas imagens não referenciadas. A limpeza manual de imagens pode exigir muito tempo. O Image Cleaner realiza a identificação e remoção automática de imagens, o que reduz o risco de imagens obsoletas e reduz o tempo necessário para limpá-las.
O AKS Automatic é a predefinição recomendada, pronta para produção, para a maioria das cargas de trabalho do AKS. O Limpador de Imagens está pré-configurado em clusters automáticos AKS para ajudar a remover imagens não utilizadas com vulnerabilidades por defeito.
Nos clusters AKS Standard, o Image Cleaner é opcional e podes ativa-o explicitamente.
Para mais informações sobre o AKS Automatic, veja O que é o Azure Kubernetes Service (AKS) Automatic?
Nota
Image Cleaner é um recurso baseado em Eraser. No AKS, o nome da funcionalidade e o nome da propriedade é Image Cleaner, enquanto os nomes dos pods relevantes do Image Cleaner contêm Eraser.
Comportamento do AKS Automatic e do AKS Standard
Pré-requisitos
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode criar uma conta gratuita.
- Para configuração AKS Standard via CLI do Azure, CLI do Azure versão 2.49.0 ou posterior. Execute
az --versionpara encontrar a sua versão. Se precisar de instalar ou atualizar, veja Install CLI do Azure (Instalar o CLI do Azure).
Limitações
Image Cleaner ainda não suporta pools de nós do Windows ou nós virtuais AKS.
Como funciona o Image Cleaner
Quando ativas o Image Cleaner no teu cluster, ele implementa um pod gestor de controladores chamado eraser-controller-manager.
O Limpador de Imagens suporta modos de limpeza automática e manual.
Opções de configuração para o AKS Standard
Use estas opções ao configurar o Image Cleaner no AKS Standard com CLI do Azure.
| Nome | Descrição | Obrigatório |
|---|---|---|
--enable-image-cleaner |
Ativar o Limpador de Imagens para um cluster AKS | Sim, a menos que especifique desativar |
--disable-image-cleaner |
Desativar o Limpador de Imagens para um cluster AKS | Sim, a menos que especifique a ativação |
--image-cleaner-interval-hours |
Intervalo em horas para as corridas agendadas. O padrão da CLI do Azure é uma semana. O mínimo é 24 horas. O máximo são três meses. | Não é obrigatório para CLI do Azure; é obrigatório para templates ARM ou outros clientes |
Nota
Se desativar o Limpador de Imagens e depois o reativar sem passar explicitamente a configuração, o valor de configuração anterior é reutilizado.
Modo automático
Quando implementa eraser-controller-manager, o Image Cleaner executa automaticamente estas ações:
- Inicia a limpeza e cria
eraser-aks-xxxxxgrupos de trabalhadores para cada nó. - Utiliza um contentor coletor para recolher imagens não utilizadas.
- Usa um contentor trivy-scanner para analisar vulnerabilidades com trivy.
- Utiliza um contentor de remover para remover imagens não utilizadas com vulnerabilidades.
- Elimina o pod de trabalho após a conclusão.
- Programa a próxima limpeza de acordo com
--image-cleaner-interval-hours.
Modo manual
Você pode acionar manualmente a limpeza definindo um objeto CRD,ImageList. Isso aciona o eraser-contoller-manager para criar eraser-aks-xxxxx pods de trabalho para cada nó e concluir o processo de remoção manual.
Nota
Depois de desativar o Image Cleaner, a configuração antiga ainda existe. Isso significa que, se você habilitar o recurso novamente sem passar explicitamente pela configuração, o valor existente será usado em vez do padrão.
Use o Limpador de Imagens no AKS Automático e no AKS Standard
AKS Automático
O Image Cleaner está pré-configurado nos clusters automáticos do AKS, que são o padrão recomendado para produção na maioria das cargas de trabalho do AKS. Não precisas de executar um comando de ativação separado.
Para criar um cluster AKS Automatic, veja Criar um cluster AKS Automatic.
Use as orientações manuais de limpeza e monitorização deste artigo quando quiser uma remediação direcionada ou verificação operacional.
Padrão AKS: ativar num novo cluster
Ative o Limpador de Imagens num novo cluster AKS Standard usando o az aks create comando com o --enable-image-cleaner parâmetro.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
Norma AKS: ativar num cluster existente
Ative o Limpador de Imagens num cluster AKS Standard existente usando o az aks update comando.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: intervalo de atualização num cluster novo ou existente
Atualize o intervalo Image Cleaner num cluster AKS Standard novo ou existente usando o --image-cleaner-interval-hours parâmetro.
# 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
Remover imagens manualmente usando o Image Cleaner
Importante
O cabeçalho name deve ser definido como imagelist.
Remova manualmente uma imagem usando o seguinte kubectl apply comando. Este exemplo remove a docker.io/library/alpine:3.7.3 imagem se ela não for usada.
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 limpeza manual é uma operação única e só é acionada quando um novo imagelist é criado ou alterações são feitas no existente imagelist. Depois que a imagem for excluída, a imagelist imagem não será excluída automaticamente.
Se precisar acionar outra limpeza manual, deverá criar uma nova imagelist ou fazer alterações numa existente. Se você quiser remover a mesma imagem novamente, você precisa criar um novo imagelist.
Excluir uma ImageList existente e criar uma nova
Exclua o antigo
imagelistusando okubectl deletecomando.kubectl delete ImageList imagelistCrie uma nova
imagelistcom o mesmo nome de imagem. O exemplo a seguir usa a mesma imagem do exemplo anterior.cat <<EOF | kubectl apply -f - apiVersion: eraser.sh/v1 kind: ImageList metadata: name: imagelist spec: images: - docker.io/library/alpine:3.7.3 EOF
Modificar uma ImageList existente
Modifique o existente imagelist usando o kubectl edit comando.
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
Ao usar o modo manual, o pod é excluído dentro de 10 minutos após a eraser-aks-xxxxx conclusão do trabalho.
Lista de exclusão de imagens
As imagens especificadas na lista de exclusão não são removidas do cluster. O Image Cleaner suporta listas de exclusão definidas pelo sistema e pelo utilizador. Não há suporte para editar a lista de exclusão do sistema.
Verifique a lista de exclusão do sistema
Verifique a lista de exclusão do sistema usando o seguinte kubectl get comando.
kubectl get -n kube-system configmap eraser-system-exclusion -o yaml
Criar uma lista de exclusão definida pelo usuário
Crie um arquivo JSON de exemplo para conter imagens excluídas.
cat > sample.json <<EOF {"excluded": ["excluded-image-name"]} EOFCrie um
configmapusando o ficheiro JSON de exemplo usando o seguinte comandokubectl createekubectl label.kubectl create configmap excluded --from-file=sample.json --namespace=kube-system kubectl label configmap excluded eraser.sh/exclude.list=true -n kube-system
Desativar o Limpador de Imagens no AKS Standard
Desative o Limpador de Imagens num cluster AKS Standard usando o az aks update comando com o --disable-image-cleaner parâmetro.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Perguntas mais frequentes (FAQ)
O Limpador de Imagens está ativado por defeito no AKS Automático?
Yes. O Image Cleaner está pré-configurado em clusters automáticos do AKS.
Preciso de executar comandos de ativação do Image Cleaner no AKS Automatic?
N.º Utilize os comandos enable para o AKS Standard.
Como posso verificar qual versão o Image Cleaner está usando?
kubectl describe configmap -n kube-system eraser-manager-config | grep tag -C 3
O Image Cleaner suporta outros scanners de vulnerabilidade além do trivy-scanner?
N.º
Posso especificar níveis de vulnerabilidade para as imagens serem limpas?
N.º As configurações padrão para os níveis de vulnerabilidade incluem:
-
LOW, -
MEDIUM, -
HIGHe CRITICAL
Não é possível personalizar as configurações padrão.
Como rever as imagens que foram limpas pelo Image Cleaner?
Os logs de imagem são armazenados no worker pod eraser-aks-xxxxx. Quando eraser-aks-xxxxx estiver ativo, você poderá executar os seguintes comandos para exibir os logs de exclusão:
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
O eraser-aks-xxxxx pod é excluído dentro de 10 minutos após a conclusão do trabalho. Você pode seguir estas etapas para habilitar o complemento Azure Monitor e usar a tabela de log do pod do Container Insights. Depois disso, os logs históricos serão armazenados e pode revê-los mesmo que eraser-aks-xxxxx seja excluído.
Assegure que o Azure Monitor está ativado no seu cluster. Para obter etapas detalhadas, consulte Habilitar informações de contêiner em clusters AKS.
Por defeito, os registos dos contentores que estão em execução no espaço de nomes
kube-systemnão são recolhidos. Remova okube-systemnamespace doexclude_namespacesmapa de configuração e aplique o mapa de configuração para permitir a recolha destes registos. Consulte Configurar a coleta de dados do Container insights para obter detalhes.Obtenha o ID do recurso do Log Analytics usando o
az aks showcomando.az aks show --resource-group myResourceGroup --name myManagedClusterApós alguns minutos, o comando retorna informações formatadas em JSON sobre a solução, incluindo a ID do recurso do espaço de trabalho:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }No portal Azure, procure o ID do recurso do espaço de trabalho e depois selecione Logs.
Copie uma das seguintes consultas e cole-a na janela de consulta.
Use a consulta a seguir se o cluster estiver usando o esquema ContainerLogV2. Se ainda estiveres a usar
ContainerLog, atualiza para o ContainerLogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceSe quiser continuar a usar
ContainerLog, use a seguinte consulta: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 ```
Selecione Executar. Todos os logs de imagem excluídos aparecem na área Resultados.
Conteúdo relacionado
- Saiba mais sobre o AKS Automatic em O que é o Azure Kubernetes Service (AKS) Automatic?
- Crie um cluster AKS Automatic pronto para produção com Create an Azure Kubernetes Service (AKS) Cluster.