一部の Elastic Container Instance 機能を有効にするには、Pod にアノテーションを追加する必要があります。Elastic Container Instance の eci-profile 構成ファイルは、Pod にアノテーションを自動的に追加する ECI Effect 機能を提供します。このトピックでは、ImageCache 機能を使用して Pod の作成を高速化する場合に、eci-profile を構成して Pod にアノテーションを自動的に追加する方法について説明します。
説明
eci-profile の ECI Effect 機能を使用する場合、eci-profile 構成ファイルのセレクターで、一致させる名前空間ラベルまたは Pod ラベルを配列形式で宣言し、Pod に動的に追加する必要がある ImageCache 関連のアノテーションを宣言する必要があります。Pod に宣言されたラベルがある場合、指定されたアノテーションが Pod に自動的に追加されます。
詳細については、eci-profile の構成を参照してください。
次の表に、Pod に追加できる ImageCache 関連のアノテーションを示します。
ImageCache の使用方法 | アノテーション | 値の例 | 説明 |
イメージキャッシュの自動一致を有効にする | k8s.aliyun.com/eci-auto-imc | "true" | イメージキャッシュを自動的に一致させるかどうかを指定します。デフォルト値は true で、一致ポリシーに基づいて Pod を作成するのに最適なイメージキャッシュがシステムによって自動的に一致することを示します。システムは、イメージの一致度、イメージのサイズ、イメージの作成時点の順にイメージキャッシュを選択します。 完全に一致するイメージキャッシュがない場合、システムは Pod を作成するときに、対応するイメージキャッシュを自動的に作成します。 |
k8s.aliyun.com/imc-perfect-match | "true" | Pod 内のすべてのコンテナイメージがイメージキャッシュと一致する必要があるかどうかを指定します。デフォルト値:false。 | |
k8s.aliyun.com/imc-match-count-request | "2" | イメージキャッシュと完全に一致させたい Pod 内のコンテナイメージの数を指定します。 | |
使用するイメージキャッシュを指定する | k8s.aliyun.com/eci-imc-id | imc-2zebxkiifuyzzlhl**** | Pod を作成するイメージキャッシュを指定します。 |
次のコードはセレクターを示しています。
selectors: |
[
{
"name":"demo", # 必須。セレクターの名前。
"namespaceSelector":{ # オプション。名前空間ラベルが一致する。
"matchLabels":{ # 一致させるラベル。複数のラベルを指定する場合、ラベル間の関係は AND です。
"app":"nginx"
}
},
"objectSelector":{ # オプション。Pod ラベルが一致する。
"matchLabels":{ # 一致させるラベル。複数のラベルを指定する場合、ラベル間の関係は AND です。
"type":"test"
}
},
"effect":{ # 動的に追加されるアノテーション。
"annotations":{
"k8s.aliyun.com/eci-auto-imc": "true"
}
}
}
]
セレクターを構成した後、次のコマンドを実行して、セレクターが有効になっているかどうかを確認できます。返された YAML ファイルに構成されたセレクターが含まれている場合、セレクターは有効になっています。返された YAML ファイルに構成されたセレクターが含まれていない場合は、セレクターの形式が正しいかどうかを確認してください。
kubectl get mutatingwebhookconfigurations -o yaml vk-webhook
例
eci-profile 構成ファイルを編集します。
kubectl -n kube-system edit cm eci-profile
次のサンプルコンテンツをセレクターに追加します。
[
...
{
"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 つのセレクターが含まれています。
image-cache-selector-1: Pod に
image-cache: true
ラベルが含まれている場合、"k8s.aliyun.com/eci-imc-id": "imc-uf6ic***************"
アノテーションが Pod に自動的に追加され、指定されたイメージキャッシュを使用して Pod の作成が高速化されます。image-cache-selector-2: 名前空間に
image-cache: true
ラベルが含まれている場合、"k8s.aliyun.com/eci-auto-imc": "true"
アノテーションが名前空間内の Pod に自動的に追加され、イメージキャッシュの自動一致が開始されます。