Em vez de fixar seu pod a um tipo específico de instância ECS, especifique apenas a quantidade de vCPUs e o tamanho de memória. O Elastic Container Instance (ECI) selecione automaticamente entre vários tipos de instância ECS compatíveis, proporcionando maior disponibilidade de recursos e elasticidade.
Como o dimensionamento de recursos funciona
Ao criar um pod, o ECI mapeia as vCPUs e a memória solicitadas para uma especificação compatível. Se a combinação exata não estiver disponível, o ECI arredonda para a próxima especificação compatível — o resultado é sempre maior ou igual ao que foi solicitado. Por exemplo, ao solicitar 7 vCPUs e 13 GiB, a instância criada terá 8 vCPUs e 14 GiB.
Todas as especificações incluem 30 GiB de armazenamento temporário e uma interface de rede elástica (ENI) por padrão. Se nenhuma configuração de recursos for definida, o ECI cria o pod com 2 vCPUs e 4 GiB de memória.
Especificações compatíveis
Disponíveis em todas as regiões
|
vCPU |
Memória (GiB) |
Largura de banda (bidirecional, Gbit/s, limite teórico máximo) |
|
0,25 |
0,5, 1 |
0,08 |
|
0,5 |
1, 2 |
0,08 |
|
1 |
2, 4, 8 |
0,1 |
|
2 |
1, 2, 4, 8, 16 |
1 |
|
4 |
2, 4, 8, 16, 32 |
1,5 |
|
8 |
4, 8, 16, 32, 64 |
2 |
|
12 |
12, 24, 48, 96 |
2,5 |
|
16 |
16, 32, 64, 128 |
3 |
|
24 |
24, 48, 96, 192 |
4,5 |
|
32 |
32, 64, 128, 256 |
6 |
|
52 |
96, 192, 384 |
12,5 |
|
64 |
128, 256, 512 |
20 |
Disponíveis apenas em regiões selecionadas
As especificações abaixo têm suporte apenas nas seguintes regiões: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu) e Singapore. Se a região ou zona especificada não tiver capacidade para a especificação solicitada, a criação do pod falhará. Essas especificações não podem ser usadas para instâncias preemptíveis.
|
vCPU |
Memória (GiB) |
Largura de banda (bidirecional, Gbit/s, limite teórico máximo) |
|
2 |
6, 10, 12, 14 |
1 |
|
4 |
6, 10, 12, 14, 18, 20, 22, 24, 26, 28, 30 |
1,5 |
|
6 |
6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48 |
1,5 |
|
8 |
10, 12, 14, 18, 20, 22, 24, 26, 28, 30, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62 |
2,5 |
Métodos de configuração
Dois métodos permitem definir vCPU e memória para um pod:
|
Método |
Aplicado em |
Indicado quando |
|
|
Por container |
É necessário controle de recursos ou cotas individuais por container |
|
Anotação |
Por pod |
Os containers compartilham recursos livremente, ou containers sidecar são injetados automaticamente (por exemplo, em Istio ou pipelines de genômica) |
Quando os dois métodos estão configurados, eci-use-specs tem precedência. A ordem completa de prioridade é:
|
Configuração |
Especificação do pod utilizada |
|
Nenhum parâmetro definido |
2 vCPUs, 4 GiB |
|
Apenas |
Soma de |
|
Apenas |
Soma de |
|
|
Soma de |
|
Apenas |
Valor de |
|
|
Valor de |
Se a especificação resultante do pod não estiver na lista de especificações compatíveis, o ECI arredonda para cima e cobra com base na especificação ajustada.
Definir recursos por container
Esta é a abordagem padrão do Kubernetes. Cada container no pod declara seu próprio bloco resources, e o ECI soma os valores de todos os containers para determinar a especificação do pod. Um pod pode ter até 20 containers, e a soma das especificações de vCPU e memória de todos os containers deve ser menor ou igual às especificações de vCPU e memória do pod.
Entendendo limits vs. requests
limits: o máximo de CPU ou memória que um container pode usar. O ECI utilizalimitspara calcular a especificação do pod. Comolimitsdefine um limite superior preciso, uselimitssempre que possível.requests: a quantidade mínima reservada para o container. Quando definido isoladamente, o ECI usarequestspara dimensionar o pod.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: "500m" # 0.5 vCPU for the nginx container
memory: "1024Mi" # 1 GiB for the nginx container
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "1000m" # 1 vCPU for the busybox container
memory: "2048Mi" # 2 GiB for the busybox container
# Combined: 1.5 vCPUs, 3 GiB total -> ECI rounds up to the nearest supported spec
Para impedir que um container específico (como um sidecar) seja contabilizado no dimensionamento do pod pelo ECI, defina uma variável de ambiente nesse container para excluí-lo. Para detalhes, consulte Ignore specific containers when the system adjusts resources .
Definir recursos para o pod inteiro
Adicione a anotação k8s.aliyun.com/eci-use-specs à seção metadata do pod para definir vCPU e memória no nível do pod. Os parâmetros limits e requests por container são opcionais com este método — os containers compartilham livremente os recursos do pod.
Este método é adequado quando:
Containers sidecar são injetados automaticamente por um service mesh (Istio) ou um framework de genômica, tornando o dimensionamento por container impraticável.
É necessário desacoplar a alocação de recursos das definições individuais de cada container.
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "2-4Gi" # 2 vCPUs, 4 GiB for the entire pod
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
- name: busybox
image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
command: ["sleep"]
args: ["999999"]
resources:
limits:
cpu: "500m" # Optional: cap individual container usage
memory: "1024Mi"
Para restringir quais famílias de instâncias ECS o ECI pode selecione (por exemplo, apenas famílias de sexta geração), adicione uma anotação separada para especifique as gerações de famílias de instâncias. Para detalhes, consulte Specify generations of ECS instance families to create pods .