全部產品
Search
文件中心

Elastic Container Instance:配置eci-profile實現自動使用ImageCache

更新時間:Jul 06, 2024

eci-profile支援ECI Effect能力,可以為滿足條件的Pod自動追加Annotation來使用ECI的功能特性。本文介紹如何配置eci-profile,為特定Pod自動追加Annotation來使用ImageCache功能。

配置說明

基於eci-profile的ECI Effect能力,在eci-profile設定檔的selectors中,支援以數組的形式聲明需要匹配的Namespace或者Pod的Label,以及需要動態追加的ImageCache相關Annotation。對於Label能夠匹配上的Pod,將自動追加配置的Annotation。

說明

更多關於eci-profile的資訊,請參見配置eci-profile

支援為Pod添加的ImageCache相關Annotation如下:

使用方式

配置項

樣本值

說明

自動匹配

k8s.aliyun.com/eci-auto-imc

"true"

是否自動匹配ImageCache,預設為true,表示系統會根據匹配策略自動匹配最優的ImageCache建立Pod。匹配策略的優先順序從高到低依次為:鏡像匹配度、匹配的鏡像大小、建立時間。

如果沒有完全符合,系統會在建立Pod的同時自動建立對應的ImageCache。

k8s.aliyun.com/imc-perfect-match

"true"

Pod內所有容器鏡像是否均要完全符合ImageCache。預設為false。

k8s.aliyun.com/imc-match-count-request

"2"

Pod內要完全符合ImageCache的容器鏡像個數。

明確指定

k8s.aliyun.com/eci-imc-id

imc-2zebxkiifuyzzlhl****

明確指定使用某個ImageCache存建立Pod。

selectors說明如下:

  selectors: |
   [
    {
        "name":"demo",  #必填,不可為空
        "namespaceSelector":{  #選填,匹配Namespace Label
            "matchLabels":{  #需要匹配的Label,如果填寫多個,為與關係
                "app":"nginx"
            }
        },
        "objectSelector":{  #選填,匹配Pod Label
            "matchLabels":{  #需要匹配的Label,如果填寫多個,為與關係
                "type":"test"
            }
        },
        "effect":{  #需要動態追加的Annotation
            "annotations":{
                "k8s.aliyun.com/eci-auto-imc": "true"
            }
        }
    }
   ]

配置selectors後,您可以通過以下命令確認selectors是否生效。如果返回的YAML中已包含配置的selectors,則表示配置成功;如果未包含selectors,請檢查selectors的格式是否有誤。

kubectl get mutatingwebhookconfigurations -o yaml vk-webhook

配置樣本

編輯eci-profile設定檔。

kubectl -n kube-system edit cm eci-profile

在selectors中添加以下樣本內容:

[
  ...
	{
    "name":"image-cache-selector-1",
    "objectSelector":{
      "matchLabels":{
        "image-cache":"true"
      }
    },
    "effect": {
      "annotations": {
        "k8s.aliyun.com/eci-imc-id": "imc-uf6ic***************"
      }
    }
  },
  {
    "name":"image-cache-selector-2",
      "namespaceSelector":{
      "matchLabels":{
        "image-cache":"true"
      }
    },
    "effect": {
      "annotations": {
        "k8s.aliyun.com/eci-auto-imc": "true"
      }
    }
  }
]

上述配置包含了2個selector:

  • image-cache-selector-1:如果Pod帶有image-cache: true的Label,將自動追加 "k8s.aliyun.com/eci-imc-id": "imc-uf6ic***************"的Annotation,使用指定的鏡像緩衝。

  • image-cache-selector-2:如果Pod所屬Namespace帶有image-cache: true的Label,將自動追加 "k8s.aliyun.com/eci-auto-imc": "true"的Annotation,開啟自動匹配鏡像緩衝。