このトピックでは、ACK Serverlessとその利点、使用シナリオ、およびACK Serverlessクラスターをすぐに使い始めるのに役立つ主要な機能について説明します。 このトピックでは、ACKサーバーレスクラスターとACKクラスターも比較します。
概要
ACK Serverlessは、Alibaba Cloudが提供するサーバーレスコンテナサービスです。 ACK Serverlessクラスタは、ACK Serverlessによって提供される。 ノードの計画、購入、保守を必要とせずに、アプリケーションをデプロイできます。 従量課金制でアプリケーションに割り当てられたCPUおよびメモリリソースに対して課金されます。 ACKサーバーレスクラスターはKubernetes互換機能を提供し、初心者がインフラストラクチャ管理ではなくアプリケーションに集中できるようにします。
ACK Serverless clusterは、ACK Serverless Basic clusterとACK Serverless Pro clusterに分類されます。 ACK Serverless Proクラスターは、ACK Serverless Basicクラスターに基づいて開発されており、大規模生産のセキュリティと信頼性を向上させます。 ACKサーバーレスクラスタは、補償条項をサポートするサービスレベル契約 (SLA) によってもカバーされます。 ACK Serverless Proクラスターの詳細については、「ACK Serverless Proクラスターの概要」をご参照ください。
メリット
メリット | 説明 |
すぐに使える | Kubernetesノードとサーバーを管理することなく、ACKサーバーレスクラスターをすばやく作成し、ACKサーバーレスクラスターにアプリケーションをデプロイできます。 |
超大容量 | 構成を追加したり、クラスターのサイズを設計したりすることなく、ACKサーバーレスクラスターに50,000を超えるポッドを作成できます。 重要 多数のポッドがサービスに関連付けられている場合は、ポッドの数を20,000に抑えることをお勧めします。 |
第2レベルのスケーリング | トラフィックの急増を処理するために、短期間で数千のポッドを作成できます。 |
予測スケーリング | ACKサーバーレスは、履歴データに基づいてリソース需要を予測し、ピーク時にリソースを迅速にスケーリングできます。 |
クラウドネイティブサービスとの互換性 | ACK ServerlessはKubernetesと完全互換性があり、Kubernetesネイティブアプリケーションとエコシステムをサポートしています。 KubernetesアプリケーションをACK Serverlessにシームレスに移行できます。 |
セキュリティの分離 | ポッドをelasticコンテナインスタンスにデプロイできます。 ポッドがデプロイされているインスタンスは、軽量の仮想サンドボックステクノロジを使用して互いに分離されます。 |
コスト削減 | ポッドはオンデマンドで作成されます。 アプリケーションで使用されているリソースに基づいて課金されます。 サーバーレスアーキテクチャは、リソースの無駄を防ぎ、O&Mコストを削減するのに役立ちます。 |
サービス統合 | コンテナー化されたアプリケーションをAlibaba Cloudの基本サービスとシームレスに統合できます。 コンテナは、仮想マシンにデプロイされたアプリケーションと通信できます。 |
ACK Serverless Basicクラスターと比較して、ACK Serverless Proクラスターは信頼性が高く、サービスの稼働時間が長くなり、より多くのポッドをデプロイできます。 アプリケーションをACK Serverless BasicクラスターからACK Serverless Proクラスターにシームレスに移行できます。 |
ACKサーバーレスクラスタとACKクラスタの比較
次の図は、左側のACKクラスターと右側のACKサーバーレスクラスターを比較しています。
利用シナリオ
シナリオ | 説明 |
アプリケーションホスティング | ACKサーバーレスクラスターでは、ノードを管理または保守したり、クラスターサイズを計画したりする必要はありません。 これにより、インフラストラクチャの管理とメンテナンスのコストが大幅に削減されます。 |
交通スパイク | オンライン教育やeコマースなどの業界で変動するワークロードの場合、ACKサーバーレスクラスターは数秒以内にリソースをスケールして、コンピューティングコストを削減し、リソースの無駄を防ぎ、トラフィックの急増に耐えることができます。 詳細については、「」をご参照ください。Auto scaling overview. |
データコンピューティング | Sparkジョブなどのコンピューティングジョブを処理するために、ACK Serverless clusterは短時間で多数のポッドを開始し、ジョブが完了した直後にポッドをリリースしてコンピューティングコストを削減できます。 詳細については、「ACKサーバーレスを使用したSparkタスクの作成」をご参照ください。 |
CI / CD | ACKサーバーレスクラスターを使用して、JenkinsやGitlab-Runnerなどの継続的インテグレーション (CI) 環境を構築し、アプリケーションコードをすばやくコンパイルし、イメージをビルドしてプッシュし、パイプラインを作成できます。 CIジョブは互いに分離されています。 リソースプールを維持する必要がないため、コンピューティングコストが削減されます。 詳細については、「JenkinsをACKサーバーレスクラスターにデプロイし、アプリケーションを作成してデプロイする」と「Elastic and cost-effective CI/CD based on ACK Serverless」をご参照ください。 |
CronJobs | ACKサーバーレスクラスターでCronJobsを実行できます。 ジョブが完了すると、課金は停止します。 リソースプールを維持する必要がないため、リソースの無駄を防ぐことができます。 詳細については、「」をご参照ください。スケジュールされた水平スケーリングにCronHPAを使用する. |
主な機能
ACKサーバーレスクラスターは、Kubernetes互換機能を提供します。 Kubernetesネイティブの機能に加えて、ACKサーバーレスクラスターを使用する場合は、次の機能に注意することを推奨します。
ECIプロフィール
ACKサーバーレスクラスターのポッドは、エラスティックコンテナインスタンスで実行されます。 Elastic Container Instance Profileを設定して、ポッドとポッド関連のクラスターアクションをきめ細かく制御できます。 Elastic Container Instance Profileは、kube-system名前空間のeci-profileという名前のConfigMapです。 次の表に、主要なパラメーターを示します。
パラメーター | 説明 |
vpcId | ポッドがデプロイされている仮想プライベートクラウド (VPC) の一意の識別子。 |
securityGroupId | VPCの [概要] の一意の識別子。 |
vSwitchIds | VPC内のvSwitchの一意の識別子。 複数のvSwitch IDをコンマ (,) で区切ります。 仮想ノードはvSwitchに基づいて生成されます。 |
セレクター | ポッドセレクタ。 ポッドセレクターは、名前空間またはラベルに基づいてポッドを選択し、注釈またはラベルを自動的に追加できます。 |
enableClusterIp | ClusterIPを使用するかどうかを指定します。 デフォルト値:true |
enableLogController | Alibaba Cloudログコントローラーを有効にするかどうかを指定します。 デフォルト値:false |
enablePVCController | 永続ボリューム要求 (PVC) コントローラを有効にするかどうかを指定します。 デフォルト値:false |
enablePrivateZone | PrivateZoneのサービス検出機能を有効にするかどうかを指定します。 デフォルト値:false |
featureGates | フィーチャーゲートを有効にするかどうかを指定します。 |
詳細については、「Elastic Container Instanceの概要」をご参照ください。
仮想ノード
ACKサーバーレスクラスターを使用する場合、ノードを管理する必要はありません。 ACKサーバーレスクラスターがKubernetesネイティブ機能と互換性を持つようにするために、ACKサーバーレスクラスターで仮想ノードを見つけることができます。 ACKサーバーレスクラスタ内の仮想ノードは、トラフィック変動に対処するための超大規模なコンピューティングリソースを提供できます。 仮想ノードは、eci-profile ConfigMapのvSwitchIds
パラメーターに基づいて生成されます。 仮想ノードはコンピューティングリソースを占有しません。
ポッドの設定
ポッドにアノテーションを追加することで、ACKサーバーレスクラスターのポッドをカスタマイズできます。 次の表に、アノテーションを示します。
次の表に示すアノテーションは、仮想ノードにスケジュールされているポッドにのみ適用できます。 これらのポッドは、弾性コンテナインスタンスで実行されます。 通常のノードにスケジュールされているポッドにアノテーションを追加することはできません。
ポッドの
metadata
フィールドにアノテーションを追加します。 たとえば、配置を設定するときに、spec.template.metadataフィールド
に注釈を追加します。ポッドの注釈は、Elastic Container Instanceプロファイルの同じ機能に対応する設定よりも優先度が高くなります。
注釈 | 例 | 説明 | 関連ドキュメント |
k8s.aliyun.com/eci-security-group | sg-bp1dktddjsg5nktv **** | セキュリティグループの ID です。 | |
k8s.aliyun.com/eci-vswitch | vsw-bp1xpiowfm5vo8o3c **** | vSwitchのID。 ゾーン間で複数のvSwitchを指定できます。 | |
k8s.aliyun.com/eci-schedule-strategy | vSwitchOrdered | マルチゾーンスケジューリングポリシー。 有効な値:
| |
k8s.aliyun.com/eci-ram-role-name | AliyunECIContainerGroupRole | Elastic Container Instanceが他のAlibaba Cloudサービスへのアクセスを想定しているRAM (Resource Access Management) ロール。 | |
k8s.aliyun.com/eci-use-specs | 2-4Gi、4-8Gi、ecs.c6.xlarge | 弾性コンテナインスタンスの仕様。 CPUコア数やメモリサイズなど、复数の仕様を指定できます。 ECSインスタンスタイプを指定することもできます。 | |
k8s.aliyun.com/eci-spot-strategy | SpotAsPriceGo | プリエンプティブルインスタンスの入札ポリシー。 有効な値:
| |
k8s.aliyun.com/eci-spot-price-limit | 0.5 | プリエンプティブルインスタンスの最高価格。 説明 このパラメーターは、f 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" | エラスティックコンテナインスタンスの再スケジューリング機能を有効にするかどうかを指定します。 | |
k8s.aliyun.com/pod-fail-on-create-err | "true" | エラスティックコンテナインスタンスでポッドの作成に失敗した場合、エラスティックコンテナインスタンスのステータスをFailedに設定するかどうかを指定します。 | |
k8s.aliyun.com/eci-image-snapshot-id | imc-2zebxkiifuyzzlhl **** | イメージキャッシュのID。 説明 イメージキャッシュを使用してエラスティックコンテナインスタンスを作成するには、使用するイメージキャッシュを指定するか、イメージキャッシュの自動マッチングを有効にします。 イメージキャッシュの自動マッチングを有効にすることを推奨します。 | |
k8s.aliyun.com/eci-image-cache | "true" | イメージキャッシュの自動マッチングを有効にするかどうかを指定します。 説明 イメージキャッシュを使用してエラスティックコンテナインスタンスを作成するには、使用するイメージキャッシュを指定するか、イメージキャッシュの自動マッチングを有効にします。 イメージキャッシュの自動マッチングを有効にすることを推奨します。 | |
k8s.aliyun.com/acr-instance-id | cri-j36zhodptmyq **** | Container Registry Enterprise EditionインスタンスのID。 エラスティックコンテナインスタンスのリージョンとは異なるリージョンに存在するContainer Registry Enterprise Editionインスタンスを指定できます。 これを行うには、Container Registry Enterprise EditionインスタンスのIDの前にContainer Registry Enterprise Editionインスタンスのリージョン名を追加する必要があります。 例: cn-beijing:cri-j36zhodptmyq **** 。 | シークレットを使用せずに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をポッドに関連付けるかどうかを指定します。 | |
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アドレスを割り当てるかどうかを指定します。 | |
k8s.aliyun.com/eci-ipv6-bandwidth-enable | "true" | IPv6アドレス経由でポッドへのインターネットアクセスを有効にするかどうかを指定します。 | |
k8s.aliyun.com/eci-ipv6-bandwidth | 100M | IPv6アドレスの最大パブリック帯域幅。 | |
kubernetes.io/ingress-bandwidth | 40M | インバウンド帯域幅。 | |
kubernetes.io /出力帯域幅 | 20M | アウトバウンド帯域幅。 | |
k8s.aliyun.com/eci-extra-ephemeral-storage | 50Gi | 一時的なストレージ容量。 | |
k8s.aliyun.com/eci-eviction-enable | "true" | エラスティックコンテナインスタンスから十分な一時記憶領域がないポッドを自動的に削除するかどうかを指定します。 | 一時保管スペースが不足しているポッドを自動的に削除する |
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はHTTP経由でイメージをプルでき、異なるプロトコルの使用によるイメージプルの失敗を防ぎます。 | |
k8s.aliyun.com/insecure-registry | 「harbor *** .pre.com、192.168。XX。XX:5000、reg *** .test.com:80」 | 自己管理イメージリポジトリのドメイン名。 自己署名証明書を使用する自己管理イメージリポジトリ内のイメージを使用してエラスティックコンテナインスタンスを作成する場合、証明書の認証をスキップするには、この注釈をインスタンスに追加する必要があります。 これにより、証明書認証の失敗によるイメージプルの失敗を防ぎます。 |
詳細については、「ECIポッド注釈」をご参照ください。
ネットワーク管理
デフォルトでは、Elastic Container Instanceベースのポッドはホストネットワークモードを使用します。 各ポッドには、vSwitchによってelastic network interface (ENI) を割り当てる必要があります。 これにより、クラスターがデプロイされているVPC内のElastic Compute Service (ECS) インスタンスおよびApsaraDB RDSインスタンスとの通信が可能になります。
項目 | 説明 |
サービス |
|
Ingress |
|
サービス検出 | クラスター内でサービス検出機能を使用するには、クラスターの作成時にPrivateZoneまたはCoreDNSを有効にします。 クラスターの作成後、ECIプロファイルを使用してPrivateZoneを有効にするか、ACKコンソールのアドオンページからCoreDNSコンポーネントをインストールすることもできます。 |
EIP | EIPをElastic Container Instanceベースのポッドに関連付けることができます。 Elastic Container InstanceベースのポッドのEIPを自動的に作成するか、既存のEIPをElastic Container Instanceベースのポッドに関連付けることができます。 |
ストレージ管理
Elastic Block Storage (EBS) またはApsara File Storage NAS (NAS) ファイルシステムをポッドにマウントできます。
項目 | 説明 |
EBS (ディスク) |
|
NAS |
|
可観測性
項目 | 説明 |
ロギング | ACKサーバーレスクラスターでは、eci-profileを変更して、Simple Log Serviceでポッドログを収集できるようにします。 詳細については、「ポッド環境変数を使用してアプリケーションログを収集する」トピックの「手順1: アプリケーションを作成し、アプリケーションログを収集するようにSimple Log Serviceを設定する」をご参照ください。 |
モニタリング | arms-prometheusコンポーネントをインストールして、ACKサーバーレスクラスターのクラスターモニタリングを有効にすることができます。 詳細については、「Enable Managed Service for Prometheus」をご参照ください。 |
イメージ管理
ACKサーバーレスクラスターを使用すると、イメージキャッシュを使用してポッドの作成を高速化できます。 これにより、アプリケーションの応答時間が短縮されます。 ポッドのイメージキャッシュ機能を有効にする方法の詳細については、「ImageCacheを使用してポッドの作成を高速化する」をご参照ください。
Container RegistryからイメージをプルしてACK Serverless clusterにポッドを作成する場合は、Container Registry Enterprise Editionインスタンスからシークレットを使用せずにイメージをプルすることができます。
自動スケーリング
ACKサーバーレスクラスタは無ノードです。 cluster-autoscalerを使用して、ノードの計画やクラスターの拡張について心配する必要はありません。 ビジネス要件を満たすためにアプリケーションを拡張するだけで済みます。 水平ポッドオートスケーラー (HPA) またはCronHPAポリシーを設定して、ポッドの数をオンデマンドで調整することを推奨します。 詳細については、「Auto scaling overview」をご参照ください。
承認
アプリケーションポッドがAlibaba Cloudサービスにアクセスする必要がある場合は、サービスアカウントのRAMロール (RRSA) を設定して認証を完了できます。
クラスター管理
項目 | 説明 |
インテリジェントO&M | インテリジェントO&M機能を使用して、ACKサーバーレスクラスターのヘルスステータスを定期的にチェックしたり、アップグレードまたは移行するクラスターに対して事前チェックを実行したりできます。 |
アップデート | サービスを中断することなく、ACKサーバーレスクラスターをアップグレードできます。 |
ACKサーバーレスプロ | ACK Serverless Proクラスターはより信頼性が高く、より高いサービス稼働時間を確保し、より多くのポッドを作成できます。 |
移行 | サービスの信頼性を高めるために、サービスを中断することなく、試用版または古いACK Serverless BasicクラスターをACK Serverless Proクラスターにアップグレードできます。 |
コンポーネント管理
ACKサーバーレスクラスタは、さまざまなコンポーネントと拡張クラスタ機能を提供します。 ビジネス要件に基づいてコンポーネントをデプロイ、更新、またはアンインストールできます。 詳細については、「コンポーネントの管理」をご参照ください。
管理対象コンポーネント
クラスターのO&Mを簡素化し、アプリケーション開発に集中できるようにするために、ACKサーバーレスクラスターはマネージドシステムコンポーネントを提供します。 ACKサーバーレスクラスターでは、kube-scheduler、cloud-controller-manager、kube-controller-manager、kube-apiserverの管理対象システムコンポーネントを使用できます。 これらの主要なKubernetesコンポーネントに加えて、ACKサーバーレスクラスターは将来、より多くのマネージドストレージ、ネットワーク、およびモニタリングコンポーネントを提供する予定です。
管理コンポーネントは、ClusterRoles、ClusterRoleBindings、ServiceAccounts、Services、ConfigMapsなどのオブジェクトを作成できます。 ただし、管理コンポーネントによって作成されたオブジェクトは、ACKサーバーレスクラスターで実行されるエラスティックコンテナーインスタンスにはデプロイされません。 クラスターの安定性を確保するため、管理コンポーネントによって作成されたオブジェクトは変更しないことを推奨します。
管理対象コンポーネントは、ACKサーバーレスクラスタによってデプロイおよび保守されます。 ACK APIを使用して、ACKサーバーレスクラスター内の管理対象コンポーネントと対話できます。 管理コンポーネントには、次の利点があります。
弾性コンテナインスタンスのコストを節約できます。
自動化された展開とメンテナンスを提供します。
高可用性アーキテクチャを使用します。
アプリケーション管理
ACKコンソールのMarketplaceページからHelmチャートをインストールし、Helmページで管理できます。 詳細については、「Helmを使用したアプリケーションのデプロイの簡素化」をご参照ください。
課金ルール
ACK Serverless clusterは、ACK Serverless Basic clusterとACK Serverless Pro clusterに分類されます。 課金可能な項目と課金ルールは、クラスターのタイプによって異なります。 詳細については、「Billing of ACKサーバーレスクラスタs」をご参照ください。
制限事項
ACKサーバーレスクラスタには、次の制限があります。
ACKサーバーレスクラスターはDaemonSetsをサポートしていません。 DaemonSetsをサイドカーコンテナに置き換えることができます。
ポッド
マニフェスト
でHostPath
またはHostNetwork
を指定することはできません。ACKサーバーレスクラスタは、特権コンテナをサポートしません。 セキュリティコンテキストを使用して、ポッドに機能を追加できます。
ACKサーバーレスクラスターは、NodePortサービスまたはセッションアフィニティ機能をサポートしていません。
ACKサーバーレスクラスターは、China East Finance、China South Finance、またはAlibaba Gov Cloudリージョンをサポートしていません。
お問い合わせ
ASKクラスターについて質問がある場合は、DingTalkグループ31544226に参加してください。