やりたいこと
AKS (Azure Kubernetes Service) をいろいろ触る機会があって、概念レベルだった理解が深まったのでこの記事にまとめます。
AKS の作成や操作といった具体的な手順は別記事で投稿する予定です。
AKS (Azure Kubernetes Service) とは
公式ドキュメントより
Azure Kubernetes Service (AKS) を使用すると、運用上のオーバーヘッドが Azure にオフロードされるため、Azure でのマネージド Kubernetes クラスターのデプロイが簡素化されます。 ホストされた Kubernetes サービスとして、Azure によって正常性監視やメンテナンスなどの重要なタスクが処理されます。 AKS クラスターを作成すると、コントロール プレーンが自動的に作成されて構成されます。 このコントロール プレーンは、ユーザーから抽象化されたマネージド Azure リソースとして無料で提供されます。 AKS クラスターに接続されているノードに対してのみ課金され、管理します。
Web アプリケーションの各サービスをコンテナで構築するようなマイクロサービスを実現する上で、コンテナのオーケストレーションを行ってくれる Kubernetes を Azure が提供しているもの。Kubernetes のクラスター管理などを Azure が行ってくれるので、サービスの開発に集中でき、導入も簡単になる、というのが個人的な理解。
AKS の基本概念
大まかな流れ
- AKS クラスターを作成する
- Azure CLI や Kubernetes CLI が便利
- マニフェストファイルを作成する
- マニフェスト: Kubernetes のリソース定義 (YAML)
-
kind
フィールドの値を変更することで定義対象を変更できる
- ポッドに関するマニフェストファイルをデプロイする
- アプリケーション (コンテナイメージ) が AKS 上で実行される
事前に行うこと (Optional)
- AKS 用のアプリケーションを準備する
- コンテナイメージを作成したり、ローカルでテストしたり
- コンテナレジストリを作成する
- ACR (Azure Container Registry) などを利用する
構成要素
AKS クラスターは大きく2つのコンポーネントに分割される
- コントロールプレーン
- ノード
コントロールプレーン
- クラスターに関する全体的な決定を行う
- クラスターイベントの検出および応答を行う (定義されたポッド数が満たされていないときに新しいポッドを起動するなど)
- kube-apiserver 経由で API を呼び、クラスター内のリソースを管理する
- AKS ではマネージドコントロールプレーンなため、高可用性を意識して構成する必要はないが、コントロールプレーンに直接アクセスはできない
- 直接アクセスするためには、Cluster API Provider Azure を使用して自己管理型の Kubernetes クラスターを展開する
ノード
- アプリケーションが実行されるリソース
- クラスター内に少なくとも1つ以上存在する
- AKS では Azure Virtual Machine によって実行されている
- 1つのノードが1つの VM に相当する
ノードプール
- 同じ構成のノードはノードプールにグループ化できる
- クラスター内には少なくとも1つのノードプールが存在する
- デフォルトの数とサイズはクラスター作成時に定義する
ワークロードの構成要素
- ポッド
- デプロイメント
ポッド
- アプリケーションのインスタンス
- 基本的には実行されるコンテナと1対1でマッピングされる
- 1つのポッドに複数のコンテナを含む場合もある
デプロイメント
- ポッドにデプロイするコンテナイメージの定義やレプリカ数などを YAML で定義する (マニフェスト)
- 定義したマニフェストを API 経由でデプロイすることでポッドに適用されるとアプリケーションが実行される
以上です。