Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard
É comum usar pipelines para criar e implantar imagens em clusters do 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 a sobrecarga de imagem nos nós do cluster. Essas imagens podem conter vulnerabilidades, o que pode criar problemas de segurança. Para remover riscos de segurança em seus clusters, você pode limpar essas imagens não referenciadas. A limpeza manual de imagens pode consumir muito tempo. O Limpador de Imagens 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 é o padrão pronto para produção recomendado para a maioria das cargas de trabalho do AKS. O Limpador de Imagens é pré-configurado em clusters automáticos do AKS para ajudar a remover imagens não utilizados com vulnerabilidades por padrão.
Em clusters padrão do AKS, o Limpador de Imagens é opcional e você o habilita explicitamente.
Para obter mais informações sobre o AKS Automatic, consulte O que é AKS (Serviço de Kubernetes do Azure) Automático?
Observação
O Image Cleaner é um recurso baseado no Eraser. No AKS, o nome do recurso e o nome da propriedade são Image Cleaner, enquanto os nomes dos pods do Image Cleaner relevantes contêm Eraser.
Comportamento automático do AKS e do AKS Standard
Pré-requisitos
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
- Para configuração do AKS Standard por meio de CLI do Azure, CLI do Azure versão 2.49.0 ou posterior. Execute
az --versionpara localizar a sua versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Limitações
A Limpeza de Imagens ainda não oferece suporte a pools de nós do Windows nem a nós virtuais do AKS.
Como funciona o Image Cleaner
Quando você ativa o Limpador de Imagens em seu cluster, ele implanta um pod do gerenciador de controladores chamado eraser-controller-manager.
O Image Cleaner dá suporte a modos de limpeza automáticos e manuais.
Opções de configuração para o AKS Standard
Use essas opções ao configurar o Limpador de Imagens no AKS Standard com CLI do Azure.
| Nome | Descrição | Necessário |
|---|---|---|
--enable-image-cleaner |
Habilitar o Limpador de Imagens para um cluster do AKS | Sim, a menos que você especifique a desativação |
--disable-image-cleaner |
Desabilitar o Limpador de Imagens para um cluster do AKS | Sim, a menos que você especifique habilitar |
--image-cleaner-interval-hours |
Intervalo em horas para execuções agendadas. O padrão da CLI do Azure é de uma semana. O mínimo é de 24 horas. O máximo é de três meses. | Não é necessário para CLI do Azure; necessário para o modelo do ARM ou outros clientes |
Observação
Se você desabilitar o Image Cleaner e depois reenabilitá-lo sem passar explicitamente a configuração, o valor de configuração anterior será reutilizado.
Modo automático
Quando você implanta eraser-controller-manager, o Image Cleaner executa automaticamente estas ações:
- Inicia a limpeza e cria pods de trabalho
eraser-aks-xxxxxpara cada nó. - Usa um contêiner collector para coletar imagens não utilizadas.
- Usa um contêiner trivy-scanner para verificar vulnerabilidades com trivy.
- Usa um contêiner de removedor para remover imagens não utilizadas com vulnerabilidades.
- Exclui 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 disparar manualmente a limpeza definindo um objeto CRD,ImageList. Isso dispara o eraser-contoller-manager para criar eraser-aks-xxxxx pods de trabalho para cada nó e concluir o processo de remoção manual.
Observação
Depois de desabilitar o Image Cleaner, a configuração antiga ainda existirá. Isso significa que se você habilitar o recurso novamente sem passar explicitamente a configuração, o valor existente será usado em vez do padrão.
Usar o Limpador de Imagens no AKS Automático e no AKS Standard
AKS Automático
O Limpador de Imagens é pré-configurado em clusters automáticos do AKS, que são o padrão pronto para produção recomendado para a maioria das cargas de trabalho do AKS. Você não precisa executar um comando de habilitação separado.
Para criar um cluster automático do AKS, consulte Criar um cluster automático do AKS.
Use as diretrizes manuais de limpeza e monitoramento neste artigo quando desejar a correção direcionada ou a verificação operacional.
AKS Standard: habilitar em um novo cluster
Habilite o Image Cleaner em um novo cluster Standard do AKS usando o comando az aks create com o parâmetro --enable-image-cleaner.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner \
--generate-ssh-keys
AKS Standard: habilitar em um cluster existente
Habilite o Limpador de Imagens em um cluster padrão do AKS existente usando o az aks update comando.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-image-cleaner
AKS Standard: intervalo de atualização em um cluster novo ou existente
Atualize o intervalo do Limpador de Imagens em um cluster novo ou existente do AKS Standard 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 Limpador de Imagens
Importante
O name deve ser definido como imagelist.
Remova manualmente uma imagem usando o seguinte comando kubectl apply. Este exemplo remove a imagem docker.io/library/alpine:3.7.3 se ela não estiver sendo 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ó é disparada quando um novo imagelist é criado ou quando são feitas alterações no imagelist existente. Depois que a imagem for excluída, o imagelist não será excluído automaticamente.
Se precisar disparar outra limpeza manual, você deverá criar um novo imagelist ou fazer alterações em um já existente. Se quiser remover a mesma imagem novamente, você precisará criar um imagelist.
Excluir uma ImageList existente e criar outra
Exclua o antigo
imagelistusando o comandokubectl delete.kubectl delete ImageList imagelistCrie um novo
imagelistcom o mesmo nome da 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 um ImageList existente
Modifique o imagelist existente usando o comando 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
Ao usar o modo manual, o pod eraser-aks-xxxxx será excluído em 10 minutos após a 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 Limpador de Imagens oferece suporte a listas de exclusão definidas pelo sistema e pelo usuário. 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 comando kubectl get.
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 arquivo 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
Desabilitar o Limpador de Imagens no AKS Standard
Desative o Limpador de Imagens em um cluster AKS Standard usando o comando az aks update com o parâmetro --disable-image-cleaner.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--disable-image-cleaner
Perguntas frequentes (FAQs)
O Limpador de Imagens está habilitado por padrão no AKS Automatic?
Sim. O Limpador de Imagens é pré-configurado em clusters automáticos do AKS.
Preciso executar comandos de habilitação para o Limpador de Imagens no AKS Automatic?
Não. Use os comandos de habilitação 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 Limpador de Imagens suporta outros scanners de vulnerabilidade além do trivy-scanner?
Não.
Posso especificar níveis de vulnerabilidade para imagens a serem limpas?
Não. 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 revisar as imagens que foram limpas pelo Image Cleaner?
Os registros de imagem são armazenados no pod de trabalho eraser-aks-xxxxx. Quando eraser-aks-xxxxx estiver ativo, você poderá executar os seguintes comandos para exibir os registros 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 pod eraser-aks-xxxxx é excluído em 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 registro de pods do Container Insights. Depois disso, os registros históricos serão armazenados e você poderá revisá-los mesmo que eraser-aks-xxxxx seja excluído.
Verifique se Azure Monitor está habilitado no cluster. Para ver as etapas detalhadas, consulte Habilitar o Container Insights nos clusters do AKS.
Por padrão, os logs dos contêineres em execução no
kube-systemnamespace não são coletados. Remova o namespacekube-systemdeexclude_namespacesno mapa de configurações e aplique o mapa de configurações para habilitar a coleta desses logs. Consulte Configurar a coleta de dados dos insights do Contêiner para obter detalhes.Obtenha o ID do recurso do Log Analytics usando o comando
az aks show.az aks show --resource-group myResourceGroup --name myManagedClusterApós alguns minutos, o comando retornará informações no formato JSON sobre a solução, incluindo a ID do recurso do workspace:
"addonProfiles": { "omsagent": { "config": { "logAnalyticsWorkspaceResourceID": "/subscriptions/<WorkspaceSubscription>/resourceGroups/<DefaultWorkspaceRG>/providers/Microsoft.OperationalInsights/workspaces/<defaultWorkspaceName>" }, "enabled": true } }No portal do Azure, procure pela ID de recurso do workspace e, em seguida, selecione Logs.
Copie uma das consultas a seguir e cole-a na janela de consulta.
Use a seguinte consulta se seu cluster estiver usando o esquema ContainerLogV2. Se você ainda estiver usando
ContainerLog, atualize para ContainerLogV2.ContainerLogV2 | where PodName startswith "eraser-aks-" and PodNamespace == "kube-system" | project TimeGenerated, PodName, LogMessage, LogSourceSe você quiser continuar usando
ContainerLog, use a seguinte consulta em vez disso: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 AKS (Serviço de Kubernetes do Azure) Automatic?
- Crie um cluster do AKS Automático preparado para produção com Criar um cluster do Serviço de Kubernetes do Azure (AKS) Automático.