O recurso ECI Effect no eci-profile permite definir seletores que injetam automaticamente anotações relacionadas ao ImageCache em pods correspondentes. Quando um pod atende às condições de rótulo de um seletor, o sistema adiciona as anotações especificadas sem intervenção manual. Isso acelera a criação do pod sem alterar suas especificações individuais.
Nota: Para mais informações sobre o eci-profile, consulte Configure an eci-profile .
Pré-requisitos
Antes de começar, verifique se você tem:
Acesso a um cluster Kubernetes com ECI habilitado
Permissão para editar o ConfigMap
eci-profileno namespacekube-systemkubectlconfigurado para se comunicar com o cluster
Como funciona
O eci-profile usa um webhook de mutação (vk-webhook) para interceptar solicitações de criação de pods. Durante a criação, o webhook verifica os rótulos do pod e do namespace em relação aos seletores definidos no eci-profile. Se houver correspondência, o webhook injeta as anotações adequadas no pod e habilita automaticamente a aceleração por cache de imagem.
Anotações de ImageCache
As anotações a seguir controlam o uso de caches de imagem durante a criação de pods.
|
Anotação |
Valor de exemplo |
Descrição |
|
|
|
Habilita a correspondência automática de cache de imagem. Quando definido como |
|
|
|
Exige que todas as imagens de contêiner do pod correspondam exatamente ao cache de imagem. Padrão: |
|
|
|
Define a quantidade de imagens de contêiner no pod que devem corresponder exatamente ao cache de imagem. |
|
|
|
Vincula o pod a um cache de imagem específico por ID. |
Campos do seletor
Cada seletor no array selectors do eci-profile contém os seguintes campos:
|
Campo |
Obrigatório |
Descrição |
|
|
Sim |
Nome exclusivo do seletor. |
|
|
Não |
Filtra pods com base nos rótulos do namespace. Se omitido, todos os namespaces são elegíveis. |
|
|
Não |
Filtra pods com base nos rótulos do pod. Se omitido, todos os pods nos namespaces correspondentes são elegíveis. |
|
|
Sim |
Anotações a serem injetadas nos pods correspondentes. |
Quando vários rótulos são especificados em namespaceSelector.matchLabels ou objectSelector.matchLabels, todos devem corresponder simultaneamente (lógica AND).
Configurar seletores
-
Abra o ConfigMap do eci-profile para edição:
kubectl -n kube-system edit cm eci-profile -
Adicione os seletores ao campo
selectorsno formato de array:selectors: | [ { "name": "demo", "namespaceSelector": { "matchLabels": { "app": "nginx" } }, "objectSelector": { "matchLabels": { "type": "test" } }, "effect": { "annotations": { "k8s.aliyun.com/eci-auto-imc": "true" } } } ] Salve e saia do editor. O Kubernetes aplica as alterações automaticamente.
Verificar a configuração
Execute o comando a seguir para confirmar se os seletores estão ativos:
kubectl get mutatingwebhookconfigurations -o yaml vk-webhook
Se o YAML retornado contiver os seletores configurados, eles estarão em vigor. Caso os seletores não apareçam, verifique se há erros de formatação JSON no campo selectors do ConfigMap.
Exemplo
O exemplo a seguir define dois seletores com estratégias de correspondência distintas.
Edite o ConfigMap do eci-profile:
kubectl -n kube-system edit cm eci-profile
Adicione o conteúdo a seguir ao campo selectors:
[
...
{
"name": "image-cache-selector-1",
"objectSelector": {
"matchLabels": {
"image-cache": "true"
}
},
"effect": {
"annotations": {
"k8s.aliyun.com/eci-imc-id": "imc-uf6ic***************"
}
}
},
{
"name": "image-cache-selector-2",
"namespaceSelector": {
"matchLabels": {
"image-cache": "true"
}
},
"effect": {
"annotations": {
"k8s.aliyun.com/eci-auto-imc": "true"
}
}
}
]
Funcionamento de cada seletor:
image-cache-selector-1: Todo pod com o rótulo
image-cache: truerecebe automaticamente a anotaçãok8s.aliyun.com/eci-imc-id: imc-uf6ic***************e é vinculado ao cache de imagem especificado.image-cache-selector-2: Qualquer pod criado em um namespace com o rótulo
image-cache: truerecebe automaticamente a anotaçãok8s.aliyun.com/eci-auto-imc: "true". Isso ativa a correspondência automática de cache de imagem para todos os pods desse namespace.