Elastic Container Instance は、Kubernetes の全設定をサポートする仮想ノード上で Pod として実行されます。
このモデルは仮想ノードによって実現されています。 Virtual Kubelet 上に構築された仮想ノードは、Elastic Container Instance をクラスター内で標準の Pod として表示させ、仕様、イメージ、ストレージ、ネットワークなど、すべての Pod 設定オプションをサポートします。
このページの内容: 基本設定 | ライフサイクル | 制約 | Pod のオーケストレーション | 拡張機能
基本設定
仕様
Pod の作成時に CPU とメモリを指定するか、特定のハードウェア要件 (GPU アクセラレーションによる推論やローカルディスクアクセスなど) に合わせて Elastic Compute Service (ECS) インスタンスタイプを選択します。課金は仕様タイプによって異なります。詳細については、「Elastic Container Instance の課金」をご参照ください。
詳細については、「Elastic Container Instance の作成」をご参照ください。
イメージ
Pod は最大 20 個のコンテナをサポートします。デプロイする前に、アプリケーションのプログラム、ライブラリ、設定をバンドルしたコンテナイメージを準備してください。
イメージのプル
起動時に、containerd はリモートリポジトリからコンテナイメージをプルします。パブリックリポジトリからのプルにはインターネットアクセスが必要です。Virtual Private Cloud (VPC) にパブリック NAT ゲートウェイを設定するか、Elastic IP Address (EIP) をインスタンスに関連付けてください。
Kubernetes の Secret を使用せずにプライベートネットワーク経由で高速にプルするには、Container Registry にイメージを保存してください。詳細については、「Secret を使用せずに Container Registry インスタンスからイメージをプルする」および「managed-aliyun-acr-credential-helper を使用して Secret なしでイメージをプルする」をご参照ください。
イメージキャッシュ
イメージキャッシュは、コンテナイメージからスナップショットを作成します。後続のインスタンスは、レイヤーを再ダウンロードする代わりにそのスナップショットを使用するため、起動が高速化されます。ImageCache CustomResourceDefinition (CRD) は、ACK Serverless クラスターでデフォルトで有効になっています。詳細については、「ImageCache を使用して Elastic Container Instance の作成を高速化する」をご参照ください。
ストレージ
一時ストレージ
各 Pod には、起動時にコンテナイメージ用として、デフォルトで 30 GiB の無料の一時ストレージが割り当てられます。ワークロードでさらに多くの容量が必要な場合は、「一時ストレージ領域のスケールアップ」をご参照ください。
永続ストレージ
Pod の再起動後もデータを共有または保持するには、ボリュームをマウントしてください。ACK Serverless クラスターでは、Container Storage Interface (CSI) プラグインを使用して、ディスク、File Storage NAS (NAS) ファイルシステム、Object Storage Service (OSS) バケットなどの Alibaba Cloud ストレージをマウントします。詳細については、「CSI の概要」をご参照ください。
すべての設定オプションについては、「ストレージ」をご参照ください。
ネットワーク
プライベート IP アドレス
各 Pod は、その VPC 内の vSwitch から Elastic Network Interface (ENI) を取得し、その vSwitch からプライベート IP アドレスが割り当てられます。vSwitch の選択順序は、k8s.aliyun.com/eci-vswitch アノテーション、PodNetworking、eci-profile の設定の順です。プライベート IP アドレスを固定するには、「Pod にプライベート IP アドレスを指定する」および「Pod に固定 IP アドレスを設定する」をご参照ください。
インターネットアクセス
デフォルトでは、Pod は内部 IP アドレスのみを持ちます。パブリックイメージのプルなど、インターネットにアクセスするには、EIP を関連付けるか、NAT ゲートウェイを追加してください。詳細については、「Pod のインターネットアクセスを有効にする」をご参照ください。
IPv6
Elastic Container Instance は、より大きなアドレスプールを実現するために IPv6 をサポートしています。詳細については、「Elastic Container Instance ベースの Pod に IPv6 アドレスを割り当てる」をご参照ください。
すべての設定オプションについては、「ネットワーク」をご参照ください。
コンテナ
起動コマンド、liveness probe と readiness probe、および Security Context を設定してください。標準的な Kubernetes パターンが適用されます。詳細については、「コンテナの設定」をご参照ください。
ライフサイクル
Pod は、そのライフサイクルを通じて明確な状態を遷移します。ECI と Kubernetes の状態マッピングについては、「Pod のライフサイクル」をご参照ください。
制約
Elastic Container Instance は、Alibaba Cloud パブリッククラウドのセキュリティ上の制約および仮想ノードの制限により、特定の Kubernetes 機能をサポートしていません。
| サポートされていない機能 | 説明 | 推奨される代替策 |
|---|---|---|
| hostPath | オンプレミスのホストからコンテナにファイルをマウントする | emptyDir ボリューム、ディスク、または File Storage NAS (NAS) ファイルシステム を使用します |
| hostNetwork | ホストポートをコンテナにマッピングする | LoadBalancer タイプの Service を作成します |
| DaemonSet | クラスター内のすべての、または一部のノード上で Pod のコピーを実行する | 各アプリケーション Pod にサイドカーコンテナを追加して、ロギングや監視などの機能を実現します |
| NodePort タイプの Service | ホストポートをコンテナにマッピングする | LoadBalancer タイプの Service を作成します |
完全なリストについては、「制約」をご参照ください。
Pod のオーケストレーション
Pod YAML への変更を減らすには、eci-profile を使用してください。eci-profile は、ECI リソースのクラスター全体のビューを提供し、ラベルセレクターによって Pod をオーケストレーションします。詳細については、「eci-profile の設定」をご参照ください。
拡張機能
データキャッシュ
モデルのトレーニングデータなどの大規模なデータセットをキャッシュすることで、Pod は起動時にデータを即座にマウントでき、繰り返しのダウンロードが不要になるため、時間とコストの両方を削減できます。詳細については、「データキャッシュの概要」をご参照ください。
ECI Pod のアノテーション
Elastic Container Instance 上の Pod にアノテーションを追加することで、ECI 固有の機能を有効にできます。アノテーションは Pod の作成時に手動で追加するか、eci-profile を使用してラベルによって自動的に適用されます。完全なリストについては、「ECI Pod のアノテーション」をご参照ください。