DataCache に依存する多数の Pod を実行する場合、各 Pod の spec に手動で DataCache のアノテーションを追加するのは、エラーが発生しやすく、メンテナンスも困難です。eci-profile の ECI Effect 機能を使用すると、ラベルセレクターに一致するすべての Pod に DataCache のアノテーションを自動的にインジェクトできます。個々の Pod の spec を変更する必要はありません。
このトピックでは、eci-profile のセレクターを設定して、特定のラベルを持つ Pod に k8s.aliyun.com/eci-data-cache-bucket アノテーションを自動的に追加する方法について説明します。
仕組み
eci-profile は、設定されているすべてのセレクターに対して Pod のラベルを評価します。Pod がセレクターの namespaceSelector または objectSelector の基準に一致する場合、eci-profile はセレクターの effect フィールドで定義されたアノテーションを Pod にインジェクトします。
前提条件
開始する前に、以下をご確認ください:
kube-system名前空間の ConfigMap を編集する権限を持つ、クラスターへのkubectlアクセスDataCache データを格納するためのバケット
eci-profile セレクターの設定
セレクターのフィールド
selectors 配列の各エントリには、name フィールドを含める必要があります。以下のフィールドも利用可能です:
| フィールド | 必須 | 説明 |
|---|---|---|
name | はい | このセレクターの一意の識別子 |
namespaceSelector | いいえ | 名前空間のラベルに基づいて Pod を照合します。これを使用して、特定のラベルを持つ名前空間内のすべての Pod にアノテーションを適用します。 |
objectSelector | いいえ | Pod 自身のラベルに基づいて Pod を照合します。これを使用して、ラベルによって個々の Pod をターゲットにします。 |
effect | いいえ | 一致する Pod にインジェクトするアノテーションとラベル |
DataCache セレクターの追加
eci-profile の ConfigMap を編集します。
kubectl -n kube-system edit cm eci-profileselectorsセクションにセレクターを追加します。次の例では、data-cache: "true"というラベルが付いたすべての Pod にk8s.aliyun.com/eci-data-cache-bucket: "default"アノテーションを自動的にインジェクトします。data: selectors: | [ { "name": "datacache-selector", "objectSelector": { "matchLabels": { "data-cache": "true" } }, "effect": { "annotations": { "k8s.aliyun.com/eci-data-cache-bucket": "default" } } } ]DataCache を作成します。詳細については、「DataCache の作成」をご参照ください。
DataCache を使用して Pod を作成します。
kubectl create -f test-edc.yaml以下は
test-edc.yamlのサンプルです。この Pod にはdata-cache: "true"ラベルが付与されており、これにより eci-profile がトリガーされ、k8s.aliyun.com/eci-data-cache-bucket: "default"アノテーションが自動的にインジェクトされます。重要DataCache を使用して Pod を作成する場合、
HostPathパラメーターを使用して、DataCache を格納するバケットとデータが格納されるパスを指定する必要があります。apiVersion: v1 kind: Pod metadata: name: test-edc labels: alibabacloud.com/eci: "true" data-cache: "true" # eci-profile をトリガーして k8s.aliyun.com/eci-data-cache-bucket アノテーションをインジェクトします spec: containers: - name: model image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2 command: ["sleep", "999999"] volumeMounts: - name: "model" mountPath: "/model" volumes: - name: "model" hostPath: path: "/model/test" # 必須: DataCache データが格納されるパス。実際のパスに置き換えてください。
次のステップ
eci-profile の設定 — eci-profile の完全な構造と利用可能なすべてのフィールドについて説明します。
DataCache の作成 — DataCache リソースを作成および管理します。