0. 新しいノードプールを作成
```shell-session
$ gcloud container node-pools create worker-pool \
--cluster=migration-tutorial \
--machine-type=e2-highmem-2 \
--num-nodes=5
```
1. GKEのノードをスケジュール不可にする。
```shell-session
$ kubectl get nodes -l cloud.google.com/gke-nodepool=default-pool
NAME STATUS ROLES AGE VERSION
gke-microservices-experi-default-pool-66a015a7-9pw2 Ready <none> 14d v1.19.10-gke.1700
gke-microservices-experi-default-pool-66a015a7-r07m Ready <none> 14d v1.19.10-gke.1700
gke-microservices-experi-default-pool-66a015a7-wtfa Ready <none> 14d v1.19.10-gke.1700
gke-microservices-experi-default-pool-66a015a7-xybc Ready <none> 14d v1.19.10-gke.1700
```
```shell-session
$ for node in $(kubectl get nodes -l cloud.google.com/gke-nodepool=default-pool -o=name); do kubectl cordon "$node"; done
node/gke-microservices-experi-default-pool-66a015a7-9pw2 cordoned
node/gke-microservices-experi-default-pool-66a015a7-r07m cordoned
node/gke-microservices-experi-default-pool-66a015a7-wtfa cordoned
node/gke-microservices-experi-default-pool-66a015a7-xybc cordoned
```
2. 各ノードのPodを正常にドレインします。
```shell-session
$ for node in $(kubectl get nodes -l cloud.google.com/gke-nodepool=default-pool -o=name); do
kubectl drain --force --ignore-daemonsets --delete-emptydir-data --grace-period=10 "$node";
done
```
参考: [異なるマシンタイプへのワークロードの移行 | Kubernetes Engine | Google Cloud](https://cloud.google.com/kubernetes-engine/docs/tutorials/migrating-node-pool?hl=ja)
3. ノードプールの名前をかえるのがいやだったので、既存のノードプールを削除する
4. 同じ名前でノードプールを再作成
```shell-session
$ gcloud container node-pools create default-pool \
--cluster=microservices-experiment \
--machine-type=e2-standard-2 \
--num-nodes=3
```