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と仲良くならないといけないようだなー