AKSとは
Azure Kubernetes Service (AKS) は、Microsoft AzureのマネージドKubernetesサービスであり、Kubernetesクラスターの展開と管理を簡素化することを目的としています。これを実現するために、AKSはクラスター管理の運用タスクをAzureにオフロードし、AzureがKubernetesのコントロールプレーンを処理し、ワーカーノードのセットアップを簡素化します。AKSサービス自体は無料で、ワーカーノードの稼働時間に対してのみ料金が発生します。
AKSの使用には、次のような多くの利点があります。
- アプリケーション開発の迅速化:AKSは、パッチ適用、自動アップグレード、モニタリング、スケーリング、自己修復を行います。これにより、開発チームは運用タスクから解放され、サービスの構築に集中できます。
- 動的なリソース利用:フルマネージドサービスであるAKSを使用すると、Kubernetesコンポーネントを直接管理することなく、需要に応じてスケーリングできる柔軟なインフラストラクチャを活用して、コンテナ化されたサービスを迅速に展開して実行できます。
- セキュリティとコンプライアンス:AKSはPCI-DSSやSOCなど、複数の基準に準拠しています。
Kubernetesとは
Kubernetesは、コンテナ化されたワークロードの展開とスケーリングを容易にするオープンソースのオーケストレーションシステムです。その人気と広範な利用にもかかわらず、Kubernetesクラスターを手動で展開し、維持することは依然として簡単な作業ではありません。MicrosoftのAzure Kubernetes Service (AKS) は、エンジニアがKubernetesクラスターを管理するのに役立ちます。AKSを使用すると、Kubernetes環境の管理に関する運用タスクが容易になります。
コンテナは、アプリケーションをバンドルして実行するための優れた方法ですが、本番環境でコンテナを実行すると、次のようないくつかの課題が発生します。
- フェイルオーバー処理
- 水平スケーリング
- サービス検出
- さまざまな展開パターンの実装
- コンテナセキュリティ
Kubernetesの機能
Kubernetesの主な機能には、次のようなものがあります。
サービス検出
Kubernetesでホストされたワークロードは、自動的に発見され、DNSやIPアドレスを通じて公開されるため、他のワークロードがサービスを見つけて通信を開始しやすくなります。
ロードバランシング
ワークロードがサービスとして抽象化されることで、Kubernetesは同じワークロードの複数のレプリカ間で基本的なロードバランシング機能を提供できます。
ストレージオーケストレーション
Kubernetesを使用すると、ストレージシステムを簡単にマウントして、データを永続化するためにコンテナで使用できるようになります。Kubernetesは、ノードのローカルストレージおよびリモートのクラウドでホストされているボリュームと統合できます。
ワークロードの展開
Kubernetesでホストされるワークロードは宣言的に記述され、Kubernetesエンジンは必要なすべての依存関係が揃っていることを確認することで、実際の展開を処理します。展開などの概念を活用することで、ワークロードのロールアウト戦略やロールバック戦略を含め、ワークロードを簡単に宣言できます。
ビンパッキング
Kubernetesでは、各ワークロードレプリカが使用できるリソースの数(リクエストと制限)を指定できます。これにより、コンピューティングリソースをより有効に活用して、リソースの浪費を防ぎ、ワークロードが他のワークロードのリソースを消費しないようにすることができます。
自己修復
Kubernetesは、Liveness Probe、Readiness Probe、Startup Probeを活用して、サービスが正常でトラフィックを受信できることを確認し、必要に応じて再起動します。
設定管理とシークレット
ConfigMapsとSecretsを使用すると、ワークロードは必要な設定パラメーター、接続の詳細、および認証情報を一元化された安全な場所から簡単に取得できます。これにより、サードパーティの設定やシークレットマネージャーへの依存を減らすことができます。
Kubernetesコンポーネント
Kubernetesは、コントロールプレーンとワーカーノードの間で実行されるいくつかのコンポーネントで構成されています。コントロールプレーンコンポーネントでは、Kubernetesクラスターの管理機能が処理されます。このコンポーネントは、クラスター全体の運用に影響を与える決定を行います。さまざまなコンポーネントが、さまざまなタスクの管理を担当します。
| コンポーネント | 説明 |
|---|---|
| kube-apiserver | Kubernetesクラスターとのすべての通信は、kube-apiserverを経由します。このコンポーネントはKubernetes APIを公開し、その「フロントエンド」として機能します。設計上、kube-apiserverは増加する負荷を処理するために水平方向にスケーラブルです。 |
| etcd | Kubernetesエンジンは、キーと値のストアであるetcdを使用して、新しいリソース、設定、更新など、クラスターに関連するすべての情報を格納します。 |
| kube-scheduler | このコンポーネントは、新しいPodのスケジュールを担当します。kube-schedulerは、ノードが割り当てられていないPodを探して、それらをスケジュールする場所を決定します。ハードウェア要件やアフィニティとアンチアフィニティの制約などの要素を考慮して、複雑なスケジューリングの決定を行います。 |
| kube-controller-manager | kube-controller-managerは、コントローラープロセスを実行します。Kubernetesクラスターは複数のコントローラー(ノードコントローラーやジョブコントローラーなど)を持つことができ、kube-controller-managerはコントローラーが正常に動作するようにします。 |
| cloud-controller-manager | クラウドコントローラーマネージャーは、さまざまなクラウドプロバイダーに固有のコントローラーを実行します。これにより、必要に応じて特定のプロバイダーの機能(ディスクボリュームの作成など)を簡単に使用できます。ノードコンポーネントはすべてのワーカーノードで実行され、すべてのクラスターには少なくとも1つのワーカーノードが必要です。ノードコンポーネントは、ポッドが実行中であることの確認や、ノードのステータスをkube-apiserverに通知するなどのタスクを実行します。 |
| kubelet | kubeletはすべてのワーカーノードで実行され、コンテナが実行中で正常であることを確認します。この確認に、ポッド仕様を使用します。 |
| kube-proxy | このKubernetesネットワークプロキシは、ノードレベルでネットワークルールを管理し、Serviceの抽象化の実装に貢献します。 |
| コンテナランタイム | コンテナランタイムはコンテナを実行します。ノードごとにコンテナランタイムが必要です。KubernetesではcontainerdやCRI-Oなどの複数のランタイムがサポートされています。 |
AKSの8つの機能
Azure Kubernetes Services (AKS) には、次のような機能があります。
1. Entra ID (Azure ID) の統合
AKSでは、Entra ID(旧Azure AD)サービスと簡単に統合できます。既存のADユーザーおよびグループに、統合サインオンを通じてクラスター環境へのアクセス権を付与できるため、ユーザー管理が簡素化されます。既存のアイデンティティに対しても、クラスターへのアクセスを確保できます。
2. 統合されたロギングとモニタリング
ワークロードの実行では、予期しない障害を防ぐために、そのパフォーマンスと容量をモニタリングします。Azure Monitorを使用すると、コンテナ、ノード、クラスター、AKSコンポーネントのログからメトリックを収集できます。Azureは、そのデータをLog Analyticsワークスペースに格納する機能を簡素化し、Azure Portal、Azure CLI、またはAzure APIを通じて利用できるようにします。
3. クラスターノードとPodのスケーリング
Kubernetesクラスターは、必要に応じてスケールアップおよびスケールダウンする必要があります。これには、Podとノードの両方のスケーリングが含まれます。AKSクラスターオートスケーラーは、アプリケーショントラフィックに対応するためにノード数を調整し、Kubernetesクラスターのサイズを自動的に変更できます。
4. GPU対応ノード
GPU対応ノードは、グラフィックス処理や機械学習などの計算負荷の高いタスクに最適です。AKSは、これらのノードタイプのプロビジョニングと、必要に応じたKubernetesクラスターへの接続を簡素化します。
5. クラスターノードのアップグレード
KubernetesのAPIバージョンは頻繁に変更されるため、大規模なKubernetesクラスター群を運用する企業は、異なる環境で異なるワークロードに対してどのバージョンを実行しているのかをすぐに把握できなくなる可能性があります。AKSは、複数のKubernetesバージョンの同時実行をサポートしているため、アップグレード前に機能をテストするための時間を確保できます。アップグレードを決定すると、AKSがクラスターのアップグレードを実行し、ワークロードを新しいバージョンが実行されているノードに移行するため、中断が最小限に抑えられます。
6. ストレージボリュームのサポート
ほとんどのアプリケーションは、コンテナ化されているかどうかに関係なく、情報を保持する必要があります。一部のコンテナ化されたアプリケーションは、Podが新しいノードにスケジュールされた後も、同じストレージボリュームにアクセスする必要がある場合があります。AKSでは、ワークロードが永続データの静的ボリュームまたは動的ボリュームをプロビジョニングできます。
7. Dockerイメージのサポートと独自のプライベートコンテナレジストリー
AKSはOCIに準拠しており、Dockerイメージ形式をサポートしています。Azureは、AKSと簡単に統合できるAzure Container Registry (ACR) を提供して、プライベートイメージレジストリーもサポートします。
8. Azure Virtual Network
AKSには、KubenetとAzure Container Networking Interface (CNI) ネットワークの2つのネットワークモデルが用意されています。必要なネットワーク設定を定義でき、AKSが実装を処理します。
セルフマネージド型のKubernetesの課題
前述のコンポーネントの複雑な性質を考えると、大規模なKubernetesクラスターの実行と管理には労力と専門知識が求められます。Kubernetesが機能するには、基盤となるインフラストラクチャコンポーネント(サーバー、ストレージ、ネットワークなど)以外に、前述のすべてのコンポーネントが配置されている必要があります。また、コンポーネントのセキュリティを確保し、保守し、スケールし、必要に応じてアップグレードする必要があります。
カスタムビルドのKubernetesクラスターを実行するには、すべての運用タスクに専任のエンジニアチームを雇う必要がある場合があります。これは、コアビジネスがKubernetesエコシステム向けのツールの構築などである場合や、自社クラスターを実行する必要がある特定の要件がある場合に最適です。しかし、ほとんどの場合、これらのクラスター管理タスクは専用のサービスに任せるのが最適です。そこで役立つのがAKSです。
AKSは、Kubernetesクラスターの実行の運用面のほとんどを処理するだけでなく、コンテナ化されたワークロードを実行する組織にとって魅力的なプラットフォームとなる追加機能を提供します。
クラウドストライクがAKSのロギングにどう貢献できるか
Kubernetesを使用すると、コンテナ化されたワークロードを簡単に実行できます。サービス検出や自己修復などの問題に対処します。しかし、Kubernetesベースの大規模なシステムを維持することは簡単な作業ではありません。Azure Kubernetes Serviceでは、コントロールプレーン管理や動的リソース割り当てなど、運用タスクの多くを抽象化できます。
AKSでホストされるワークロードからのログは、アプリケーションのデバッグに役立ち、脅威の検知に使用できます。CrowdStrike Falcon® LogScaleはSaaSロギングプラットフォームで、AKSクラスターやその他のソースからのログを無制限に保存できます。
クラウドストライクがAKSのロギングにどう貢献できるか
これにより、組織はログに対して強力なクエリを実行して、ダッシュボードを作成し、アラートを設定できるようになります。