B2sの2ノード構成のクラスタのノードを増やしたり、B2msインスタンスタイプのノードを追加したり。
$ az aks create \ --resource-group sample-rg \ --name sample-cluster \ --node-count 2 \ --node-vm-size Standard_B2s \ --generate-ssh-keys
こんなんで作ったクラスタ
[zaki@cloud-dev ~]$ kc get node NAME STATUS ROLES AGE VERSION aks-nodepool1-27260109-vmss000000 Ready agent 4m45s v1.16.13 aks-nodepool1-27260109-vmss000001 Ready agent 4m42s v1.16.13 [zaki@cloud-dev ~]$ kc describe node | grep -A7 Allocatable: Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2200492Ki pods: 110 -- Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2200496Ki pods: 110
B2MS自体はメモリ4GBなんだけど、クラスタで使用できるメモリは半分くらいなんだよね。
ノードのスケールアウト
ノードプール名を取得
az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
実行例
[zaki@cloud-dev ~]$ az aks show --resource-group sample-rg --name sample-cluster --query agentPoolProfiles [ { "availabilityZones": null, "count": 2, "enableAutoScaling": null, "enableNodePublicIp": false, "maxCount": null, "maxPods": 110, "minCount": null, "mode": "System", "name": "nodepool1", "nodeLabels": {}, "nodeTaints": null, "orchestratorVersion": "1.16.13", "osDiskSizeGb": 128, "osType": "Linux", "provisioningState": "Succeeded", "scaleSetEvictionPolicy": null, "scaleSetPriority": null, "spotMaxPrice": null, "tags": null, "type": "VirtualMachineScaleSets", "vmSize": "Standard_B2s" } ]
1個しか無いんで、name
まで指定して一発で取ろうと思えば取れる。
複数ある場合はリスト出力される。
[zaki@cloud-dev ~]$ az aks show --resource-group sample-rg --name sample-cluster --query agentPoolProfiles[].name [ "nodepool1" ]
スケーリング
リソースグループ名、クラスタ名、ノードプール名を指定して実行
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
実行例
[zaki@cloud-dev ~]$ az aks scale --resource-group sample-rg --name sample-cluster --node-count 3 --nodepool-name nodepool1 {- Finished .. "aadProfile": null, "addonProfiles": { "KubeDashboard": { "config": null, "enabled": true, "identity": null } }, "agentPoolProfiles": [ { "availabilityZones": null, "count": 3, "enableAutoScaling": null, "enableNodePublicIp": false, "maxCount": null, : :
[zaki@cloud-dev ~]$ kc get node NAME STATUS ROLES AGE VERSION aks-nodepool1-27260109-vmss000000 Ready agent 17m v1.16.13 aks-nodepool1-27260109-vmss000001 Ready agent 17m v1.16.13 aks-nodepool1-27260109-vmss000002 Ready agent 85s v1.16.13
3ノードになりました。
ノードのスケールアップ
は出来ないというか、クラスタに参加済みのノード自体のインスタンスタイプを変更は出来ないので、「ご所望のインスタンスタイプのノードプールを新規追加」する。EKSと一緒ですね。
今、1ノード2GB強のメモリが使用できるB2sの3ノード構成なので、例えばrequest 2GiBなpodだと乗せるのが困難なので、B2msのノードを追加してみる。
ノードプールの追加
B2msタイプの1ノードのノードプールを追加する。
az aks nodepool add \ --resource-group sample-rg \ --cluster-name sample-cluster \ --name b2msng \ --node-count 1 \ --node-vm-size Standard_B2ms
[zaki@cloud-dev ~]$ kc get node NAME STATUS ROLES AGE VERSION aks-b2msng-27260109-vmss000000 Ready agent 39s v1.16.13 aks-nodepool1-27260109-vmss000000 Ready agent 32m v1.16.13 aks-nodepool1-27260109-vmss000001 Ready agent 32m v1.16.13 aks-nodepool1-27260109-vmss000002 Ready agent 16m v1.16.13
この通り。
[zaki@cloud-dev ~]$ kc describe node | grep -A7 Allocatable: Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 5490608Ki pods: 110 -- Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2200492Ki pods: 110 -- Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2200496Ki pods: 110 -- Allocatable: attachable-volumes-azure-disk: 4 cpu: 1900m ephemeral-storage: 119716768775 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 2200496Ki pods: 110
(参考)VMのインスタンスタイプ
[zaki@cloud-dev ~]$ az vm list-sizes --location eastus --query '[].name' [ "Standard_B1ls", "Standard_B1ms", "Standard_B1s", "Standard_B2ms", "Standard_B2s", "Standard_B4ms",
ノードプールの削除 (失敗)
というわけで今、B2sのnodepool1
と、B2msのb2msng
の2プールがある状態。
[zaki@cloud-dev ~]$ az aks show --resource-group sample-rg --name sample-cluster --query agentPoolProfiles[].name [ "b2msng", "nodepool1" ] [zaki@cloud-dev ~]$ az aks nodepool list --cluster-name sample-cluster --resource-group sample-rg --query '[].name' [ "b2msng", "nodepool1" ]
B2msを残してB2s(nodepool1
)を削除するにはaz aks nodepool delete
を実行
[zaki@cloud-dev ~]$ az aks nodepool delete --resource-group sample-rg --cluster-name sample-cluster --name nodepool1 Operation failed with status: 'Bad Request'. Details: There has to be at least one system agent pool.
おや、、、
[zaki@cloud-dev ~]$ az aks nodepool add --help Command az aks nodepool add : Add a node pool to the managed Kubernetes cluster. Arguments [...] --mode : The mode for a node pool which defines a node pool's primary function. If set as "System", AKS prefers system pods scheduling to node pools with mode `System`. Learn more at https://aka.ms/aks/nodepool/mode. Allowed values: System, User. Default: User.
なるほど、これか!
つまり、デフォルトで作成されたnodepool1
はSystemノードプールで、追加で作成したb2msng
は(未指定なので)Userノードプール。
そして、クラスタ上には最低一つのSystemノードプールが必要なので、現在唯一Systemノードプールであるnodepool1
は削除できない、と。
[zaki@cloud-dev ~]$ az aks nodepool list --cluster-name sample-cluster --resource-group sample-rg --query '[].[name,mode]' [ [ "b2msng", "User" ], [ "nodepool1", "System" ] ]
ノードプールのモード変更
[zaki@cloud-dev ~]$ az aks nodepool update --resource-group sample-rg --cluster-name sample-cluster --name b2msng --mode System {- Finished .. "agentPoolType": "VirtualMachineScaleSets", "availabilityZones": null, "count": 1, "enableAutoScaling": null, "enableNodePublicIp": false, "id": "/subscriptions/****-****/resourcegroups/sample-rg/providers/Microsoft.ContainerService/managedClusters/sample-cluster/agentPools/b2msng", "maxCount": null, "maxPods": 110, "minCount": null, "mode": "System", "name": "b2msng", "nodeLabels": {}, "nodeTaints": null, "orchestratorVersion": "1.16.13", "osDiskSizeGb": 128, "osType": "Linux", "provisioningState": "Succeeded", "resourceGroup": "sample-rg", "scaleSetEvictionPolicy": null, "scaleSetPriority": null, "spotMaxPrice": null, "tags": null, "type": "Microsoft.ContainerService/managedClusters/agentPools", "vmSize": "Standard_B2ms", "vnetSubnetId": null }
この通り、systemノードプールに変更された。
[zaki@cloud-dev ~]$ az aks nodepool list --cluster-name sample-cluster --resource-group sample-rg --query '[].[name,mode]' [ [ "b2msng", "System" ], [ "nodepool1", "System" ] ]
ノードプール削除
[zaki@cloud-dev ~]$ az aks nodepool delete --resource-group sample-rg --cluster-name sample-cluster --name nodepool1
[zaki@cloud-dev ~]$ kc get node NAME STATUS ROLES AGE VERSION aks-b2msng-27260109-vmss000000 Ready agent 26m v1.16.13
B2sのノードプールであるnodepool1
が削除され、B2msノードのみになりました。