Container Service for Kubernetes (ACK) の使用を開始する前に、サービスの理解を深めるための基本的な概念と用語を理解しておくことをお勧めします。 このトピックでは、ACKで一般的に使用される基本的な概念と用語について説明します。
クラスター
クラスターはクラウドリソースの集合であり、コンテナ化されたアプリケーションをデプロイするために使用されます。 クラスターには、Elastic Compute Service (ECS) インスタンス、Server Load Balancer (SLB) インスタンス、仮想プライベートクラウド (VPC) などのリソースが含まれます。
次の表に、ACKによって提供されるクラスタータイプとその説明を示します。
クラスターのタイプ
説明
ACK Proクラスター
ACK Proクラスターは、ACK標準クラスターの上に構築され、エンタープライズレベルの環境と大規模なワークロードの信頼性とセキュリティを強化します。 Alibaba Cloudは、ACK Proクラスターの補償条項を含むサービスレベル契約 (SLA) を提供しています。
ACK Basicクラスター
ACKは、ACK Basicクラスタの制御プレーンを作成し、維持する。 したがって、ワーカーノードのみを作成して維持する必要があります。 ACK基本クラスターを使用すると、ビジネスを便利な方法で、より低いリソースコストで実行できます。
ACK専用クラスター
ACK専用クラスターを作成するときは、3つの制御プレーンと適切な数のワーカーノードを作成する必要があります。 これにより、クラスターのインフラストラクチャをきめ細かく制御できます。 ただし、クラスターを計画および管理し、ノードを自分で更新する必要があります。
異種コンピューティングのACKクラスター
このタイプのクラスターは、NVIDIA GPUやHanguang NPUなどの異種リソースを備えたノードを活用して、異種コンピューティング機能を提供します。 これらのノードは、標準CPUノードとともにデプロイして、異種コンピューティングクラスタを形成できます。 このタイプのクラスターは、ドライバーをインストールして管理する必要がなくなり、主流のAIコンピューティングフレームワークに適しています。 また、複数のコンテナー間でGPUリソースを共有および分離することもできます。
サンドボックスコンテナーをサポートするACKクラスター
このタイプのクラスターは、ECS Bare Metalインスタンスでサンドボックスコンテナーを実行します。 これにより、負荷が重く、高帯域幅が必要なシナリオでのコンテナの高いパフォーマンスが保証されます。
機密コンピューティング用のACKクラスター
このタイプのクラスターは、Intel Software Guard Extensions (Intel SGX) に基づく機密コンピューティング機能を提供し、コードとデータを保護します。 このタイプのクラスターは、データ保護、ブロックチェーン、キー管理、知的財産権、ゲノミクスコンピューティングなどのシナリオに適しています。
ACK Edgeクラスター
ACK Edgeクラスターを使用して、クラウド内のサービスとエッジのサービスを調整できます。 ACK Edgeクラスターは、ノードの自律性、セルベースの管理、およびネットワークトラフィック管理を提供し、コードを書き直すことなくエッジでリソースをデプロイおよび管理するために使用できるネイティブAPIをサポートします。 これは、エッジコンピューティングシナリオにおけるアプリケーションライフサイクル管理およびリソーススケジューリングのためのネイティブかつ集中化された方法を提供する。
ACKサーバーレスクラスタ
ACKサーバーレスクラスターは、制御プレーンまたはワーカーノードを作成する必要のないインスタンス化です。 ACKコンソールまたはCLIを使用して、コンテナーのリソースの設定、アプリケーションのコンテナーイメージの指定、外部サービスの提供方法の設定、およびアプリケーションの起動を行うだけです。
登録済みクラスター
外部KubernetesクラスターをACKに登録し、クラスターを一元管理できます。 これにより、データセンターまたは30パーティのクラウドに存在するKubernetesクラスターを管理できます。
ノード
ノードは、Docker EngineがインストールされているVMまたは物理サーバーであり、コンテナーのホストおよび管理に使用できます。 ACKクラスターにノードを追加すると、ACKはそのノードにエージェントプログラムをインストールし、そのノードをクラスターに登録します。 ビジネス要件に基づいて、ACKクラスター内のノード数を増減できます。
ノードプール
ノードプールは、同じ構成を持つノードのグループです。
ACKは、通常のノードプールと管理対象ノードプールを提供します。
ノードプールタイプ
説明
通常ノードプール
通常のノードプールには、クラスター内で同じ構成を持つ1つ以上のノードが含まれます。 各ノードプールはスケーリンググループに対応します。 通常のノードプールをスケーリングする場合、ACKはAuto Scalingを使用してノードを追加または削除します。 要件に基づいて、複数の通常ノードプールを作成および管理できます。
説明一部のシステムコンポーネントは、デフォルトのノードプールにインストールされます。 システムがデフォルトノードプールを自動的にスケーリングすると、システムコンポーネントが不安定になる可能性があります。 自動スケーリング機能を使用する場合は、自動スケーリング機能が有効になっている新しいノードプールを作成することをお勧めします。
管理対象ノードプール
マネージドノードプールは、特定のノードのO&Mタスクを自動化できます。 たとえば、マネージドノードプールは、CVE (Common Vulnerabilities and Exposures) の脆弱性を自動的にパッチしたり、特定の問題を修正したりできます。 これにより、O&M作業が削減されます。
詳細については、「マネージドノードプールの概要」をご参照ください。
VPC
VPCは、クラウド上で制御する論理的に分離された仮想ネットワーク環境です。 VPCのCIDRブロック、ルートテーブル、ゲートウェイは完全にカスタマイズ可能です。 ECSインスタンス、SLBインスタンス、ApsaraDB RDS (RDS) インスタンスなどのAlibaba CloudリソースをVPCにデプロイできます。
セキュリティグループ
セキュリティグループは仮想ファイアウォールとして機能し、Stateful Packet Inspection (SPI) およびパケットフィルタリング機能を提供します。 セキュリティグループを使用して、クラウド内のセキュリティドメインを定義できます。 セキュリティグループは、同じリージョンに存在する論理的に分離されたインスタンスのグループです。 セキュリティグループ内のすべてのインスタンスは相互に信頼され、同じセキュリティグループルールで保護されます。
アプリカタログ
アプリカタログは、アプリケーションの展開を容易にするためにACKが提供する機能です。 アプリカタログはHelmと統合されており、Helmチャートのインストールに役立つGUIなどの拡張機能を提供します。
オーケストレーションテンプレート
オーケストレーションテンプレートを使用して、Kubernetes設定をYAML形式で保存できます。
Knative
KnativeはKubernetesベースのサーバーレスフレームワークです。 Knativeの目的は、サーバーレスアプリケーション用のクラウドネイティブおよびクロスプラットフォームのオーケストレーション標準を作成することです。
Kubernetes
Kubernetesは、コンテナ化されたワークロードとサービスを管理できる、オープンソースのポータブルで拡張可能なプラットフォームです。 Kubernetesは、宣言型の設定と自動化を容易にします。
コンテナ
コンテナは、アプリケーションとそのランタイム依存関係をパッケージ化するために使用されます。 ノードは複数のコンテナーを実行できます。
イメージ
コンテナイメージは、アプリケーションパッケージの標準形式です。 コンテナイメージは、アプリケーションとそのすべてのソフトウェア依存関係をカプセル化するバイナリデータを表します。 Docker Hub、Container Registry、またはプライベートイメージレジストリでホストされているカスタムイメージからアプリケーションをデプロイできます。 イメージIDは、イメージレジストリのURIとイメージタグで構成される一意の識別子です。 デフォルトの画像タグは
最新
です。
画像レジストリ
イメージレジストリには、Kubernetesが提供するコンテナイメージと、コンテナから構築されたイメージが格納されます。
コントロールプレーン
制御プレーンは、クラスタ内のワーカーノードおよびコンポーネントを管理する。 コンポーネントには、kube-apiserver、kube-scheduler、kube-controller-manager、etcd、およびコンテナーネットワークプラグインが含まれます。
ワーカーノード
ワーカーノードは、ワークロードを実行し、制御プレーンと通信するVMまたは物理ノードです。 ワーカーノードは、スケジュールされたポッドをホストし、制御プレーンと通信します。 ワーカーノードは、Dockerランタイム環境、kubelet、kube-proxy、その他のオプションコンポーネントなどのコンポーネントを実行します。
名前空間
名前空間は、クラスタリソースを仮想空間と分離空間に分割するために使用されます。 デフォルトでは、Kubernetesクラスターはdefault、kube-system、kube-publicの3つの名前空間で初期化されます。 クラスター管理者は新しい名前空間を作成できます。
ポッド
ポッドは、Kubernetesでアプリケーション用に作成または管理できる最小の配置可能単位です。 ポッドは、1つ以上のコンテナ、ストレージリソース、一意のIPアドレス、およびコンテナの実行方法を指定する構成をカプセル化します。
ReplicationController
ReplicationControllerは、指定された数のポッドレプリカが常にKubernetesクラスターで実行されるようにします。 つまり、ReplicationControllerは実行中のポッドレプリカの数を監視し、指定した数に調整します。 ReplicationControllerの実行中のポッドレプリカの数を1つ以上に設定する必要があります。 実行中のポッドレプリカの数が指定した数を下回った場合、ReplicationControllerは新しいポッドレプリカを起動します。 ポッドレプリカの数が指定した数を超えると、ReplicationControllerは冗長なポッドレプリカを終了します。
ReplicaSet
ReplicaSetはReplicationControllerの後継であり、より多くのセレクタタイプをサポートします。 ReplicaSetsは独立してデプロイされませんが、Deploymentsによって使用され、必要な数のポッドの可用性が保証されます。
ワークロード
ワークロードは、Kubernetesで実行されるアプリケーションです。 次の表に、Kubernetesのワークロードの種類を示します。
ワークロードタイプ
説明
Deployment
デプロイは、Kubernetesクラスターで1回限りの操作を実行します。 デプロイメントは、同じ機能を持つが互いに独立したアプリケーションを実行するのに適しています。
StatefulSet
StatefulSetは、アプリケーションの整然としたデプロイ、スケーリング、およびローリングアップデートを保証します。 ボリュームを使用してワークロードのデータを保持する場合は、ワークロードのタイプとしてStatefulSetを選択できます。
DaemonSet
DaemonSetは、クラスター内のすべてまたは一部のノードがポッドを実行することを保証します。 デプロイとは異なり、DaemonSetsは指定されたノードにポッドを作成し、指定されたすべてのノードがDaemonSetポッドを実行するようにします。 DaemonSetsは、Kubernetesクラスターのログとモニタリングに適しています。
ジョブ
ジョブは1回限りのタスクを実行します。 ジョブを使用して、複数のポッドを並行して実行できます。
CronJob
CronJobは、スケジュールに基づいて定期的または定期的な操作を実行します。 CronJobsは、データのバックアップやメールの送信などのタスクに適しています。
CustomResourceDefinition (CRD)
CRDを使用して、サードパーティのワークロードをKubernetesに追加できます。 CRDは、カスタムリソースを定義するメソッドを提供します。
ラベル
ラベルは、リソースオブジェクトに追加されるキーと値のペアです。 ラベルは、ユーザーにとって有用で関連性のあるオブジェクトの属性を指定することを目的としています。 ラベルは、コアシステムに対するセマンティクスを意味しません。 オブジェクトの作成時にラベルをオブジェクトに追加し、その後いつでもラベルを変更できます。 リソースオブジェクトに複数のラベルを追加する場合は、各ラベルのキーが一意である必要があります。
サービス
サービスは、バックエンドポッドのセットを公開する抽象的な方法を表します。 サービスがリクエストを受信すると、kube-proxyはサービスのセレクターに一致するバックエンドポッドを選択し、サービス構成で指定されたポートにリクエストを送信します。
Ingress
Ingressは、クラスター内のサービスへの外部アクセスを管理するルールのコレクションです。 Ingressを使用すると、サービスの外部から到達可能なURLを設定し、トラフィックのバランスを取り、SSL接続を実行し、名前ベースの仮想ホスティングを提供できます。 クラスターのAPIサーバーにHTTP Postリクエストを送信することで、Ingressを作成できます。 Ingressコントローラーは、通常はロードバランサーを使用してIngressを実行します。 高可用性のトラフィックを処理するために、エッジルータまたは追加のフロントエンドを設定することもできます。
設定マップ
ConfigMapsは、属性などの詳細な情報を格納するために使用できます。 ConfigMapsは、設定ファイルやJSONオブジェクトなどの粗い情報を格納するためにも使用できます。 ConfigMapsを使用して、機密ではない暗号化されていない構成情報を保存できます。
秘密
シークレットは、パスワードや証明書などの機密情報を保存および管理するために使用されます。
ボリューム
KubernetesボリュームはDockerボリュームに似ています。 Dockerボリュームはコンテナを提供し、Kubernetesボリュームはその有効期間内にポッドを提供します。 ポッドで宣言されたボリュームは、ポッド内のすべてのコンテナで共有されます。
永続ボリューム (PV)
PVは、ノードがクラスター内のコンピューティングリソースであるように、Kubernetesクラスター内のストレージリソースです。 PVのライフサイクルは、PVが取り付けられているポッドのライフサイクルとは無関係である。 さまざまな種類のPVを、さまざまな種類のStorageClassesを使用してプロビジョニングできます。
永続的なボリュームクレーム (PVC)
PVCは、ポッドがノードのコンシューマであるように、PVのコンシューマである。
StorageClass
StorageClassは、PVの動的プロビジョニングを有効にするために使用されます。 動的プロビジョニングを有効にして、要件に基づいてPV作成を自動化できます。
自動スケーリング
自動スケーリングは、コスト効率の高い方法でビジネスのコンピューティングリソースを動的にスケーリングするためにACKが提供する機能です。 自動スケーリングは、オンラインワークロード、大規模なコンピューティングおよびトレーニングタスク、GPU高速化されたディープラーニングタスク、共有GPUを使用するモデル推論およびモデルトレーニングタスク、および負荷が定期的に変化するワークロードに適しています。 次の表に、ACKによって提供される自動スケーリングコンポーネントを示します。
スケーリングカテゴリ
コンポーネント
説明
ワークロードスケーリング
水平ポッドAutoscaler (HPA)
HPAは、CPU使用率に基づいてポッドを自動的にスケーリングします。 HPAを使用して、DeploymentsやStatefulSetsなどのスケール操作をサポートするワークロードをスケールできます。
CronHPA
一部のシナリオでリソースの無駄を減らすために、ACKはkubernetes-cronhpa-controllerコンポーネントを提供し、事前定義されたスケジュールに基づいてリソースを自動的にスケーリングします。 CronHPAを使用すると、DeploymentsやStatefulSetsなどのスケール操作をサポートするワークロードをスケールできます。 CronHPAはHPAと互換性があります。 CronHPAとHPAを組み合わせて使用して、ワークロードをスケーリングできます。
垂直ポッドオートスケーラー (VPA)
VPAは、ポッドのリソース使用量に基づいて、ポッドのCPUとメモリの予約を自動的に調整します。 この調整により、クラスターリソースの使用率が向上し、他のポッドのCPUとメモリが解放されます。 このようにして、十分なリソースが利用可能なノードにポッドがスケジュールされます。 VPAはまた、ポッドの
要求
およびlimit
パラメータによって指定されたリソースの量を維持する。 VPAは、水平方向にスケーリングできないアプリケーションに使用されます。 通常、VPAは、ポッドが異常から回復するときに使用されます。リソーススケーリング
クラスターAutoscaler
ACKは、ノードを自動的にスケーリングするための自動スケーリングコンポーネント (Cluster Autoscaler) を提供します。 通常インスタンス、GPU高速化インスタンス、およびプリエンプティブルインスタンスは、ビジネス要件を満たすようにACKクラスターに自動的に追加または削除できます。 このコンポーネントは、複数のスケーリングモード、さまざまなインスタンスタイプ、およびゾーン間でデプロイされるインスタンスをサポートします。 このコンポーネントは、さまざまなシナリオに適用できます。 Cluster Autoscalerは、オンラインワークロード、深層学習タスク、および大規模コンピューティングタスクに適用できます。
観察可能性
Kubernetesの可観測機能には、モニタリングとロギングが含まれます。 モニタリングにより、開発者はシステムの動作を追跡することができます。 ロギングは、診断およびトラブルシューティングを容易にする。
ヘルム
Helmは、Kubernetesのパッケージ管理プラットフォームです。 Helmチャートは、アプリケーションが必要とするリソースの設定のパッケージです。
nodeAffinity
nodeAffinity設定を設定して、一致するラベルを持つワーカーノードにポッドをスケジュールできます。
テイント
TaintsはnodeAffinityと反対であり、ノードが特定のポッドを撃退できるようにします。
寛容
許容範囲はポッドに適用され、一致するテイントを持つノードにポッドをスケジュールできるようにします (ただし、必須ではありません) 。
podAffinity
指定したpodAffinity設定を満たすポッドと同じトポロジカルドメインにポッドをスケジュールするように、podAffinity設定を構成できます。 たとえば、podAffinity設定を構成して、ホストなどの同じトポロジ領域で互いに通信するアプリケーションをスケジュールできます。 これにより、これらのアプリケーション間のネットワーク待ち時間が短縮されます。
podAntiAffinity
podAffinity設定を満たすポッドと同じトポロジカルドメインにポッドをスケジュールしないように、podAntiAffinity設定を構成できます。 たとえば、podAntiAffinity設定を構成して、アプリケーションのポッドを複数のホストなどの異なるトポロジカルドメインにスケジュールすることができます。 これは、アプリケーションの安定性を高めるのに役立ちます。
サービスメッシュ (Istio)
Istioは、マイクロサービスの接続、保護、制御、および観察を可能にするオープンプラットフォームです。 サービスメッシュ (ASM) は、完全マネージド型のサービスメッシュプラットフォームです。 ASMは、オープンソースのIstioサービスメッシュと互換性があります。 ASMを使用すると、簡単な方法でサービスを管理できます。 たとえば、ASMを使用して、サービス間トラフィックをルーティングおよび分割し、認証を使用してサービス間通信を保護し、メッシュ内のサービスの動作を観察できます。
関連ドキュメント
Kubernetes用語の詳細については、「Kubernetesの概念」をご参照ください。