How does a Kubernetes cluster use an elastic container instance (ECI)?

仮想ノードは、Kubernetes と Elastic Container Instance(ECI)のシームレスな接続を実現し、Kubernetes クラスターがクラスターのノードコンピューティングキャパシティに制約されることなく大規模な弾力的なキャパシティを容易に獲得できるようにします。オンデマンドで ECI Pod を柔軟かつ動的に作成できるため、クラスターのキャパシティプランニングの煩わしさを回避できます。本記事では、主に仮想ノードと ECI の概要、ack-virtual-node コンポーネントを使用した仮想ノードのデプロイ方法、および ECI Pod の作成方法について説明します。

前提条件

• セルフマネージド Kubernetes クラスターのバージョンは 1.14 よりも高い必要があります。

• 登録済みクラスターを作成し、セルフマネージド Kubernetes クラスターを登録済みクラスターに接続する必要があります。詳細は、「Alibaba Cloud 登録クラスターの作成とセルフマネージド Kubernetes クラスターのアクセス」をご参照ください。

• Elastic Container Instance サービスを有効化する必要があります。Elastic Container Instance コンソールにログインし、該当サービスを有効化してください。

• クラスターが存在するリージョンが ECI でサポートされているリージョンリストに含まれていることを確認する必要があります。Elastic Container Instance コンソールにログインし、サポートされているリージョンとアベイラビリティゾーンを確認してください。

仮想ノードと Elastic Container Instance(ECI)

Alibaba Cloud Elastic Container Instance(ECI)は、コンテナ向けのサーバーレスなエラスティックコンピューティングサービスであり、メンテナンスフリーで、強力に分離され、高速に起動するコンテナ実行環境を提供します。ECI を使用すると、基盤となる ECS サーバーの購入と管理が不要になり、インフラストラクチャではなくコンテナアプリケーションのメンテナンスに注力できます。ECI はオンデマンドで作成でき、設定したリソースに対してのみ(秒単位で)課金されます。

仮想ノードは、Kubernetes と Elastic Container Instance(ECI)のシームレスな接続を実現し、Kubernetes クラスターがクラスターのノードコンピューティングキャパシティに制約されることなく大規模な弾力的なキャパシティを容易に獲得できるようにします。オンデマンドで ECI Pod を柔軟かつ動的に作成できるため、クラスターのキャパシティプランニングの煩わしさを回避できます。次のシナリオでの実行に非常に適しており、ユーザーがコンピューティングコストを大幅に削減し、コンピューティングの柔軟性と効率を向上するのに役立ちます。

• オンラインビジネスのピーク・ボトム時のエラスティック拡張:オンライン教育や E コマースなどの業界では、ピークとボトムのコンピューティング特性が明確です。仮想ノードを使用すると、固定リソースプールのメンテナンスを大幅に削減し、コンピューティングコストを削減できます。

• データコンピューティング:仮想ノードを使用して Spark、Presto などのコンピューティングシナリオに対応し、コンピューティングコストを効果的に削減します。

• CI/CD パイプライン:Jenkins、GitLab Runner。

• ジョブタスク:スケジュールタスク、AI。

Alibaba Cloud Container Service は、仮想ノードと ECI に基づくさまざまなサーバーレスコンテナプロダクト形式を提供しており、Serverless Kubernetes(ASK)と ACK on ECI を含み、柔軟でノードレスな運用・保守シナリオにおけるユーザーのさまざまなニーズに完全に対応しています。

ステップ 1:セルフマネージドクラスターでの ack-virtual-node コンポーネントの RAM 権限の設定

登録済みクラスターにコンポーネントをインストールする前に、アクセスするクラスター内のクラウドサービスにアクセスするための AK の権限を設定する必要があります。AK を設定する前に、RAM ユーザーを作成し、関連するクラウドリソースにアクセスする権限を付与する必要があります。

1. RAM ユーザーを作成します。RAM ユーザーの作成手順の詳細は、「RAM ユーザーの作成」をご参照ください。

2. 権限ポリシーを作成します。権限ポリシーの作成手順の詳細は、「カスタムポリシーの作成」をご参照ください。RAM の AliyunECIFullAccess ポリシーを付与してください。

3. RAM ユーザーに権限を付与します。RAM ユーザーへの権限付与手順の詳細は、「RAM ユーザーへの権限付与」をご参照ください。

4. RAM ユーザー用の AccessKey を作成します。サブアカウント用の AccessKey を作成する方法の詳細は、「AccessKey の取得」をご参照ください。

5. AccessKey を使用して、セルフマネージド Kubernetes クラスターに alibaba-addon-secret という名前のシークレットリソースを作成します。ステップ 2 でインストールする ack-virtual-node コンポーネントは、この AccessKey を自動的に参照して対応するクラウドサービスリソースにアクセスします。

kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=' --from-literal='access-key-secret='

上記コードの を、取得した AccessKey の情報に置き換える必要があります。

ステップ 2:登録済みクラスターでの ack-virtual-node コンポーネントのデプロイ

登録済みクラスターに ack-virtual-node コンポーネントをデプロイする手順は次のとおりです。

1. コンテナサービス管理コンソールにログインします。

2. クラスター一覧ページで対象の登録済みクラスターを見つけ、クリックしてクラスター詳細ページに入ります。

3. 「運用・保守管理」->「コンポーネント管理」をクリックし、ack-virtual-node コンポーネントを見つけて「インストール」をクリックします。

4. インストール成功のメッセージが表示されるまで待ちます。

ステップ 3:ECI Pod の作成

次の 2 つの方法で ECI Pod を作成できます。

• Pod タグの設定:Pod にタグ alibabacloud.com/eci=true を追加します。Pod は ECI モードで実行され、そのノードは仮想ノードになります。例は次のとおりです。

A. 次のコマンドを実行して Pod にラベルを追加します。

A. 次のコマンドを実行して Pod を確認します。

A. 期待される出力:

• 名前空間ラベルの設定:Pod が存在する名前空間にラベル alibabacloud.com/eci=true を追加します。Pod は ECI モードで実行され、そのノードは仮想ノードになります。例は次のとおりです。

A. 次のコマンドを実行して仮想ノードを作成します。

A. 次のコマンドを実行して Pod が存在する名前空間にラベルを追加します。

A. 次のコマンドを実行して名前空間内の Pod を仮想ノードにスケジュールします。

A. 次のコマンドを実行して Pod を確認します。

A. 期待される出力:

関連操作

仮想ノードの設定の変更

仮想ノードコントローラーの設定は、ECI Pod のスケジューリング動作と ECI 実行環境の設定を決定します。これには、vSwitch とセキュリティグループの設定が含まれます。必要に応じてコントローラーの設定を柔軟に変更できます。設定を変更しても、実行中の ECI Pod には影響せず、新しい ECI Pod に即時適用されます。

次のコマンドを実行して、仮想ノードコントローラーの設定を変更します。

kubectl -n kube-system edit deployment ack-virtual-node-controller

一般的な変更操作は次のとおりです。

• 仮想ノードコントローラーのバージョンを更新します。仮想ノード機能を使用する場合は、仮想ノードコントローラーのイメージを最新バージョンに更新する必要があります。

• セキュリティグループの設定 ECI_SECURITY_GROUP を変更します。この環境変数を変更して、ECI Pod のセキュリティグループを変更できます。

• vSwitch の設定 ECI_VSWITCH を変更します。この環境変数を変更して、ECI Pod が配置される vSwitch を変更できます。複数の vSwitch を設定して異なるアベイラビリティゾーンに対応することが推奨されます。単一のアベイラビリティゾーンの在庫が不足している場合、コントローラーは別のアベイラビリティゾーンを選択して ECI Pod を作成します。

• kube-proxy の設定 ECI_KUBE_PROXY を変更します。この環境変数のデフォルト値は true で、ECI Pod がデフォルトでクラスター内の ClusterIP サービスにアクセスできることを意味します。ECI Pod が ClusterIP サービスにアクセスする必要がない場合(ジョブ計算シナリオなど)、この環境変数を false に設定して kube-proxy 機能をオフにできます。また、大規模なシナリオでは、クラスター内で多数の ECI Pod を起動する必要がある場合など、ECI 内の kube-proxy と Kubernetes API サーバー間の同時接続数も大幅に増加します。kube-proxy 機能をオフにして、API サーバーの負荷を軽減し、スケーラビリティを向上させることも選択できます。

• kube-system/eci-profile ConfigMap を変更します。この ConfigMap を変更して、vSwitch、セキュリティグループなど、ECI 関連の追加パラメータを設定できます。

仮想ノードの削除

1. ack-virtual-node コンポーネントをアンインストールします。

• セルフマネージドクラスターで、すべての ECI Pod を削除した後、コンポーネント管理ページで ack-virtual-node コンポーネントをアンインストールします。

2. kubectl delete no コマンドを使用して関連する仮想ノードを削除します。

クラスター内に ECI Pod が存在するときに ack-virtual-node コンポーネントをアンインストールすると、ECI インスタンスが残留することに注意してください。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.