3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Azure Kubernetes Serviceでカンタンk8s環境構築

Last updated at Posted at 2024-06-29

はじめに

Kubernetes魅力的です!
AzureにおけるKubernetesプラットフォームであるAzure Kubernetes Service(以下、AKS)を触ってみたので以下にまとめます。

Kubernetesとは

  • コンテナ化されたアプリケーションのデプロイメント、スケーリング、および管理を自動化するオープンソースのコンテナオーケストレーションプラットフォームです。以下、k8sと記載します。
  • クラウドではサーバ機器や回線など物理的な要素が抽象化されていますが、kubernetesでは負荷分散やIaaSとしてのサーバ、ルーティングテーブルなどのコンポーネントが抽象化されています(ServiceやNode、Podなど)。
  • AKSの裏ではAzure Load Balancer、仮想マシンスケールセット(VMSS)、OSのiptablesなどのコンポーネントが組み合わさってk8sの機能が実装されています。

image.png

AKSとは

AKSはフルマネージドKubernetesサービスです。AKSは、Kubernetesクラスタのデプロイ、管理、スケーリングを簡素化することを目的としています。以下に、AKSの主な特徴をまとめます。

主な特徴

マネージドサービス

AKSはフルマネージドサービスであり、AzureがKubernetesクラスタの管理、監視、保守を行います。これには、Kubernetesのアップグレード、パッチ適用、バックアップが含まれています。

簡単なデプロイ

簡単なコマンドやAzureポータルを使用して、数分でKubernetesクラスタをデプロイできます。複雑なインフラストラクチャの設定が不要です。

スケーリング

AKSは自動スケーリング機能を提供しており、負荷に応じてクラスタのノード数を自動的に増減できます。これにより、リソースの効率的な利用が可能になります。ちなみに、裏ではVMSSの機能が使われています。

統合されたAzureサービス

Azure DevOps、Azure Monitor、Azure Policyなど、他のAzureサービスとシームレスに統合されています。これにより、CI/CDパイプラインの構築や、モニタリング、セキュリティポリシーの適用が容易になります。

高可用性とリソース分離

AKSは、複数の可用性ゾーンにわたるクラスタのデプロイをサポートしており、高可用性を確保します。また、ノードプール機能により、異なるタイプのVMを混在させて使用できます。

AKS環境セットアップ

AzureCLIのインストール

az login

az provider register -n Microsoft.Network

az provider register -n Microsoft.Compute

az provider register -n Microsoft.Storage

az provider register -n Microsoft.ContainerService

参考

kubectlコマンドのインストール

eksctlのインストール(chocolately)

choco install -y kubernetes-cli

バージョンの確認

kubectl version --client

参考

Azure Container Registry

Azure上のコンテナレジストリサービスです(Docker Hubのようなもの)。

ACRを作成

az acr create --resource-group $ACR_RES_GROUP --name $ACR_NAME --sku Standard --location japaneast

イメージのビルド

az acr build —registry $ACR_NAME —image sample-image:v1.0 .

上記のイメージはkubernetesクラスタ上でpullすることで動かすことができます。

サービスプリンシパルの設定

あるAzureリソースがまた別のAzureリソースに何らかの操作を行いたいとき「サービスプリンシパル」を作成してそのアカウント(のようなもの)に対して権限を付与します(閲覧者か共同作成者かなど)。

サービスプリンシパルの作成

az ad sp create-for-rbac —name sample-principal —role Reader —scope $SAMPLE_ACR_RESOURCE_ID

※リソースIDは以下のコマンドにて取得できる。

$SAMPLE_ACR_RESOURCE_ID=$(az acr show —name sample-acr —query id —output tsv)

サービスプリンシパル作成時のappIdとpasswordを控える(AKSにACRの参照権限を与えるときに使うため)。

なお、以下のようにするとそれぞれの値を変数に格納できる

$APP_ID=$(az ad sp list —display-name sample_principal —query ‘[].{ID.appId}’ —output tsv)
$SP_PWD=$(**az ad sp create-for-rbac —name sample-pricipal —role Reader —scope $SAMPLE_ACR_RESOURCE_ID **—query password —output tsv)

portal上でACRのIAMを見ると該当のサービスプリンシパルが作成されていることがわかる。

image.png

参考

AKSクラスターの作成

az aks create —name $AKS_NAME —resource-group AZ-foo —node-count 3 —kubernetes-version 1.11.4 —node-vm-size Standard_DS1_v2 —generate-ssh-keys —service-principal $APP_ID —client-secret $SP_PWD

image.png
K8sのVersion1.12以降でAzure VMSSがサポートされている。chatGPT曰くv1.12より前はVMの可用性セットを用いてAKSが構築されていたとのこと。
参考

AKSを作成するとリソースグループが自動的に作成されます。VMSS、ネットワーク系、およびストレージがここに含まれます。

image.png

VMSSには—node-countで指定した数のインスタンスが作成される(今回は3つ)。

image.png

kubectlを実行してみる

クラスターで動くノード一覧を表示する

kubectl get node

-wオプションで定期的に実行します。なお、実行間隔はexponential backoffというアルゴリズムに基づいており、繰り返すごとに間隔が長くなっていきます。

image.png

ノード数の確認をするとAzure portalからVMSSを確認したときと同じコンピュータ名のノードが3つ確認できます。

image.png

おわりに

皆様もよきAKSライフを!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?