Azure Kubernetes Service (AKS)でクラスターやノードの起動、停止

2021-08-22

Azure Kubernetes Service (AKS)でクラスタやノードの起動、停止、状態確認のコマンド(PowerShell、Azure CLI)について確認してみました。

スポンサーリンク

Azure Kubernetes Service (AKS)クラスター起動停止

Azure Kubernetes Service (AKS) クラスターの停止と起動を参考に確認を進めます。

AKSクラスター起動、停止

AKSのクラスター起動、停止です。MS社のサイトにも記載がありますが、クラスターの起動停止に対応しているのは仮想マシンスケールセット(Virtual Machine Scale Sets) で構成されている場合のみです。2021年9月上旬にAzure Portalでも操作できるようになりましたので操作手順を追加しました。

AKSクラスター起動停止
AKSクラスター起動(PowerShell)

//AKSクラスター起動(PowerShell)

Start-AzAksCluster -ResourceGroupName リソースグループ名 -name AKSクラスター名

AKSクラスター起動(Azure CLI)

//AKSクラスター起動(Azure CLI)

az aks start -g リソースグループ名 -n AKSクラスター名

AKSクラスター起動(Azure Portal)
AKSクラスター停止(PowerShell)

//AKSクラスター停止(PowerShell)

Stop-AzAksCluster -ResourceGroupName リソースグループ名 -name AKSクラスター名

AKSクラスター停止(Azure CLI)

//AKSクラスター停止(Azure CLI)

az aks stop -g リソースグループ名 -n AKSクラスター名

AKSクラスター停止(Azure Portal)

The command requires the extension aks-preview. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n):と表示されるケースがありますがこの場合はYを選択してインストールして進めます。

またAzure PowerShellのバージョンが低い場合はコマンドがないと表示されるケースがあります。Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force で再インストールして下さい。詳細はこちら

AKSクラスター設定状態確認

AKSのクラスター設定状態確認になります。Azure PowerShellで出力される内容とAzure CLIで出力される内容が異なります。PowerStateはAzure CLIでしか表示されなかったりします。

AKSクラスター設定状態確認

AKSクラスター設定確認(PowerShell)

//AKSクラスター設定状態確認(Azure PowerShell)

Get-AzAksCluster -ResourceGroupName リソースグループ名 -name AKSクラスター名 | fc

※fcですべての情報を表示しています。fcの詳細はこちら

AKSクラスター設定状態確認(Azure CLI)

//AKSクラスター設定状態確認(Azure CLI)

az aks show -g リソースグループ名 -n AKSクラスター名

//AKSクラスター設定状態確認(ブラウザが開きます)

az aks browse -g リソースグループ名 -n AKSクラスター名

実行結果
クラスター起動時 powerState:
 code: Running
クラスター停止時 powerState:
 code: Stopped
AKSのクラスターが停止している場合はノードが存在しない為に、kubectl get nodeコマンドを実行してもUnable to connect to the server:・・・(もしくはNo resources found)となります。

//AKSノード確認(kubectl)

[root@VM名 ~]#kubectl get node
Unable to connect to the server:・・・

AKSクラスター起動停止を行うとノード名が変わる

AKSのクラスター起動、停止を行うとノード名が変わります。kubectl get nodeコマンドで確認すると末尾がカウントアップされている事が分かります。kubectlコマンドについてはkubectlチートシートを参照ください。

AKSノード確認

【クラスター停止前】

ノード状態確認(kubectl get node)

//AKSノード確認(kubectl)

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX
-vmss000001 Ready agent XXm v1.19.11
aks-agentpool-XXXXXXX
-vmss000002 Ready agent XXm v1.19.11

【クラスター再起動後】

ノード状態確認(kubectl get node)

//AKSノード確認(kubectl)

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX
-vmss000003 Ready agent XXm v1.19.11
aks-agentpool-XXXXXXX
-vmss000004 Ready agent XXm v1.19.11

Azure Kubernetes Service (AKS)ノード起動停止

AKSのノード起動停止についてはJapan Azure IaaS Core Support Blogに記載があります。今回は仮想マシンスケールセットで構成した場合について記載しています。

AKSノード起動

AKSのノード停止(再起動含む)については、kubectlコマンドでノードを切り離してから実施します。

AKSノード停止

AKSノード切り離し作業前にkubectl drainコマンドでノード退避します。Ready,SchedulingDisabledになっている事を確認します。

//AKSノード切り離し(kubectl)

[root@VM名 ~]#kubectl drain ノード名 –ignore-daemonsets –delete-local-data –force

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX-vmss000005 Ready agent 21m v1.19.11
aks-agentpool-XXXXXXX-vmss000006 Ready,SchedulingDisabled agent 20m v1.19.11

AKSノード停止(Azure PowerShell)

//AKSノード停止(Azure PowerShell)

Stop-AzVmss -ResourceGroupName “リソースグループ名" -VMScaleSetName “仮想マシンのスケール セット名" -InstanceId “id数" -Force

※instance idは末尾の数字(vmss00000X)になります。なお9を超えるとabcdとカウントアップされます。不明な場合はAzure Portalでスケール セット インスタンスのプロパティを確認します。名前に数字の記載がありこれがinstance idになります。Get-AzVmssVM コマンドでも確認可能です。

AKSノード停止(Azure CLI)

//AKSノード停止(Azure CLI)

az vmss stop -g リソースグループ名 -n 仮想マシンのスケール セット名 –instance-ids id数 

kubectl get nodeコマンドでノード状態を確認するとNotReadyになっている事が確認出来ます。

//AKSノード確認(kubectl)

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX-vmss000005 Ready agent 31m v1.19.11
aks-agentpool-XXXXXXX-vmss000006 NotReady,SchedulingDisabled agent 30m v1.19.11

Get-AzVmssVM -ResourceGroupName “リソースグループ名" -VMScaleSetName “仮想マシンのスケール セット名" -InstanceId id数 -InstanceViewコマンドに表示されるステータスでも以下のように電源状況が確認出来ます。

Statuses[1] :
Code : PowerState/running
Level : Info
DisplayStatus : VM running

AKSノード起動

AKSのノード起動後、kubectlコマンドでノードを切り戻しを実施します。

AKSノード起動

AKSノード起動(Azure PowerShell)

//AKSノード起動(Azure PowerShell)

Start-AzVmss -ResourceGroupName “リソースグループ名" -VMScaleSetName “仮想マシンのスケール セット名" -InstanceId “id数

AKSノード停止(Azure CLI)

//AKSノード起動(Azure CLI)

az vmss start -g リソースグループ名 -n 仮想マシンのスケール セット名 –instance-ids id数 

AKSノード起動後に確認するとReadyになっている事は確認出来ました。

//AKSノード確認(kubectl)

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX-vmss000005 Ready agent 50m v1.19.11
aks-agentpool-XXXXXXX-vmss000006 Ready,SchedulingDisabled agent 49m v1.19.11

AKSノード起動後にkubectl uncordon(Cordonの状態を解除)コマンドを実行し復帰させます。

※Cordonは指定したNodeにスケジュールさせないようにするための処理

//AKSノード復帰(kubectl)

[root@VM名 ~]#kubectl uncordon ノード名
node/ノード名 uncordoned

[root@VM名 ~]#kubectl get node
NAME STATUS ROLES AGE VERSION
aks-agentpool-XXXXXXX-vmss000005 Ready agent 51m v1.19.11
aks-agentpool-XXXXXXX-vmss000006 Ready agent 50m v1.19.11