配置资源规整时忽略特定容器
更新时间:2025-02-08
创建BCI Pod(即BCI实例)时,如果指定的vCPU和内存规格不满足BCI规格要求,系统会在满足资源需求的同时自动向最接近的BCI规格进行资源规整,规整后的规格过大可能会造成一定程度的资源浪费。对于一些不影响业务的容器(例如Sidecar容器),可以为其设置对应的Annotation,实现资源规整时忽略该容器,以避免资源浪费,节约BCI使用成本。
功能说明
指定vCPU和内存创建BCI实例时,您可以自定义指定每个容器的vCPU和内存,但汇总到实例级别时,需满足BCI实例整体的vCPU和内存要求。如果实例级别没有配置vCPU和内存,则会汇总计算所有容器的规格之和,对于总和不满足BCI规格的情况,系统会自动进行资源规整。
配置说明
为BCI Pod设置以下Annotation来标记资源规整时忽略的容器列表,容器名称之间用半角逗号隔开:
Plain Text
1bci.virtual-kubelet.io/bci-resource-ignore-containers: "container1,container2"
重要
- Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。
- 仅支持在创建BCI Pod时添加BCI相关Annotation来生效BCI功能,更新BCI Pod时添加或者修改BCI相关Annotation均不会生效。
配置示例
按以下YAML创建Deployment,BCI Pod的规格为1 vCPU、2 GiB内存,即采用nginx容器的limits,忽略sidecar容器的limits。
Plain Text
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: nginx
5 labels:
6 app: nginx
7spec:
8 replicas: 1
9 selector:
10 matchLabels:
11 app: nginx
12 template:
13 metadata:
14 name: nginx
15 labels:
16 app: nginx
17 annotations:
18 bci.virtual-kubelet.io/bci-resource-ignore-containers: "sidecar" # 声明资源规整时忽略的容器列表
19 spec:
20 containers:
21 - name: nginx
22 image: nginx:1.7.9
23 ports:
24 - containerPort: 80
25 resources:
26 limits:
27 cpu: "1"
28 memory: "2Gi"
29 - name: sidecar
30 image: sidecar:tag
31 ports:
32 - containerPort: 8080
33 resources:
34 limits:
35 cpu: "1"
36 memory: "2Gi"
37 restartPolicy: Always
说明
如果上述Yaml没有设置Annotation bci.virtual-kubelet.io/bci-resource-ignore-containers: "sidecar",则汇总nginx容器和sidecar容器的资源需求为2 vCPU、4 GiB,创建该Deployment时,资源规整后实际创建的BCI Pod为2 vCPU、4 GiB 规格。