配置资源规整时忽略特定容器
更新时间:2025-02-08
创建BCI Pod(即BCI实例)时,如果指定的vCPU和内存规格不满足BCI规格要求,系统会在满足资源需求的同时自动向最接近的BCI规格进行资源规整,规整后的规格过大可能会造成一定程度的资源浪费。对于一些不影响业务的容器(例如Sidecar容器),可以为其设置对应的Annotation,实现资源规整时忽略该容器,以避免资源浪费,节约BCI使用成本。
功能说明
指定vCPU和内存创建BCI实例时,您可以自定义指定每个容器的vCPU和内存,但汇总到实例级别时,需满足BCI实例整体的vCPU和内存要求。如果实例级别没有配置vCPU和内存,则会汇总计算所有容器的规格之和,对于总和不满足BCI规格的情况,系统会自动进行资源规整。
配置说明
为BCI Pod设置以下Annotation来标记资源规整时忽略的容器列表,容器名称之间用半角逗号隔开:
bci.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。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx
labels:
app: nginx
annotations:
bci.virtual-kubelet.io/bci-resource-ignore-containers: "sidecar" # 声明资源规整时忽略的容器列表
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
resources:
limits:
cpu: "1"
memory: "2Gi"
- name: sidecar
image: sidecar:tag
ports:
- containerPort: 8080
resources:
limits:
cpu: "1"
memory: "2Gi"
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 规格。