En lugar de vincular su pod a un tipo de instancia ECS específico, especifique únicamente la cantidad de vCPU y el tamaño de memoria. Elastic Container Instance (ECI) selecciona automáticamente entre varios tipos de instancia ECS compatibles. Esto le ofrece mejor disponibilidad y elasticidad de recursos.
Cómo funciona el dimensionamiento de recursos
Cuando crea un pod, ECI asigna los valores de vCPU y memoria solicitados a una especificación compatible. Si la combinación exacta no está disponible, ECI redondea hacia arriba hasta la siguiente especificación compatible. Por lo tanto, el resultado siempre es mayor o igual a lo que solicitó. Por ejemplo, si solicita 7 vCPU y 13 GiB, obtendrá una instancia con 8 vCPU y 14 GiB.
Todas las especificaciones incluyen 30 GiB de almacenamiento temporal y una interfaz de red elástica (ENI) de forma predeterminada. Si no se establece ninguna configuración de recursos, ECI crea el pod con 2 vCPU y 4 GiB de memoria.
Especificaciones compatibles
Available en todas las regiones
|
vCPU |
Memoria (GiB) |
Ancho de banda (bidireccional, Gbit/s, límite máximo teórico) |
|
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 |
Available solo en ciertas regiones
Las siguientes especificaciones son compatibles únicamente en estas regiones: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Chengdu) y Singapore. Si la región o zona que especifique no tiene capacidad para la especificación solicitada, la creación del pod fallará. Estas especificaciones no se pueden usar para preemptible instances.
|
vCPU |
Memoria (GiB) |
Ancho de banda (bidireccional, Gbit/s, límite máximo teórico) |
|
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 configuración
Existen dos métodos para establecer los valores de vCPU y memoria de un pod:
|
Método |
Se configura en |
Úselo cuando |
|
|
Cada contenedor |
Necesite control de recursos o cuotas por contenedor individual |
|
Anotación |
Cada pod |
Los contenedores compartan recursos libremente o se inyecten contenedores sidecar de forma automática (por ejemplo, en Istio o canalizaciones genómicas) |
Si configura ambos métodos, eci-use-specs tiene prioridad. A continuación se muestra el orden completo de prioridad:
|
Configuración |
Especificación de pod utilizada |
|
Ninguno de los parámetros configurado |
2 vCPU, 4 GiB |
|
Solo |
Suma de |
|
Solo |
Suma de |
|
|
Suma de |
|
Solo |
Valor de |
|
|
Valor de |
Si la especificación de pod resultante no está en la lista de opciones compatibles, ECI la redondea hacia arriba y le cobra según la especificación ajustada.
Establezca los recursos por contenedor
Este es el enfoque estándar de Kubernetes. Cada contenedor del pod declara su propio bloque resources. ECI suma los valores de todos los contenedores para determinar la especificación del pod. Un pod admite hasta 20 contenedores. Las especificaciones totales de vCPU y memoria de todos los contenedores deben ser menores o iguales a las especificaciones de vCPU y memoria del pod.
Diferencias entre limits y requests
limits: La cantidad máxima de CPU o memoria que puede usar un contenedor. ECI utilizalimitspara calcular la especificación del pod. Dado quelimitsproporciona un límite superior preciso, utilicelimitssiempre que sea posible.requests: La cantidad mínima reservada para el contenedor. Cuando se configura de forma aislada, ECI usarequestspara dimensionar el 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 evitar que ECI considere un contenedor específico (como un sidecar) al dimensionar el pod, establezca una variable de entorno en ese contenedor para excluirlo. Para más detalles, consulte Ignore specific containers when the system adjusts resources .
Establezca los recursos para todo el pod
Agregue la anotación k8s.aliyun.com/eci-use-specs a la sección metadata del pod para configurar los valores de vCPU y memoria en el nivel del pod. Con este método, los parámetros limits y requests en el nivel de contenedor son opcionales, ya que los contenedores comparten libremente los recursos del pod.
Este método es adecuado para los siguientes escenarios:
Una malla de servicios (Istio) o un framework genómico inyecta contenedores sidecar de forma automática, lo que hace poco práctico dimensionar cada contenedor por separado.
Necesita desacoplar la asignación de recursos de las definiciones individuales de cada contenedor.
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"
Si necesita restringir las familias de instancias ECS entre las que ECI puede elegir (por ejemplo, solo familias de sexta generación), agregue una anotación independiente para especificar las generaciones de familias de instancias. Para más detalles, consulte Specify generations of ECS instance families to create pods .