Azure CLIでAzure Kubernetes Serviceクラスターを作成する
AzureのAzure Kubernetes Service(AKS)を使用して、ジョブを設定しようと思ったのでAzureのAKSクラスターを作成していきたいと思います。
Azure Kubernetes Serviceクラスターを作成する
Azure CLIをインストールする
Azure CLIをローカルにインストールします。OSによって手順が違うので、細かい設定はこちらを参照してください。今回はmacで進めていきたいと思います。
以下のコマンドを実行します。
$ brew update && brew install azure-cli
正常にインストールされているか、確認します。
$ az --version
azure-cli 2.6.0
command-modules-nspkg 2.0.3
core 2.6.0
nspkg 3.0.4
telemetry 1.0.4
Python location '/usr/local/Cellar/azure-cli/2.6.0/libexec/bin/python'
Extensions directory '/Users/*******/.azure/cliextensions'
Python (Darwin) 3.8.2 (default, Mar 11 2020, 00:29:50)
[Clang 11.0.0 (clang-1100.0.33.17)]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Please let us know how we are doing: https://aka.ms/clihats
and let us know if you're interested in trying out our newest features: https://aka.ms/CLIUXstudy
Azureのcompletionを設定しておく
コマンドを補完するためにAzure CLIのcompletionをこちらからダウンロードして読み込みます。自分はzshを使用しているため、zshrcに設定しておきます。
# Azure completion
source /Users/*****/az.completion
azを押して、tabを押すと補完されるようになったと思います。
Azureにログインする
Azure にログインするために以下のコマンドの実行すると、認証画面が出力されるのでAzureアカウントを選択します。すると設定されているサブスクリプションが表示されます。
$ az login
/usr/local/Cellar/azure-cli/2.6.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="?
if x is 0 or x is 1:
/usr/local/Cellar/azure-cli/2.6.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:32: SyntaxWarning: "is" with a literal. Did you mean "=="?
if x is 0 or x is 1:
/usr/local/Cellar/azure-cli/2.6.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="?
elif y is 0 or y is 1:
/usr/local/Cellar/azure-cli/2.6.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:34: SyntaxWarning: "is" with a literal. Did you mean "=="?
elif y is 0 or y is 1:
/usr/local/Cellar/azure-cli/2.6.0/libexec/lib/python3.8/site-packages/jmespath/visitor.py:260: SyntaxWarning: "is" with a literal. Did you mean "=="?
if original_result is 0:
You have logged in. Now let us find all the subscriptions to which you have access...
[
{
"cloudName": "AzureCloud",
"homeTenantId": "****",
"id": "****",
"isDefault": true,
"managedByTenants": [],
"name": "***",
"state": "Enabled",
"tenantId": "****",
"user": {
"name": "****",
"type": "user"
}
}
]
リソースグループを作成する
Azureへのログインが完了したので、リソースグループを作成していきます。
まず現在のリソースグループの確認を行います。
$ az group list
[
{
"id": "/subscriptions/*****/resourceGroups/Weblog",
"location": "japaneast",
"managedBy": null,
"name": "Weblog",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
},
{
"id": "/subscriptions/*****/resourceGroups/TOME",
"location": "japaneast",
"managedBy": null,
"name": "TOME",
"properties": {
"provisioningState": "Succeeded"
},
"tags": {},
"type": "Microsoft.Resources/resourceGroups"
}
]
WeblogとTOMEというリソースが存在していますが、今回は新しいリソースグループを作成していこうと思います。
$ az group create --name sample --location japaneast
{
"id": "/subscriptions/*****/resourceGroups/sample",
"location": "japaneast",
"managedBy": null,
"name": "sample",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
AKSクラスターを作成する
最後に目的のクラスターを作成していきたいと思います。az create コマンドでAKSクラスターを作成します。
$ az aks create --resource-group sample --name sampleAKSCluster --node-vm-size Standard_B2s --node-count 1
{- Finished ..
"aadProfile": null,
"addonProfiles": null,
"agentPoolProfiles": [
{
"availabilityZones": null,
"count": 1,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "nodepool1",
"nodeLabels": {},
"nodeTaints": null,
"orchestratorVersion": "1.15.11",
"osDiskSizeGb": 100,
"osType": "Linux",
"provisioningState": "Succeeded",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "VirtualMachineScaleSets",
"vmSize": "Standard_B2s",
"vnetSubnetId": null
}
]・・・
これでAKSクラスターが作成できました。
AKSクラスターに接続する
AKSクラスターが作成できたので、AKSクラスターに接続を行います。
ローカル環境にkubectlがインストールされていない場合は以下のコマンドを実行します。
$ az aks install-cli
先程作成したクラスターへ接続を行います。–resource-groupにはこちらで作成したリソースを設定し、–nameにはこちらで作成したクラスター名を設定します。
$ az aks get-credentials --resource-group sample --name sampleAKSCluster
Merged "sampleAKSCluster" as current context in /Users/****/.kube/config
これでクラスターの情報が.kube/configに追加されました。
Deploymentを作成する
一通りの作業が終わったので、Deploymentを作成していきたいと思います。
$ kubectl apply -f https://k8s.io/examples/application/deployment.yaml
deployment.apps/nginx-deployment created
作成されたので、Podを確認します。
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-7fd6966748-52rz6 1/1 Running 0 41s
nginx-deployment-7fd6966748-cq52w 1/1 Running 0 41s
正常に作成されていたのがわかったので、最後に削除していきます。
$ kubectl delete -f https://k8s.io/examples/application/deployment.yaml
deployment.apps "nginx-deployment" deleted
$ kubectl get pod
No resources found.
Podも全て削除されました。これで作成〜削除も正常にできました。
まとめ
今回はAzureでAzure Kubernetes Serviceを作成しました。過去にGKEを作成したこともあったので、あまり苦戦せずに出来たかなと思います。今後はKubernetes関連の勉強やリソース管理のできるTerraformとか、あとは自前のサーバーでKubernetesクラスターの構築等をやっていきたいです。