全部產品
Search
文件中心

Elastic Container Instance:配置資源規整時忽略特定容器

更新時間:Jul 06, 2024

建立ECI Pod(即ECI執行個體)時,如果指定的vCPU和記憶體規格不滿足ECI規格約束,系統會在滿足資源需求的同時自動向最接近的ECI規格進行資源規整,規整後的規格過大可能會造成一定程度的資源浪費。對於一些不影響業務的容器(例如Sidecar容器),可以為其設定環境變數,實現資源規整時忽略該容器,以避免資源浪費,節約ECI使用成本。

功能說明

指定vCPU和記憶體建立ECI執行個體時,您可以自訂指定每個容器的vCPU和記憶體,但匯總到執行個體層級時,需滿足ECI執行個體整體的vCPU和記憶體約束。如果執行個體層級沒有配置vCPU和記憶體,則會匯總計算所有容器的規格之和,對於總和不滿足ECI規格的情況,系統會自動進行資源規整。

資源規整2

一般情況下,容器內指定的vCPU和記憶體為容器資源上限,實際運行執行個體時,系統會動態調整資源分派。因此對於執行個體內一些不影響業務的特定容器,您可以通過設定環境變數__ECI_RESOURCE_IGNORE__:TRUE的方式,實現執行個體資源規整時忽略這些容器,避免資源規整後建立的執行個體規格過大,出現資源浪費。

樣本如下:

資源規整

如上圖所示,假設在華東1(杭州)地區建立一個ECI執行個體,該ECI執行個體包含3個容器,容器1和2(業務容器)均配置為2 vCPU、4 GiB記憶體,容器3(Sidecar容器)配置為0.25 vCPU、0.5 GiB記憶體。一般情況下,系統會自動將執行個體規格規整到6 vCPU、10 GiB記憶體。但實際情況下可能並不需要6 vCPU、10 GiB的資源,在不影響業務的基礎上,您可以為Sidecar容器設定環境變數__ECI_RESOURCE_IGNORE__:TRUE。配置後,系統會忽略Sidecar容器,將執行個體規格規整到4 vCPU、8GiB記憶體。

配置說明

為ECI Pod內的容器設定以下環境變數可以配置ECI資源規整忽略該容器:

env: 
- name: "__ECI_RESOURCE_IGNORE__"
  value: "TRUE"

配置樣本

按以下YAML建立Deployment,每個ECI Pod的規格為2 vCPU、4 GiB記憶體,即採用nginx1容器的limits,忽略nginx2容器的limits。

說明

如果nginx2容器沒有設定環境變數__ECI_RESOURCE_IGNORE__:TRUE,匯總nginx1容器和nginx2容器的資源需求為3 vCPU、6 GiB。在華東1(杭州)地區建立該Deployment時,資源規整後實際建立的ECI Pod為4 vCPU、6 GiB記憶體。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
    spec:
      containers:
      - name: nginx1
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        resources:
          limits:
            cpu: "2000m"    
            memory: "4096Mi"   
      - name: nginx2
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        resources:
          limits:
            cpu: "1000m"    
            memory: "2048Mi"   
        env: 
        - name: "__ECI_RESOURCE_IGNORE__"
          value: "TRUE"
      restartPolicy: Always