InfraAcademy

InfraAcademy Blog

【Azure】Azure kubernetes Service(AKS)について勉強してみた

| #Microsoft Azure #Azure kubernetes Service
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

この記事を共有

こんにちは、InfraAcademyを運営しているryuです。

今回は、Azure Kubernetes Service(AKS)とは何かをIT初心者向けに解説します。

Kubernetesを勉強していると、AWSではEKS、AzureではAKS、Google CloudではGKEという名前が出てきます。Kubernetesとの違いが分からず、Azureで何をやってくれるサービスなのか迷う方も多いと思います。

AKSは、Azure上でKubernetesを利用するためのマネージドサービスです。自分でKubernetesの管理用サーバーを一から構築するより、Azureに任せられる部分が多く、アプリケーションの運用へ集中しやすくなります。

この記事では、AKSの基本から、Kubernetesとの違い、AKS AutomaticとStandard、Node Poolの考え方、Azure CLIを使ったクラスター作成まで順番に解説します。

Azure Kubernetes Service(AKS)とは?

Azure Kubernetes Service、略してAKSは、Microsoft Azureが提供しているマネージドKubernetesサービスです。

Kubernetesは、複数のコンテナを安定して動かすためのオーケストレーションプラットフォームです。ただし、Kubernetesそのものを自分で構築・運用しようとすると、Control Planeの可用性やアップデート、Nodeの管理など、アプリケーション以外にも多くの作業が必要になります。

AKSでは、そのうちKubernetesのControl PlaneをAzure側が管理します。利用者はPodやDeploymentなどのKubernetesリソースを使いながら、Azure上でコンテナ化されたアプリケーションを動かせます。

Kubernetesそのものについてまだ分からない場合は、先にこちらの記事を読んでおくとAKSも理解しやすくなります。

Kubernetesとは?Pod・Node・Deploymentの仕組みを初心者向けに解説

KubernetesとAKSは何が違う?

KubernetesとAKSは別の技術ではありません。

AKSは、Azure上でKubernetesを運用しやすくするためのサービスです。

違いを簡単に整理すると、次のようになります。

Kubernetesを自分で構築 AKS
KubernetesのControl Plane 自分で構築・管理 Azureが管理
Node 自分で用意・管理 Azure VMなどをNode Poolとして利用
Kubernetesの操作 kubectl など kubectl など
Pod・Deployment・Service 自分で作成 自分で作成
Azureサービスとの連携 自分で設計 Azureの各サービスと連携しやすい
アップデート 自分で管理 AKSの仕組みを利用して管理

AKSを使っても、Kubernetesの知識が不要になるわけではありません。

Pod、Deployment、Service、Nodeなどの基本はそのまま使います。AKSが楽にしてくれるのは、Kubernetesを動かすための基盤や管理作業の一部です。

AKSではAzureが何を管理してくれる?

Kubernetesクラスターには、大きく分けてControl PlaneとNodeがあります。

Control Planeは、クラスター全体を管理する役割を持ちます。API Serverやスケジューリング、クラスター状態の管理など、Kubernetesを動かす中心部分です。

AKSでは、このControl PlaneをMicrosoftが管理します。

一方、実際にアプリケーションのPodを動かすNodeは、利用者のAKS環境に用意されます。AKS Standardでは、Nodeの台数やVMサイズ、Node Poolなどを利用者側で設定します。

そのためAKSは、すべてをAzureへ丸投げするサービスというより、Kubernetesの管理をAzureと利用者で分担するサービスと考えると分かりやすいです。

AKSのNode Poolとは?

AKSでよく出てくる言葉がNode Poolです。

Nodeは、Podを実際に動かすサーバーです。AKSでは、同じ設定を持つNodeをまとめたものをNode Poolとして管理します。

例えば、システム用のPodを動かすNode Poolと、Webアプリケーションを動かすNode Poolを分けることができます。

AKS Standardでは、System ModeとUser ModeというNode Poolの役割があります。

Node Pool 主な役割
System Kubernetesを動かすために必要なシステムPodなどを配置する
User 利用者のアプリケーションを配置する

小さな検証環境では構成を単純にすることもありますが、本番環境ではアプリケーション用のUser Node Poolを分けることで、システム用Podとアプリケーションを分離しやすくなります。

AKS AutomaticとAKS Standardの違い

現在のAKSには、大きく分けてAutomaticとStandardという2つのクラスター方式があります。

AKS Automatic

AKS Automaticは、Node管理、スケーリング、セキュリティ、監視、アップグレードなど、Kubernetes運用の多くをAzureへ任せやすい方式です。

Kubernetesを使いたいものの、インフラ側の設定を細かく管理する必要がない場合に向いています。Microsoftも、多くのチームやワークロードではAutomaticを利用しやすい選択肢として案内しています。

AKS Standard

AKS Standardは、Node Poolやクラスター構成などを細かく設定したい場合に向いています。

Kubernetesの仕組みを学習したい場合も、NodeやNode Poolを自分で確認しながら操作できるため、Standardの方が内部構成を理解しやすい場面があります。

この記事の後半では、Kubernetesの基本を確認しやすいように、Azure CLIからAKS Standardのクラスターを作成する例を紹介します。

AKSを使うメリット

AKSのメリットは、単にKubernetesをAzureで使えることだけではありません。

Control Planeを自分で一から構築しなくてよい

Kubernetesを自前で構築する場合、Control Planeのサーバーを用意し、可用性やアップデートまで考える必要があります。

AKSではControl PlaneをAzureが管理するため、利用者が管理する範囲を減らせます。

Azureのサービスと組み合わせやすい

AKSはAzure上で動くため、Azure Container Registry、Microsoft Entra ID、Azure Monitorなど、Azureの各サービスと組み合わせられます。

例えば、自分で作成したコンテナイメージをAzure Container Registryへ保存し、そのイメージをAKS上で実行する構成を作れます。

スケールしやすい

アクセスが増えたときにPodの数を増やすだけでなく、Node自体を増やす仕組みも利用できます。

KubernetesのHorizontal Pod AutoscalerやAKSのNode側のスケーリングを組み合わせることで、アプリケーションとインフラの両方を負荷に合わせて調整できます。

AKSを使う前に知っておきたいこと

AKSは便利ですが、IT初心者がいきなり触ると分からない用語がかなり多く出てきます。

少なくとも、次の内容を先に理解しておくと学習しやすくなります。

  1. Linuxの基本操作
  2. IPアドレスやDNSなどのネットワーク
  3. Dockerなどを使ったコンテナの基本
  4. KubernetesのPod・Deployment・Service
  5. Azureのリソースグループや仮想ネットワーク

特にKubernetesの基本が分からないままAKSへ進むと、Azureの用語とKubernetesの用語が同時に出てきて混乱しやすくなります。

最初はAKSの作成方法を暗記するより、Azureがどこを管理し、自分がどこを設定するのかを理解することをおすすめします。

Azure CLIでAKSを作ってみる

ここからは、AKSを実際に作成して基本的な動きを確認します。

Azure Portalから作成する方法もありますが、画面構成は更新によって変わります。この記事では、処理内容が分かりやすいAzure CLIを使います。

学習目的のクラスターでもAzure上にリソースを作成するため、料金が発生する可能性があります。確認が終わったら、記事の最後で紹介する方法で不要なリソースを削除してください。

1. Azure CLIへログインする

自分のPCにAzure CLIをインストールして利用する場合は、まずAzureへログインします。

az login

ブラウザが開くので、利用するAzureアカウントで認証します。

Azure Cloud Shellを使う場合は、あらかじめAzureへログインした状態で利用できるため、この操作が不要な場合があります。

2. リソースグループを作成する

AKSクラスターを配置するリソースグループを作成します。

今回は myAKSResourceGroup という名前で、Japan Eastリージョンに作成します。

az group create \
  --name myAKSResourceGroup \
  --location japaneast

リソースグループは、Azureの複数のリソースをまとめて管理するための単位です。

AKSだけでなく、仮想ネットワークや他のAzureサービスを学ぶときにも何度も登場します。

3. AKSクラスターを作成する

続いてAKSクラスターを作成します。

学習用としてNodeを1台にした例です。

az aks create \
  --resource-group myAKSResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --generate-ssh-keys

AKSの作成には数分以上かかる場合があります。

この例はKubernetesやAKSの動きを確認するための小規模な検証用構成です。本番環境では、可用性、Node数、ネットワーク、認証、監視、バックアップなどを別途設計する必要があります。

AKSクラスターを作成すると、利用者が指定したリソースグループとは別に、NodeなどのAKS内部リソースを管理するためのリソースグループもAzure側に作成されます。

Azure Portalを確認すると、似た名前のリソースグループが増えていて驚くかもしれませんが、AKSがNodeなどのインフラリソースを管理するために利用しています。

4. kubectlからAKSへ接続する

AKSクラスターを作っただけでは、まだKubernetesを操作していません。

Kubernetesを操作するときに利用するのが kubectl です。

Azure Cloud Shellには kubectl が用意されています。自分のPCへインストールする場合は、Azure CLIから次のコマンドを利用できます。

az aks install-cli

続いて、作成したAKSクラスターの接続情報を取得します。

az aks get-credentials \
  --resource-group myAKSResourceGroup \
  --name myAKSCluster

このコマンドによって、kubectl が作成したAKSクラスターへ接続できるようになります。

5. Nodeを確認する

AKSへ接続できたら、まずNodeを確認してみましょう。

kubectl get nodes

正常に接続できていれば、AKSのNodeが一覧に表示されます。

STATUSReady になっていれば、そのNodeでPodを動かせる状態です。

ここまで操作すると、Azure PortalでAKSを作っただけのときより、Kubernetesとの関係が見えやすくなります。

AzureがAKSというサービスを提供していますが、実際のアプリケーション操作では kubectl を使い、KubernetesのNodeやPodを扱います。

6. Deploymentを作成する

次に、簡単なWebサーバーを動かしてみましょう。

今回はnginxのDeploymentを作成します。

kubectl create deployment nginx \
  --image=nginx

作成したDeploymentを確認します。

kubectl get deployments

Podも確認してみましょう。

kubectl get pods

Deploymentを1つ作成すると、その設定に従ってPodが作成されます。

Kubernetesの記事で学んだDeploymentとPodの関係を、AKS上でもそのまま確認できます。

7. Serviceを作成する

Podを作っただけでは、インターネットから簡単にアクセスできません。

そこで、nginxのDeploymentを外部へ公開するためにServiceを作成します。

kubectl expose deployment nginx \
  --type=LoadBalancer \
  --port=80

Serviceの状態を確認します。

kubectl get services

EXTERNAL-IP が割り当てられるまで少し時間がかかる場合があります。

IPアドレスが表示されたら、ブラウザからそのIPアドレスへアクセスしてみてください。nginxのページが表示されれば、AKS上で動かしたPodへAzureのLoad Balancerを通してアクセスできています。

元記事ではAzureの古い投票アプリのチュートリアルを紹介していました。

現在はMicrosoftのAKSクイックスタートも内容が更新されているため、古いチュートリアルのエラーを直しながら進めるより、現在の公式ドキュメントを利用することをおすすめします。

AKSではPodとNodeを別々に考える

AKSを触り始めたときに混乱しやすいのが、PodとNodeの違いです。

Nodeは、Podを動かすためのサーバーです。一方、Podは、そのNode上で動くKubernetesの実行単位です。

例えばNodeを3台に増やしても、アプリケーションのPodが自動的に3個になるとは限りません。反対に、1台のNode上で複数のPodを動かすこともできます。

アプリケーションを増減する場合はDeploymentやHorizontal Pod Autoscalerなどを使い、Node側の処理能力が足りなくなった場合はNode Poolのスケーリングを考えます。

この2つを分けて考えられるようになると、AKSの構成をかなり理解しやすくなります。

Azure Container Registryと組み合わせる

実際の開発では、nginxのような公開済みイメージだけでなく、自分で作成したアプリケーションのコンテナイメージを使います。

Azureには、コンテナイメージを保存するAzure Container Registry(ACR)があります。

開発の流れとしては、自分のアプリケーションからコンテナイメージを作成し、ACRへ保存します。その後、AKSからACRのイメージを取得してPodとして動かします。

AKSとACRを連携すると、Azure内でコンテナイメージの保存からKubernetesへのデプロイまでを管理しやすくなります。

Kubernetesを実務で使う場合は、AKSだけでなくコンテナレジストリやCI/CDまで含めて学んでいくことになります。

AKSとAzure Container Appsはどう使い分ける?

Azureでコンテナを動かすサービスはAKSだけではありません。

例えばAzure Container Appsを利用すると、KubernetesのNodeやClusterを細かく意識せずにコンテナ化されたアプリケーションを動かせます。

そのため、コンテナを使うから必ずAKSを選ぶわけではありません。

Kubernetesの機能やエコシステムを使いたい、Nodeやネットワークを細かく設計したい、複数のワークロードをKubernetesとして運用したい場合はAKSが候補になります。

一方、Kubernetesそのものを管理したいわけではなく、コンテナ化したWebアプリケーションやAPIを手軽に動かしたい場合は、Azure Container Appsなどの方がシンプルな場合があります。

サービス名から決めるのではなく、どこまでインフラを管理したいかで考えることが大切です。

学習が終わったらAKSを削除する

AKSではNodeとなるAzure VMなどのリソースを利用するため、作成したままにすると料金が発生する可能性があります。

学習が終わったら、不要なリソースを削除しましょう。

今回の記事で作成したものをまとめて削除するなら、リソースグループごと削除できます。

az group delete \
  --name myAKSResourceGroup \
  --yes \
  --no-wait

削除対象のリソースグループ名が正しいことを必ず確認してから実行してください。

学習環境では、作るところだけでなく、不要になったリソースを削除するところまでを一つの流れとして覚えておくのがおすすめです。

AKSを理解するならLinux・ネットワークも重要

AKSの操作自体はAzure PortalやAzure CLIから始められますが、トラブルが起きるとLinuxやネットワークの知識が必要になります。

例えばPodから外部へ通信できない場合、Kubernetesだけでなく、DNS、IPアドレス、ルーティング、ファイアウォールなども確認する必要があります。

InfraAcademyでは、Linux、ネットワーク、Docker、AWS、セキュリティなど、クラウドやコンテナを理解するための基礎を初心者向けに段階的に学習できます。

AKSのコマンドを覚える前に、Nodeが何をしているのか、通信がどこを通っているのかを理解しておくと、Kubernetesやクラウドの学習も進めやすくなります。

InfraAcademyでインフラの基礎から学ぶ

Azure Kubernetes Service(AKS)まとめ

今回は、Azure Kubernetes Serviceについて解説しました。

AKSは、Azure上でKubernetesを利用するためのマネージドサービスです。KubernetesのControl PlaneをAzure側が管理してくれるため、自分でKubernetesを一から構築するより運用負荷を減らせます。

ただし、AKSを使えばKubernetesを知らなくてもよいわけではありません。Pod、Node、Deployment、Serviceなどの基本概念はAKSでもそのまま使います。

現在は、Azure側へより多くの運用を任せるAKS Automaticと、Node Poolなどを細かく管理できるAKS Standardがあります。どちらを使う場合でも、Kubernetesの基礎を理解していることが重要です。

初めてAKSを触る場合は、まず小さな検証用クラスターを作り、kubectl get nodeskubectl get pods を実行してみてください。Azureのサービスとして見るだけでなく、実際にKubernetesが動いていることを確認すると理解しやすくなります。

参考

あわせて読みたい

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る