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ノードのみになりました。