Quando o ECI arredonda automaticamente as especificações de recursos do pod para a configuração compatível mais próxima, os contêineres sidecar podem elevar o total além de um limiar e acionar um salto maior no arredondamento, defina a variável de ambiente __ECI_RESOURCE_IGNORE__ nesses contêineres para excluí-los do cálculo de arredondamento e reduzir os custos do pod.
Como funciona
Ao crie um pod sem especifique vCPU e memória no nível de instância, o ECI calcula o tamanho do pod da seguinte forma:
Soma os limites de recursos de todos os contêineres do pod.
Arredonda o valor para cima, para a especificação do ECI compatível mais próxima, caso a soma não corresponda exatamente a uma delas.
Utiliza a especificação arredondada como o tamanho real do pod e como base para o faturamento.
Caso especifique vCPU e memória no nível de instância, a soma de todos os limites de recursos dos contêineres não poderá exceder a especificação no nível de instância.
Como os contêineres sidecar — como coletores de log, agentes de monitoramento ou proxies de service mesh — geralmente são pequenos em relação aos contêineres de aplicação, eles podem elevar o total além de um limiar e acionar um salto maior no arredondamento. Ao definir a variável __ECI_RESOURCE_IGNORE__ em um contêiner sidecar, você o exclui da etapa 1, e o ECI dimensiona o pod com base apenas nos seus contêineres de aplicação.

Exemplo — Considere um pod na região China (Hangzhou) com três contêineres:

|
Contêiner |
Tipo |
vCPU |
Memória |
|
Contêiner 1 |
Aplicação |
2 |
4 GiB |
|
Contêiner 2 |
Aplicação |
2 |
4 GiB |
|
Contêiner 3 |
Sidecar |
0,25 |
0,5 GiB |
Sem a variável de ambiente: o total é de 4,25 vCPU + 8,5 GiB, arredondado para 6 vCPU, 10 GiB.
**Com a variável
__ECI_RESOURCE_IGNORE__no Contêiner 3: o total é de 4 vCPU + 8 GiB, arredondado para 4 vCPU, 8 GiB**.
defina contêineres para ignorar
Adicione a seguinte variável de ambiente a cada contêiner que você deseja excluir do ajuste de recursos do ECI:
env:
- name: "__ECI_RESOURCE_IGNORE__"
value: "TRUE"
Exemplo
O Deployment a seguir cria duas réplicas. Cada pod possui dois contêineres: nginx1 (aplicação) e nginx2 (sidecar). O ECI dimensiona o pod com base apenas nos limites do nginx1.
Sem a variável__ECI_RESOURCE_IGNORE__nonginx2, os limites combinados são de 3 vCPU + 6 GiB. Na região China (Hangzhou), o ECI arredonda esse valor para 4 vCPU + 6 GiB. Com a variável definida, apenas os limites donginx1(2 vCPU + 4 GiB) são considerados.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx1
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
resources:
limits:
cpu: "2000m"
memory: "4096Mi"
- name: nginx2
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
resources:
limits:
cpu: "1000m"
memory: "2048Mi"
env:
- name: "__ECI_RESOURCE_IGNORE__"
value: "TRUE"
restartPolicy: Always