KubernetesクラスターにElastic Container Instanceベースのポッドを作成するときに、ポッドにアノテーションを追加して、Elastic Container Instanceの機能を最大限に活用できます。 追加するアノテーションがKubernetes構文に準拠していることを確認します。 このトピックでは、Elastic Container Instanceでサポートされるアノテーションについて説明します。 このトピックでは、アノテーションの設定方法の例も示します。
次の表に、Elastic Container Instanceでサポートされているアノテーションを示します。
次の表に示すアノテーションは、仮想ノードにスケジュールされているポッドにのみ適用できます。 これらのポッドは、Elastic Container Instanceで実行されます。 実ノードにスケジュールされているポッドにアノテーションを追加することはできません。
ポッドのメタデータに注釈を追加します。 例えば、デプロイメントを設定する場合、spec.template.metadata セクションにアノテーションを追加します。
注釈 | 例 | 説明 | 参考資料 |
---|---|---|---|
k8s.aliyun.com/eci-security-group | sg-bp1dktddjsg5nktv **** | セキュリティグループの ID です。 | |
k8s.aliyun.com/eci-vswitch | vsw-bp1xpiowfm5vo8o3c**** | The IDs of the vSwitches. 複数のゾーンに複数のvSwitchを指定できます。 | |
k8s.aliyun.com/eci-schedule-strategy | VSwitchOrdered | マルチゾーンスケジューリングポリシー。 設定可能な値は以下のとおりです。
| |
k8s.aliyun.com/eci-ram-role-name | AliyunECIContainerGroupRole | Elastic Container Instanceが他のAlibaba Cloudサービスにアクセスするために想定しているリソースアクセス管理(RAM)の役割です。 | なし 以下のセクションでは、詳細について説明します。 |
k8s.aliyun.com/eci-use-specs | 2-4Gi、4-8Gi、ecs.c6.xlarge | エラスティックコンテナインスタンスタイプ。 複数のエラスティックコンテナインスタンスタイプを指定できます。 エラスティックコンテナインスタンスタイプを指定するには、vCPUの数とメモリサイズを指定するか、ECSインスタンスタイプを指定します。 | |
k8s.aliyun.com/eci-spot-strategy | SpotAsPriceGo | プリエンプティブルインスタンスの入札ポリシー。 設定可能な値は以下のとおりです。
| |
k8s.aliyun.com/eci-spot-price-limit | 0.5 | プリエンプティブルインスタンスの1時間あたりの最大料金。 このパラメータは k8s.aliyun.com/eci-spot-strategy が SpotWithPriceLimit に設定されているときのみ有効です。 | |
k8s.aliyun.com/eci-cpu-option-core | 2 | 物理CPUコアの数。 | |
k8s.aliyun.com/eci-cpu-option-ht | 1 | コア当たりのスレッド数。 | |
k8s.aliyun.com/eci-reschedule-enable | "true" | Elastic Container Instanceの再スケジューリングを有効にするかどうかを指定します。 | なし 次のセクションで詳細を説明します。 |
k8s.aliyun.com/pod-fail-on-create-err | "true" | 作成できないElastic Container InstanceをFailed状態にするかどうかを指定します。 | なし 次のセクションで詳細を説明します。 |
k8s.aliyun.com/eci-image-snapshot-id | imc-2zebxkiifuyzzlhl **** | イメージキャッシュのID。 説明 イメージキャッシュを使用してElastic Container Instanceを作成するには、使用するイメージキャッシュを指定するか、イメージキャッシュの自動マッチングを有効にします。 画像キャッシュの自動マッチングを有効にすることをお勧めします。 | |
k8s.aliyun.com/eci-image-cache | "true" | 画像キャッシュの自動マッチングを有効にするかどうかを指定します。 説明 イメージキャッシュを使用してエラスティックコンテナインスタンスを作成するには、使用するイメージキャッシュを指定するか、イメージキャッシュの自動マッチングを有効にすることができます。 イメージキャッシュの自動マッチングを有効にすることを推奨します。 | |
k8s.aliyun.com/acr-instance-id | cri-j36zhodptmyq**** | Container Registry Enterprise Edition のインスタンスの ID。 Elastic Container Instanceのリージョンとは異なるリージョンに存在するContainer Registry Enterprise Editionインスタンスを指定できます。 これを行うには、Container Registry Enterprise Editionインスタンスのリージョン名の前にContainer Registry Enterprise EditionインスタンスのIDを付ける必要があります。 Example: | Container Registry Enterprise Edition インスタンスからイメージをプルするためのパスワード不要のアクセスを設定します。 |
k8s.aliyun.com/eci-eip-instanceid | eip-bp1q5n8cq4p7f6dzu **** | elastic IPアドレス (EIP) のID。 | |
k8s.aliyun.com/eci-with-eip | "true" | EIPを自動的に作成し、EIPをElastic Container Instanceに関連付けるかどうかを指定します。 | |
k8s.aliyun.com/eip-bandwidth | 5 | EIPの帯域幅の値です。 | |
k8s.aliyun.com/eip-common-bandwidth-package-id | cbwp-2zeukbj916scmj51m **** | EIP帯域幅プランのID。 | |
k8s.aliyun.com/eip-isp | BGP | EIPのラインタイプ。 このアノテーションは、従量課金EIPにのみ適用されます。 設定可能な値は以下のとおりです。
| |
k8s.aliyun.com/eip-internet-charge-type | 帯域幅課金 | EIPの計量方法。 設定可能な値は以下のとおりです。
| |
k8s.aliyun.com/eci-enable-ipv6 | "true" | IPv6アドレスを割り当てるかどうかを指定します。 | |
kubernetes.io/ingress-bandwidth | 40M | インバウンド帯域幅。 | |
kubernetes.io /出力帯域幅 | 20M | アウトバウンド帯域幅。 | |
k8s.aliyun.com/eci-extra-ephemeral-storage | 50Gi | 一時保存スペースのサイズ。 | |
k8s.aliyun.com/eci-core-pattern | /pod/data/dump/core | コアダンプファイルが格納されているディレクトリ。 | |
k8s.aliyun.com/eci-ntp-server | 100.100.*.* | ネットワークタイムプロトコル (NTP) サーバーのIPアドレス。 | |
k8s.aliyun.com/plain-http-registry | 「harbor *** .pre.com、192.168。XX。XX:5000、reg *** .test.com:80」 | 自己管理イメージリポジトリのIPアドレス。 HTTPプロトコルを使用する自己管理イメージリポジトリ内のイメージを使用してElastic Container Instanceを作成する場合、このアノテーションをインスタンスに追加する必要があります。 このように、Elastic Container InstanceはHTTPSプロトコルを使用してイメージをプルします。 This can prevent the image from failing to pull due to different protocols. | |
k8s.aliyun.com/insecure-registry | 「harbor *** .pre.com、192.168。XX。XX:5000、reg *** .test.com:80」 | 自己管理イメージリポジトリのIPアドレス。 自己署名証明書を使用する自己管理イメージリポジトリ内のイメージを使用してElastic Container Instanceを作成する場合、証明書の認証をスキップするには、この注釈をインスタンスに追加する必要があります。 これにより、証明書認証の失敗によるイメージのプルの失敗を防ぐことができます。 |
RAMロールの設定
アノテーションを追加することで、ポッドのRAMロールを設定することができます。その後、ポッドはAlibaba Cloudサービスにアクセスする役割を引き受けます。
アノテーションを追加する前に、RAMロールを作成し、RAMロールに権限を付与する必要があります。 RAMロールを作成するときは、RAMロールの信頼済みサービスがECSであることを確認してください。
RAMユーザーを使用する場合は、そのRAMユーザーに
ram:passRole
権限があることを確認してください。
サンプル設定:
apiVersion: apps/v1
kind: 配置
メタデータ:
名前: set-ram-role
labels:
アプリ: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/eci-ram-role-name : "${your_ram_role_name}"
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet
Elastic Container Instanceのリスケジュールの設定
仮想ノードへのポッドのスケジューリングに失敗することがあります。 ポッドの再スケジュールを有効にする注釈を追加できます。 これにより、非同期スケジューリングが失敗した場合でも、システムは失敗を返すのではなく、スケジューリングポッドを再試行し続けます。
サンプル設定:
apiVersion: apps/v1
kind: Deployment
metadata:
名前: set-eci
labels:
アプリ: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/eci-reschedule-enable: "true"# エラスティックコンテナインスタンスの再スケジューリングを有効にします。
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet
作成できないPodをFailed状態にする
デフォルトでは、ポッドの作成時にエラーが発生した場合、システムは指定された最大再試行回数まで再試行します。 最大数の再試行後にポッドを作成できない場合、ポッドはPending状態になります。 一部のジョブでは、ポッドが [失敗] 状態になることがあります。 この場合、作成できないポッドをFailed状態にする注釈を追加できます。
サンプル設定:
apiVersion: apps/v1
kind: 配置
メタデータ:
name: set-pod-fail-on-create-err
labels:
アプリ: vk
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
annotations:
k8s.aliyun.com/pod-fail-on-create-err: "true"# ポッドの作成に失敗した場合、ステータスをFailedに設定します。
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
nodeName: virtual-kubelet