AzureのAKSクラスタをCLIで作成する。(それだけ)
作業時のログなので、実際の作業は公式ドキュメントを確認すること。
azコマンド
こちら
リソースグループを作成
まずリソースグループを作成する。
$ az group create --name sample-rg --location eastus
実行結果
[zaki@cloud-dev ~]$ time az group create --name sample-rg --location eastus
{
"id": "/subscriptions/****************/resourceGroups/sample-rg",
"location": "eastus",
"managedBy": null,
"name": "sample-rg",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
real 0m1.843s
user 0m0.396s
sys 0m0.041s
クラスタの作成
前段で作成したリソースグループを指定してクラスタを作成する。
$ az aks create \ --resource-group sample-rg \ --name sample-cluster \ --node-count 2 \ --node-vm-size Standard_B2s \ --generate-ssh-keys \ --kubernetes-version 1.15.12
クイックスタートの内容から--enable-addons monitoringを削除し、代わりにインスタンスタイプの指定--node-vm-size Standard_B1msとノード数--node-count 2、それとKubernetesバージョン指定--kubernetes-version 1.15.12を追加・変更している。
ちなみにKubernetesバージョンは1.15だとエラーになる。
> --kubernetes-version 1.15 --kubernetes-version should be the full version number, such as "1.11.8" or "1.12.6"
また、ノードサイズが小さすぎるとエラーになる.
以下はStandard_B1ms(1vCPU/RAM2GB)を指定した場合
Operation failed with status: 'Bad Request'. Details: System node pool must use VM sku with more than 2 cores and 4GB memory. N odepool name: nodepool1.
実行結果
[zaki@cloud-dev ~]$ time az aks create \ > --resource-group sample-rg \ > --name sample-cluster \ > --node-count 2 \ > --node-vm-size Standard_B2s \ > --generate-ssh-keys \ > --kubernetes-version 1.15.12 Finished service principal creation[##################################] 100.0000%
このまま- Running ..という表示になり、そのまま待っていればクラスタが作成される。
[zaki@cloud-dev ~]$ time az aks create \
> --resource-group sample-rg \
> --name sample-cluster \
> --node-count 2 \
> --node-vm-size Standard_B2s \
> --generate-ssh-keys \
> --kubernetes-version 1.15.12
{- Finished ..
"aadProfile": null,
"addonProfiles": {
"KubeDashboard": {
"config": null,
"enabled": true,
"identity": null
}
},
[...]
"networkPolicy": null,
"outboundType": "loadBalancer",
"podCidr": "10.244.0.0/16",
"serviceCidr": "10.0.0.0/16"
},
"nodeResourceGroup": "MC_sample-rg_sample-cluster_eastus",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "sample-rg",
"servicePrincipalProfile": {
"clientId": "************",
"secret": null
},
"sku": {
"name": "Basic",
"tier": "Free"
},
"tags": null,
"type": "Microsoft.ContainerService/ManagedClusters",
"windowsProfile": null
}
real 4m19.283s
user 0m0.651s
sys 0m0.062s

(補足)使用可能バージョン
--kubernetes-version -k : Version of Kubernetes to use for creating the
cluster, such as "1.16.9". Values from: `az aks
get-versions`.
多分こんな感じ
[zaki@cloud-dev ~]$ az aks get-versions -l eastus --query 'orchestrators[].orchestratorVersion' [ "1.15.11", "1.15.12", "1.16.10", "1.17.7", "1.18.2", "1.18.4" ]
認証情報設定
クラスタ作成しただけだと、まだ接続情報がない。
以下のコマンドで~/.kube/configを更新できる。
(kubectlは既に使用可能な状態、の場合)
$ az aks get-credentials --resource-group sample-rg --name sample-cluster
[zaki@cloud-dev ~]$ az aks get-credentials --resource-group sample-rg --name sample-cluster Merged "sample-cluster" as current context in /home/zaki/.kube/config
~/.kube/configが既にある場合は、AKSの認証情報はマージされる。
クラスタの状態
[zaki@cloud-dev ~]$ kc get node NAME STATUS ROLES AGE VERSION aks-nodepool1-27260109-vmss000000 Ready agent 6m18s v1.15.12 aks-nodepool1-27260109-vmss000001 Ready agent 6m v1.15.12 [zaki@cloud-dev ~]$ kc get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-698c77c5d7-8wzgw 1/1 Running 0 7m25s kube-system coredns-698c77c5d7-rcp9j 1/1 Running 0 5m53s kube-system coredns-autoscaler-5468748cfb-zr446 1/1 Running 0 7m23s kube-system kube-proxy-bwfdj 1/1 Running 0 6m3s kube-system kube-proxy-ql2tp 1/1 Running 0 6m21s kube-system kubernetes-dashboard-74d8c675bc-klcpr 1/1 Running 2 7m24s kube-system metrics-server-6585d46b55-nh2bm 1/1 Running 0 7m25s kube-system tunnelfront-55cd76b75d-lq4qb 2/2 Running 0 7m22s
workerノードのROLEがagentになってるのがなんとなく特徴的。
クラスタの削除
$ az aks delete --resource-group sample-rg --name sample-cluster
リソースグループ毎
リソースグループを削除することで、全て消える。
--no-waitについてはVMのときと同じで、非同期で処理するかどうか。
$ az group delete --name sample-rg --yes --no-wait
azはJMESPATHと仲良くならないといけないようだなー