指定或排除ECS規(guī)格族創(chuàng)建Pod
在指定vCPU和內(nèi)存創(chuàng)建ECI Pod的場(chǎng)景下,如果您對(duì)規(guī)格有一定要求,例如只想使用ecs.g6規(guī)格族,可添加k8s.aliyun.com/eci-instance-family
的Annotation來指定ECS規(guī)格族。本文介紹創(chuàng)建ECI Pod時(shí),如何指定或排除ECS規(guī)格族。
功能說明
指定vCPU和內(nèi)存創(chuàng)建ECI Pod時(shí),系統(tǒng)會(huì)使用多種ECS規(guī)格進(jìn)行支撐,并自動(dòng)選擇滿足vCPU和內(nèi)存條件且有庫存的規(guī)格。此時(shí),您可以添加Annotation(k8s.aliyun.com/eci-instance-family
)來指定或排除ECS規(guī)格族。
如果指定了某些ECS規(guī)格族,則系統(tǒng)僅會(huì)從相應(yīng)的ECS規(guī)格族中進(jìn)行選擇。如果指定的ECS規(guī)格族沒有庫存,則不會(huì)創(chuàng)建ECI Pod。
如果排除了某些ECS規(guī)格族,則系統(tǒng)在選擇規(guī)格時(shí)會(huì)排除這些規(guī)格族,從其他ECI支持的ECS規(guī)格族中選擇規(guī)格。
可以配合使用k8s.aliyun.com/eci-instance-generation
來指定或排除ECS規(guī)格代數(shù),實(shí)現(xiàn)更精細(xì)的規(guī)格控制。
支持指定或排除的ECS規(guī)格族如下:
ECS規(guī)格代數(shù) | ECS規(guī)格族 |
8 | g8i、c8i、r8i、hfg8i、hfc8i、hfr8i |
7 | g7、c7、r7、hfg7、hfc7、hfr7、g7ne |
6 | g6e、g6、c6e、c6、r6e、r6、hfc6、hfg6、s6 |
5 | u1、g5、g5ne、c5、r5、ic5、hfc5、hfg5 |
4 | sn2ne、sn1ne、se1ne、se1 |
關(guān)于ECS規(guī)格的詳細(xì)信息,請(qǐng)參見:
注意事項(xiàng)
指定或排除ECS規(guī)格族創(chuàng)建的ECI Pod按照實(shí)際生成的ECS規(guī)格進(jìn)行計(jì)費(fèi),不按照vCPU和內(nèi)存計(jì)費(fèi)。
重要ECI Pod創(chuàng)建成功后,您可以執(zhí)行
kubectl describe pod
命令查看其YAML詳情,通過k8s.aliyun.com/eci-instance-spec
字段確認(rèn)ECI Pod實(shí)際使用的ECS規(guī)格,ECI會(huì)按照該ECS規(guī)格進(jìn)行計(jì)費(fèi)。指定或排除ECS規(guī)格族時(shí),系統(tǒng)無法自動(dòng)選擇到某些規(guī)格,如GPU規(guī)格(gn6i等)、本地盤規(guī)格(i2g等)等。如有需要,請(qǐng)明確指定ECS規(guī)格來創(chuàng)建ECI Pod。具體操作,請(qǐng)參見指定ECS規(guī)格創(chuàng)建Pod。
指定或排除ECS規(guī)格族的功能僅適用于指定vCPU和內(nèi)存規(guī)格的場(chǎng)景,如果優(yōu)先指定的是ECS規(guī)格,則該功能不會(huì)生效。
支持指定或排除規(guī)格族創(chuàng)建搶占式實(shí)例,該場(chǎng)景下系統(tǒng)會(huì)綜合考量配置的規(guī)格族順序和市場(chǎng)價(jià)格(價(jià)格優(yōu)先),為您選擇最優(yōu)的實(shí)例規(guī)格。如果您對(duì)規(guī)格族有嚴(yán)格要求,建議只配置一個(gè)規(guī)格族。
配置說明
k8s.aliyun.com/eci-instance-family
的取值為ECS規(guī)格族,相關(guān)說明如下:
可配置多個(gè)規(guī)格族,取值范圍為ECI支持的ECS規(guī)格族。
在規(guī)格族前加上
-
表示排除該規(guī)格族。例如:
k8s.aliyun.com/eci-instance-family: "-ecs.c6, -ecs.c5"
表示排除ecs.c6和ecs.c5規(guī)格族。對(duì)于指定的規(guī)格族,系統(tǒng)會(huì)按照配置的順序進(jìn)行選擇。
例如:
k8s.aliyun.com/eci-instance-family: "ecs.c6, ecs.c5"
表示優(yōu)先使用ecs.c6規(guī)格族,當(dāng)ecs.c6規(guī)格族中,滿足vCPU和內(nèi)存條件的規(guī)格庫存不足時(shí),使用ecs.c5規(guī)格族。如果ecs.c5規(guī)格族仍庫存不足,則創(chuàng)建失敗。
使用k8s.aliyun.com/eci-instance-family
時(shí),必須先指定vCPU和內(nèi)存規(guī)格,您可以通過以下兩種方式指定:
通過定義容器的limits或requests來指定,建議使用limits。
在Pod metadata中添加
k8s.aliyun.com/eci-use-specs
的Annotation來指定。
示例一:指定ECS規(guī)格族
配置項(xiàng) | 實(shí)現(xiàn)效果 |
| 優(yōu)先使用ecs.c6.large規(guī)格,其次使用ecs.g6.large規(guī)格。 說明 該示例配置效果等同于 |
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" # 指定優(yōu)先使用ecs.c6規(guī)格族的規(guī)格,其次使用ecs.g6規(guī)格族的規(guī)格
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" # 內(nèi)存上限
示例二:排除ECS規(guī)格族
配置項(xiàng) | 實(shí)現(xiàn)效果 |
| 從除了ecs.hfg6和ecs.hfg5規(guī)格族外的其他ECI支持的ECS規(guī)格族中選擇滿足vCPU和內(nèi)存要求的規(guī)格。 |
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和內(nèi)存規(guī)格
k8s.aliyun.com/eci-instance-family: "-ecs.hfg6,-ecs.hfg5" # 排除ecs.hfg6和ecs.hfg5規(guī)格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例三:指定ECS規(guī)格代數(shù)并排除ECS規(guī)格族
配置項(xiàng) | 實(shí)現(xiàn)效果 |
|
|
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和內(nèi)存規(guī)格
k8s.aliyun.com/eci-instance-generation: "6,5" # 指定優(yōu)先使用6代ECS規(guī)格,其次使用5代ECS規(guī)格
k8s.aliyun.com/eci-instance-family: "-ecs.hfg5" # 排除ecs.hfg5規(guī)格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例四:排除ECS規(guī)格代數(shù)并排除ECS規(guī)格族
配置項(xiàng) | 實(shí)現(xiàn)效果 |
| 從除了ecs.hfg6規(guī)格族外的其他7代和6代ECS規(guī)格中選擇滿足vCPU和內(nèi)存條件的規(guī)格。 |
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和內(nèi)存規(guī)格
k8s.aliyun.com/eci-instance-generation: "-5,-4" # 排除5代和4代ECS規(guī)格
k8s.aliyun.com/eci-instance-family: "-ecs.hfg6" # 排除ecs.hfg6規(guī)格族
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
示例五:不生效配置
指定ECS規(guī)格族的功能僅適用于模糊指定vCPU和內(nèi)存規(guī)格的場(chǎng)景,不適用于明確指定ECS規(guī)格的場(chǎng)景。如果指定ECS規(guī)格族的功能沒有生效,會(huì)生成IgnoreInstanceTypeFeatures事件。
事件名稱 | 事件類型 | 事件信息 | 事件說明 |
IgnoreInstanceTypeFeatures | Warning | [eci.containergroup]The instance type features will be ignored as the provided specifications, [%s],correspond exclusively to ECS instance types. | 由于已通過 |
如下示例中,會(huì)自動(dòng)忽略指定ecs.c6規(guī)格族的Annotation,僅使用ecs.c5.large規(guī)格創(chuàng)建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規(guī)格
k8s.aliyun.com/eci-instance-family: "ecs.c6" # 指定ECS規(guī)格族(實(shí)際不會(huì)生效)
spec:
containers:
- name: nginx
image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
ports:
- containerPort: 80
在Pod事件中可看到IgnoreInstanceTypeFeatures事件如下: