Невозможно удалить группу экземпляров, которая используется серверной службой
Я использую terraform для управления настройкой кластера GKE. Я хочу обновить размер экземпляра рабочих узлов, чтобы заново создать google_container_node_popl, т. Е. Удалить существующие группы экземпляров и заново создать новые группы экземпляров для пула узлов. Но эти шаги не выполняются из-за следующей ошибки, поскольку старые группы экземпляров, которые связаны с бэкэндом GCP LB, не отсоединяются терраформой при повторном создании пула узлов.
google_container_node_pool.new_container_cluster_node_pool.0: Error waiting for deleting GKE NodePool:
(1) Google Compute Engine: The instance_template resource 'projects/XXX-XXX-XXXX/global/instanceTemplates/gke-XXX-XXX-us-west-XXXXXX-53369325' is already being used by 'projects/XXXX-XXXX-XXXXX/zones/us-west1-b/instanceGroupManagers/gke-XXXXX-XXXX-us-west-XXXXX-XXXXX-us-west-53369325-grp'
Наконец, мы должны вручную удалить записи групп экземпляров из бэкэнда GCP LB, спланировать и применить снова, чтобы заново создать пул узлов с новым типом экземпляра.
resource "google_compute_backend_service" "default" {
project = "${var.project}"
count = "${length(var.backend_params)}"
name = "${var.name}-backend-${count.index}"
port_name = "${element(split(",", element(var.backend_params, count.index)), 1)}"
protocol = "${var.backend_protocol}"
timeout_sec = "${element(split(",", element(var.backend_params, count.index)), 3)}"
backend = ["${var.backends["${count.index}"]}"]
health_checks = ["${element(google_compute_health_check.default-tcp.*.self_link, count.index)}"]
security_policy = "${var.security_policy}"
enable_cdn = "${var.cdn}"
}
Input variable ( getting the instance groups URL from GKE module)
backends = {
"0" = [
# Have to use "element" because of nested lists
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[0],0), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
},
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[0],1), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
},
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[0],2), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
},
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[1],0), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
},
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[1],1), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
},
{
group = "${replace(element(module.gke.node_pool_instance_group_urls[1],2), "Manager", "")}",
balancing_mode = "${var.lb_balancing_mode}",
max_rate = "${var.lb_max_rate}",
max_utilization = "${var.lb_max_utilization}"
}
],
Сначала terraform отсоединит существующие группы экземпляров от настроек бэкэнда GCP LB при повторном создании пула узлов GKE.