Google Cloudでdoes not have enough resources available to fulfill the requestエラーが出る


```
$ gcloud container clusters create ${CLUSTER_NAME} --addons HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy --release-channel=regular --image-type cos_containerd --enable-autorepair --machine-type=n1-standard-4 --enable-autoscaling --min-nodes 3 --max-nodes 5 --num-nodes 3
```
# はじめに

以下の書籍をやっていてGKEの環境を構築した際に発生したエラーについてです

https://www.amazon.co.jp/Kubernetes-CD%E3%83%91%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3%E3%81%AE%E5%AE%9F%E8%A3%85-impress-top-gear/dp/4295012750/ref=sr_1_3_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3HP68WWEJU0TC&keywords=kubernetes&qid=1676707970&sprefix=kubernetes%2Caps%2C186&sr=8-3-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzU0FFWTlNUzU0VlFGJmVuY3J5cHRlZElkPUEwNjcyMjYxMjlKWlFJN1pNU1NNRiZlbmNyeXB0ZWRBZElkPUEyV1g3SjZFM1pQV1k4JndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==

# 問題

Google Cloud CLIからGKEのクラスター作成のために以下のコマンドを叩きました

```
gcloud container clusters create ${CLUSTER_NAME} --addons HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy --release-channel=regular --image-type cos_containerd --enable-autorepair --machine-type=n1-standard-4 --enable-autoscaling --min-nodes 3 --max-nodes 5 --num-nodes 3
```

すると以下のエラーが発生しました

```
Creating cluster cluster01 in asia-northeast1-a... Cluster is being deployed...
done.                                                                          
ERROR: (gcloud.container.clusters.create) Operation [<Operation
 clusterConditions: [<StatusCondition
 canonicalCode: CanonicalCodeValueValuesEnum(UNAVAILABLE, 15)
 code: CodeValueValuesEnum(GCE_STOCKOUT, 1)
 message: "Instance 'gke-cluster01-default-pool-d1c5000a-0jf7' creation failed: The zone 'projects/cloudnative-cicd-218/zones/asia-northeast1-a' does not have enough resources available to fulfill the request.  Try a different zone, or try again later.">, <StatusCondition
 canonicalCode: CanonicalCodeValueValuesEnum(UNAVAILABLE, 15)
 code: CodeValueValuesEnum(GCE_STOCKOUT, 1)
 message: "Instance 'gke-cluster01-default-pool-d1c5000a-5lt7' creation failed: The zone 'projects/cloudnative-cicd-218/zones/asia-northeast1-a' does not have enough resources available to fulfill the request.  Try a different zone, or try again later.">, <StatusCondition
 canonicalCode: CanonicalCodeValueValuesEnum(UNAVAILABLE, 15)
 code: CodeValueValuesEnum(GCE_STOCKOUT, 1)
 message: "Instance 'gke-cluster01-default-pool-d1c5000a-5v3v' creation failed: The zone 'projects/cloudnative-cicd-218/zones/asia-northeast1-a' does not have enough resources available to fulfill the request.  Try a different zone, or try again later.">, <StatusCondition
 canonicalCode: CanonicalCodeValueValuesEnum(UNAVAILABLE, 15)
 code: CodeValueValuesEnum(GCE_STOCKOUT, 1)
```

# 解決方法

公式ドキュメントに原因がありました

https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-vm-creation?hl=ja

>リージョン内の別のゾーンか、または別のリージョンにリソースを作成します。
この状況は一時的なものであり、変動する需要に基づいて頻繁に変更される可能性があるため、しばらくしてからリクエストを再試行してください。

`asia-northeast1-a`はリソース確保するのが難しいようです(みんな使ってるみたい)

なので`asia-northeast1-b`に作成したところうまく行きました

# おまけ

```
$ gcloud container cluster get-credentials ${CLUSTER_NAME}
```

を実行すると以下のログが出ます

```
CRITICAL: ACTION REQUIRED: gke-gcloud-auth-plugin, which is needed for continued use of kubectl, was not found or is not executable. Install gke-gcloud-auth-plugin for use with kubectl by following https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke
```

GKEの認証方法が変わったので以下で設定したところ`kubectl get nodes`が実行できました

https://qiita.com/kiyc/items/beb55d223f27109ea9ab

# おわりに

ひとまずスタート地点に立ちました。古めの書籍なので不安です

# 参考

https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-vm-creation?hl=ja

https://qiita.com/kiyc/items/beb55d223f27109ea9ab