如何使用 Terraform 正确更改 Google Kubernetes Engine 节点池?
How to Properly Change a Google Kubernetes Engine Node Pool Using Terraform?
-
google-cloud-platform
-
google-kubernetes-engine
-
terraform
-
terraform-provider-gcp
-
infrastructure-as-code
我已经在 Google 云平台 (GCP) 项目 ($GCP_PROJECT_NAME
) 中成功创建了一个 Google Kubernetes Engine (GKE) 集群 ($GKE_CLUSTER_NAME
):
gcloud container clusters list \
--format="value(name)" \
--project=$GCP_PROJECT_NAME
#=>
. . .
$GKE_CLUSTER_NAME
. . .
使用节点池$GKE_NODE_POOL
:
gcloud container node-pools list \
--cluster=$GKE_CLUSTER_NAME \
--format="value(name)" \
--zone=$GKE_CLUSTER_ZONE
#=>
$GKE_NODE_POOL
我正在检查这个配置。通过以下 container_node_pool.tf
:
使用 Terraform 进入 SCM
resource "google_container_node_pool" ". . ." {
autoscaling {
max_node_count = "3"
min_node_count = "3"
}
. . .
initial_node_count = "3"
. . .
}
并且我确认上面的 Terraform 配置匹配 $GKE_NODE_POOL
运行 目前在 $GKE_CLUSTER_NAME
和 $GCP_PROJECT_NAME
:
中
terraform plan
#=>
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
如果我想更改 $GKE_NODE_POOL
:
resource "google_container_node_pool" ". . ." {
autoscaling {
max_node_count = "4"
min_node_count = "4"
}
. . .
initial_node_count = "4"
. . .
}
并将 $GKE_NODE_POOL
中的 node
的数量从 3 缩放到 4,我在尝试 plan
时得到以下输出:
terraform plan
#=>
. . .
Plan: 1 to add, 0 to change, 1 to destroy.
. . .
如何在不破坏资源然后重新创建资源的情况下更新 $GKE_NODE_POOL
?
更改任何 google_container_node_pool
的 initial_node_count
参数将 触发破坏和重建。只是不要修改 initial_node_count
,您应该能够修改 $GKE_NODE_POOL
参数,例如 min_node_count
和 max_node_count
.
plan
命令的输出 应该 明确显示哪个参数导致破坏和重建行为 [红色]:
terraform plan
. . .
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
Terraform will perform the following actions:
# google_container_node_pool.$GKE_NODE_POOL must be replaced
-/+ resource "google_container_node_pool" ". . ." {
. . .
~ initial_node_count = 3 -> 4 # forces replacement
. . .
Plan: 1 to add, 0 to change, 1 to destroy.
. . .
initial_node_count
参数似乎是 只有 参数 google_container_node_pool
导致此行为; initial_node_count
参数似乎也是 可选 .
您可以在官方文档中阅读此警告 here。
google-cloud-platform
google-kubernetes-engine
terraform
terraform-provider-gcp
infrastructure-as-code
我已经在 Google 云平台 (GCP) 项目 ($GCP_PROJECT_NAME
) 中成功创建了一个 Google Kubernetes Engine (GKE) 集群 ($GKE_CLUSTER_NAME
):
gcloud container clusters list \
--format="value(name)" \
--project=$GCP_PROJECT_NAME
#=>
. . .
$GKE_CLUSTER_NAME
. . .
使用节点池$GKE_NODE_POOL
:
gcloud container node-pools list \
--cluster=$GKE_CLUSTER_NAME \
--format="value(name)" \
--zone=$GKE_CLUSTER_ZONE
#=>
$GKE_NODE_POOL
我正在检查这个配置。通过以下 container_node_pool.tf
:
resource "google_container_node_pool" ". . ." {
autoscaling {
max_node_count = "3"
min_node_count = "3"
}
. . .
initial_node_count = "3"
. . .
}
并且我确认上面的 Terraform 配置匹配 $GKE_NODE_POOL
运行 目前在 $GKE_CLUSTER_NAME
和 $GCP_PROJECT_NAME
:
terraform plan
#=>
No changes. Your infrastructure matches the configuration.
Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are needed.
如果我想更改 $GKE_NODE_POOL
:
resource "google_container_node_pool" ". . ." {
autoscaling {
max_node_count = "4"
min_node_count = "4"
}
. . .
initial_node_count = "4"
. . .
}
并将 $GKE_NODE_POOL
中的 node
的数量从 3 缩放到 4,我在尝试 plan
时得到以下输出:
terraform plan
#=>
. . .
Plan: 1 to add, 0 to change, 1 to destroy.
. . .
如何在不破坏资源然后重新创建资源的情况下更新 $GKE_NODE_POOL
?
更改任何 google_container_node_pool
的 initial_node_count
参数将 触发破坏和重建。只是不要修改 initial_node_count
,您应该能够修改 $GKE_NODE_POOL
参数,例如 min_node_count
和 max_node_count
.
plan
命令的输出 应该 明确显示哪个参数导致破坏和重建行为 [红色]:
terraform plan
. . .
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
Terraform will perform the following actions:
# google_container_node_pool.$GKE_NODE_POOL must be replaced
-/+ resource "google_container_node_pool" ". . ." {
. . .
~ initial_node_count = 3 -> 4 # forces replacement
. . .
Plan: 1 to add, 0 to change, 1 to destroy.
. . .
initial_node_count
参数似乎是 只有 参数 google_container_node_pool
导致此行为; initial_node_count
参数似乎也是 可选 .
您可以在官方文档中阅读此警告 here。