建立ECI執行個體時,如果指定的vCPU和記憶體規格不滿足ECI規格約束,系統會在滿足資源需求的同時自動向最接近的ECI規格進行資源規整,規整後的規格過大可能會造成一定程度的資源浪費。對於一些不影響業務的容器(例如Sidecar容器),可以為其設定環境變數,實現資源規整時忽略該容器,以避免資源浪費,節約ECI使用成本。
功能說明
指定vCPU和記憶體建立ECI執行個體時,您可以自訂指定每個容器的vCPU和記憶體,但匯總到執行個體層級時,需滿足ECI執行個體整體的vCPU和記憶體約束。如果執行個體層級沒有配置vCPU和記憶體,則會匯總計算所有容器的規格之和,對於總和不滿足ECI規格的情況,系統會自動進行資源規整。
一般情況下,容器內指定的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記憶體。
配置說明
調用CreateContainerGroup介面建立ECI執行個體時,在未設定Cpu和Memory的情況下,通過Container.N.Cpu和Container.N.Memory可以指定容器的vCPU和記憶體。對於想要配置資源規整忽略的容器,可以通過Container.N.EnvironmentVar.N.Key和Container.N.EnvironmentVar.N.Value來設定環境變數(__ECI_RESOURCE_IGNORE__:TRUE
)。相關參數說明如下表所示。更多資訊,請參見CreateContainerGroup。
名稱 | 類型 | 樣本值 | 描述 |
Cpu | Float | 不設定 | 執行個體層級vCPU大小。單位:核。 |
Memory | Float | 不設定 | 執行個體層級記憶體大小。單位:GiB。 |
Container.N.Cpu | Float | 2 | 容器的vCPU大小。單位:核。N表示第幾個容器,最多20個。 |
Container.N.Memory | Float | 4 | 容器的記憶體大小。單位:GiB。N表示第幾個容器,最多20個。 |
Container.N.EnvironmentVar.N.Key | String | __ECI_RESOURCE_IGNORE__ | 環境變數名。第一個N表示第幾個容器,第二個N表示第幾個環境變數。 |
Container.N.EnvironmentVar.N.Value | String | TRUE | 環境變數值。第一個N表示第幾個容器,第二個N表示第幾個環境變數。 |
使用控制台建立ECI執行個體時,必須要設定執行個體層級的vCPU和記憶體,因此不涉及資源規整。