指定或排除ECS规格族创建Pod
在指定vCPU和内存创建ECI Pod的场景下,如果您对规格有一定要求,例如只想使用ecs.g6规格族,可添加k8s.aliyun.com/eci-instance-family
的Annotation来指定ECS规格族。本文介绍创建ECI Pod时,如何指定或排除ECS规格族。
功能说明
指定vCPU和内存创建ECI Pod时,系统会使用多种ECS规格进行支撑,并自动选择满足vCPU和内存条件且有库存的规格。此时,您可以添加Annotation(k8s.aliyun.com/eci-instance-family
)来指定或排除ECS规格族。
如果指定了某些ECS规格族,则系统仅会从相应的ECS规格族中进行选择。如果指定的ECS规格族没有库存,则不会创建ECI Pod。
如果排除了某些ECS规格族,则系统在选择规格时会排除这些规格族,从其他ECI支持的ECS规格族中选择规格。
可以配合使用k8s.aliyun.com/eci-instance-generation
来指定或排除ECS规格代数,实现更精细的规格控制。
支持指定或排除的ECS规格族如下:
ECS规格代数 | ECS规格族 |
7 | g7、c7、r7、hfc7、hfg7、hfr7、g7ne |
6 | g6e、g6、c6e、c6、r6e、r6、hfc6、hfg6、t6、s6 |
5 | g5、c5、r5、ic5、hfc5、hfg5、t5 |
4 | sn2ne、sn1ne、se1ne、se1、xn4、n4、mn4、e4 |
更多关于ECS规格的信息,请参见:
注意事项
指定或排除ECS规格族创建的ECI Pod按照实际生成的ECS规格进行计费,不按照vCPU和内存计费。
重要ECI Pod创建成功后,您可以执行
kubectl describe pod
命令查看其YAML详情,通过k8s.aliyun.com/eci-instance-spec
字段确认ECI Pod实际使用的ECS规格,ECI会按照该ECS规格进行计费。指定或排除ECS规格族时,系统无法自动选择到某些规格,如GPU规格(gn6i等)、本地盘规格(i2g等)等。如有需要,请明确指定ECS规格来创建ECI Pod。具体操作,请参见指定ECS规格创建Pod。
指定或排除ECS规格族的功能仅适用于指定vCPU和内存规格的场景,如果优先指定的是ECS规格,则该功能不会生效。
支持指定或排除规格族创建抢占式实例,该场景下系统会综合考量配置的规格族顺序和市场价格(价格优先),为您选择最优的实例规格。如果您对规格族有严格要求,建议只配置一个规格族。
指定或排除规格族的功能不支持创建ECI Job优化型实例,即不能和
k8s.aliyun.com/eci-network-config
一起使用。
配置说明
k8s.aliyun.com/eci-instance-family
的取值为ECS规格族,相关说明如下:
可配置多个规格族,取值范围为ECI支持的ECS规格族。
在规格族前加上
-
表示排除该规格族。例如:
k8s.aliyun.com/eci-instance-family: "-ecs.c6, -ecs.c5"
表示排除ecs.c6和ecs.c5规格族。对于指定的规格族,系统会按照配置的顺序进行选择。
例如:
k8s.aliyun.com/eci-instance-family: "ecs.c6, ecs.c5"
表示优先使用ecs.c6规格族,当ecs.c6规格族中,满足vCPU和内存条件的规格库存不足时,使用ecs.c5规格族。如果ecs.c5规格族仍库存不足,则创建失败。
使用k8s.aliyun.com/eci-instance-family
时,必须先指定vCPU和内存规格,您可以通过以下两种方式指定:
通过定义容器的limits或requests来指定,建议使用limits。
在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation来指定。
示例一:指定ECS规格族
配置项 | 实现效果 |
| 优先使用ecs.c6.large规格,其次使用ecs.g6.large规格。 说明 该示例配置效果等同于 |
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
name: test
labels:
app: test
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-instance-family: "ecs.c6,ecs.g6" #指定优先使用ecs.c6规格族的规格,其次使用ecs.g6规格族的规格
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
resources:
limits:
cpu: "2" #vCPU上限
memory: "4Gi" #内存上限
示例二:排除ECS规格族
配置项 | 实现效果 |
| 从除了ecs.t6和ecs.t5规格族外的其他ECI支持的ECS规格族中选择满足vCPU和内存要求的规格。 |
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "2-4Gi" #指定模糊的vCPU和内存规格
k8s.aliyun.com/eci-instance-family: "-ecs.t6,-ecs.t5" #排除ecs.t6和ecs.t5规格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例三:指定ECS规格代数并排除ECS规格族
配置项 | 实现效果 |
|
|
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "2-4Gi" #指定模糊的vCPU和内存规格
k8s.aliyun.com/eci-instance-generation: "6,5" #指定优先使用6代ECS规格,其次使用5代ECS规格
k8s.aliyun.com/eci-instance-family: "-ecs.t5" #排除ecs.t5规格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例四:排除ECS规格代数并排除ECS规格族
配置项 | 实现效果 |
| 从除了ecs.t6规格族外的其他7代和6代ECS规格中选择满足vCPU和内存条件的规格。 |
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "2-4Gi" #指定模糊的vCPU和内存规格
k8s.aliyun.com/eci-instance-generation: "-5,-4" #排除5代和4代ECS规格
k8s.aliyun.com/eci-instance-family: "-ecs.t6" #排除ecs.t6规格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例五:不生效配置
指定ECS规格族的功能仅适用于模糊指定vCPU和内存规格的场景,不适用于明确指定ECS规格的场景。
如下示例中,会自动忽略指定ecs.c6规格族的Annotation,仅使用ecs.c5.large规格创建ECI Pod。
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-test
labels:
app: nginx
alibabacloud.com/eci: "true"
annotations:
k8s.aliyun.com/eci-use-specs: "ecs.c5.large" #指定明确的ECS规格
k8s.aliyun.com/eci-instance-family: "ecs.c6" #指定ECS规格族(实际不会生效)
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80