Elastic Container Instanceは、Kubernetesクラスターの基本的なコンテナランタイムを提供します。 各弾性コンテナインスタンスはポッドです。 このトピックでは、エラスティックコンテナインスタンスの基本的な設定、ライフサイクル、および制限について説明します。
基本設定
Virtual Kubeletは、Kubernetes Kubeletのオープンソース実装です。 仮想ノードはVirtual Kubeletを使用して作成され、伸縮性のあるコンテナインスタンスをKubernetesクラスターのポッドとして機能させます。 これらの仮想ノードは、仕様、イメージ、ストレージ、ネットワーキングなどの構成をサポートします。
リソースプランの仕様
仕様には、ポッドのコンピューティングパフォーマンスを決定するvCPUとメモリ構成が含まれます。 ポッドを作成するときに、vCPUの数とメモリサイズを指定するか、またはGPUやローカルディスクの要件などの特別な要件を満たすようにElastic Compute Service (ECS) インスタンスタイプを指定できます。 これらの仕様タイプには、異なる課金方法が適用されます。 詳細については、「エラスティックコンテナインスタンスの課金」をご参照ください。
Elastic Container Instanceのリソースは、さまざまな方法で作成できます。 ビジネス要件に基づいて方法を選択します。 詳細については、「エラスティックコンテナインスタンスの作成」をご参照ください。
イメージ
ポッドには最大20個のコンテナを含めることができます。 コンテナアプリケーションをデプロイする前に、コンテナイメージを準備する必要があります。 コンテナイメージには、コンテナ化されたアプリケーションを実行するために必要なプログラム、ライブラリファイル、および構成が含まれます。 イメージを取得する前に、ネットワークにアクセスできることを確認してください。 ImageCacheを使用して、起動とポッドの作成を高速化することを推奨します。
プル画像
エラスティックコンテナインスタンスが起動すると、そのcontainerdはリモートイメージリポジトリからコンテナイメージを取得します。 パブリックイメージをプルするには、エラスティックコンテナインスタンスにインターネットアクセスがあることを確認します。 エラスティックコンテナインスタンスがデプロイされている仮想プライベートクラウド (VPC) にパブリックネットワークアドレス変換 (NAT) ゲートウェイを設定できます。 さらに、elastic IPアドレス (EIP) をelasticコンテナインスタンスに関連付けて、パブリックイメージをプルできます。
VPCを介してイメージをより迅速にプルするために、コンテナーイメージをcontainer Registryに保存することを推奨します。 さらに、秘密なしでContainer Registryからプライベートイメージを引き出すことができます。 これにより、画像の取り込み効率が高くなる。 詳細については、「シークレットを使用せずにContainer Registryインスタンスからイメージをプルする」および「managed-aliyun-acr-credential-helperを使用してシークレットを使用せずにイメージをプルする」をご参照ください。
画像キャッシュ
Elastic Container Instanceは、イメージからキャッシュスナップショットを作成できるイメージキャッシュ機能を提供します。 このキャッシュスナップショットを使用して、柔軟なコンテナインスタンスを作成できます。これにより、イメージレイヤーをダウンロードする必要がなくなり、作成プロセスが高速化されます。 デフォルトでは、この機能を有効にするために、ACKサーバーレスクラスターがImageCache CustomResourceDefinition (CRD) とともにデプロイされます。 詳細については、「ImageCacheを使用したエラスティックコンテナインスタンスの作成の高速化」をご参照ください。
Storage
一時ストレージ
デフォルトでは、ポッドには一時保存用に30 GiBの空きメモリが割り当てられています。これは、エラスティックコンテナインスタンスを起動するためにコンテナイメージによって占有されます。 ビジネス要件に基づいて、一時ストレージのメモリサイズを増やすことができます。 詳細については、「一時記憶域のスケールアップ」をご参照ください。
永続ストレージ
ボリュームをエラスティックコンテナインスタンスにマウントすることで、保存されたファイルを共有または保持できます。 ACKサーバーレスクラスターでは、CSIプラグインを使用して、ディスク、Apsara File storage NAS (NAS) ファイルシステム、Object Storage Service (OSS) バケットなどのAlibaba Cloudストレージボリュームをマウントします。 詳細については、「CSIの概要」をご参照ください。
エラスティックコンテナインスタンスのストレージ設定の詳細については、「ストレージ」をご参照ください。
ネットワーク
プライベートIPアドレス
ポッドは、ポッドが属するVPC内のvSwitchのelastic network interface (ENI) を使用します。 ポッドを作成すると、適切なvSwitchからプライベートIPアドレスがランダムに割り当てられます。 ポッドアノテーションの
k8s.aliyun.com/eci-vswitch
フィールドに基づいてvSwitchが選択され、次にPodNetworkingとeci-profileの設定が順番に続きます。 プライベートIPアドレスを指定する方法または固定IPアドレスを使用する方法の詳細については、「ポッドのプライベートIPアドレスの指定」および「ポッドの固定IPアドレスの設定」をご参照ください。インターネットアクセス
デフォルトでは、ポッドには内部IPアドレスが割り当てられます。 パブリックイメージをプルするなど、ポッドがインターネットにアクセスする必要がある場合は、elastic IPアドレス (EIP) をポッドに関連付けるか、ネットワークアドレス変換 (NAT) ゲートウェイをポッドが属するVPCに関連付ける必要があります。 詳細については、「ポッドのインターネットアクセスの有効化」をご参照ください。
IPv6アドレス
Elastic Container InstanceはIPv6アドレスをサポートし、IPv4と比較してより多くの利用可能なIPアドレスのプールを提供します。 詳細については、「Elastic Container InstanceベースのポッドへのIPv6アドレスの割り当て」をご参照ください。
エラスティックコンテナインスタンスのネットワーク設定の詳細については、「ネットワーク」をご参照ください。
コンテナ
Kubernetesでの実行と同様に、事前定義された引数を使用するように、コンテナーの起動コマンド、livenessおよびreadinessプローブ、およびポッドのセキュリティコンテキストを設定できます。 エラスティックコンテナインスタンスのコンテナー設定の詳細については、「コンテナー設定」をご参照ください。
ライフサイクルの管理
ポッドのライフサイクルでは、ポッドは異なる段階で異なるステータスを持ちます。 Elastic Container Instanceのポッドのステータスと対応するKubernetesポッドのステータスの詳細については、「ポッドのライフサイクル」をご参照ください。
制限事項
Alibaba Cloudパブリッククラウドのセキュリティ制限と仮想ノードによる制限により、Elastic Container InstanceはhostPathやDaemonSetsなどの一部のKubernetes機能をサポートしていません。 サポートされていない機能を次の表に示します。
サポートされていない機能 | 説明 | 推奨される代替案 |
HostPath | オンプレミスホストからコンテナーにファイルをマウントできます。 | emptyDirボリューム、ディスク、またはApsara File Storage NAS (NAS) ファイルシステムを使用します。 |
HostNetwork | ホストポートをコンテナーにマップできます。 | LoadBalancerタイプのサービスを作成します。 |
DaemonSet | コンテナーのホストに静的ポッドをデプロイできます。 | サイドカーコンテナーを使用して、ポッドに複数のイメージを展開します。 |
NodePortタイプのサービス | ホストポートをコンテナーにマップできます。 | LoadBalancerタイプのサービスを作成します。 |
詳細については、「制限事項」をご参照ください。
ポッドオーケストレーション
ビジネスに関連するYAMLファイルを不適切に変更すると、予期しない問題が発生する可能性があります。 この問題を回避するために、Elastic Container Instanceはeci-profile設定ファイルを提供します。 eci-profileを使用すると、クラスター内にエラスティックコンテナインスタンスを設定し、セレクターに基づいてポッドを調整できます。 詳細については、「eci-profileの設定」をご参照ください。
拡張機能
データキャッシュ
この機能により、モデルトレーニングデータなどの大量のビジネスデータのキャッシュを作成できます。 エラスティックコンテナインスタンスを作成すると、キャッシュされたデータをマウントして使用できます。 これにより、インスタンスの起動時間が短縮され、データの繰り返しダウンロードが防止され、インスタンスの使用コストが削減されます。 詳細については、「データキャッシュの概要」をご参照ください。
ECIポッド注釈
Kubernetesクラスターのポッドをエラスティックコンテナインスタンスで実行するようにスケジュールする場合、ポッドにアノテーションを追加して、エラスティックコンテナインスタンスの機能を最大限に活用できます。 アノテーションがKubernetes構文に準拠していることを確認します。 Elastic Container Instanceでサポートされているアノテーションの詳細については、「ECIポッドアノテーション」をご参照ください。
注釈は、ポッドの作成中に手動で、またはポッドのラベルと一致するeci-profile設定を介して自動的に追加できます。