Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform应用,如何增加计数并将kubernetes工作节点添加到现有工作节点?_Kubernetes_Terraform_Kubeadm_Bare Metal Server_Metallb - Fatal编程技术网

Terraform应用,如何增加计数并将kubernetes工作节点添加到现有工作节点?

Terraform应用,如何增加计数并将kubernetes工作节点添加到现有工作节点?,kubernetes,terraform,kubeadm,bare-metal-server,metallb,Kubernetes,Terraform,Kubeadm,Bare Metal Server,Metallb,我使用以下地形在裸机上部署了k8s集群 现在我有三个节点: ewr1控制器,ewr1-worker-0,ewr1-worker-1 接下来,我想运行terraform应用并增加工作节点*ewr1-worker-3,ewr1-worker-4…*同时保留现有的控制器和工作节点。 我尝试从3开始递增count.index,但是它仍然覆盖现有的worker resource "packet_device" "k8s_workers" { project_id = "${packet_p

我使用以下地形在裸机上部署了k8s集群

现在我有三个节点:

ewr1控制器,ewr1-worker-0,ewr1-worker-1

接下来,我想运行terraform应用并增加工作节点*ewr1-worker-3,ewr1-worker-4…*同时保留现有的控制器和工作节点。 我尝试从3开始递增count.index,但是它仍然覆盖现有的worker

resource "packet_device" "k8s_workers" {
  project_id       = "${packet_project.kubenet.id}"
  facilities       = "${var.facilities}"
  count            = "${var.worker_count}"
  plan             = "${var.worker_plan}"
  operating_system = "ubuntu_16_04"
  hostname         = "${format("%s-%s-%d", "${var.facilities[0]}", "worker", count.index+3)}"
  billing_cycle    = "hourly"
  tags             = ["kubernetes", "k8s", "worker"]
} 
我还没试过,但如果我试过的话

terraform state rm 'packet_device.k8s_workers'
我假设这些工作节点不会由kubernetes主节点管理。我不想在开始时创建所有节点,因为我要添加的工作节点将具有不同的specsinstance类型

我使用的整个脚本都可以在这里找到。 如果有人能告诉我我在这里缺少什么,以及如何做到这一点,我将不胜感激


谢谢

节点大小调整最好使用自动缩放器。使用Terraform来扩展nodepool可能不是最佳方法,因为该工具旨在声明系统的状态,而不是动态更改它。最好的方法是使用云自动缩放器。 在裸机中,您可以实现CloudProvider接口,如云所提供的接口,如AWS、GCP、Azure所述

在实现之后,您需要确定您的K8s实现是否可以,如果是这样,请找到允许自动缩放的nodepool autoscaler资源

总而言之,Terraform并不打算用作自动缩放器,因为它的本质是一种描述基础设施的声明性语言


K8s中的节点旨在解决此类需求。

节点大小调整最好使用自动缩放器。使用Terraform来扩展nodepool可能不是最佳方法,因为该工具旨在声明系统的状态,而不是动态更改它。最好的方法是使用云自动缩放器。 在裸机中,您可以实现CloudProvider接口,如云所提供的接口,如AWS、GCP、Azure所述

在实现之后,您需要确定您的K8s实现是否可以,如果是这样,请找到允许自动缩放的nodepool autoscaler资源

总而言之,Terraform并不打算用作自动缩放器,因为它的本质是一种描述基础设施的声明性语言


K8s中的模块旨在解决此类需求。

我通过修改和删除terraform中的模块和资源来解决此问题。状态:手动修改并使用

省去了我想保留的部分 是的

修改terraform.state中的部分,在添加新服务器时更改

递增计数器以添加新资源,请参阅


我使用裸机云提供商部署k8s,它不支持k8s HA或VA自动呼叫。这可能不是其他人指出的最佳解决方案,但如果这不是你需要经常做的事情,terraform可以做这项工作,尽管困难重重

我通过修改和删除terraform中的模块和资源解决了这个问题。状态:手动修改并使用

省去了我想保留的部分 是的

修改terraform.state中的部分,在添加新服务器时更改

递增计数器以添加新资源,请参阅


我使用裸机云提供商部署k8s,它不支持k8s HA或VA自动呼叫。这可能不是其他人指出的最佳解决方案,但如果这不是你需要经常做的事情,terraform可以做这项工作,尽管困难重重

您需要一个部署策略,并且必须由您的提供商实施,例如AWS的自动缩放组,您是否可以尝试禁止删除此处提到的资源:通过将此添加到您的文件:lifecycle{prevent_destroy=true}}@acid_fuji我尝试过,但对我的情况不适用,问题不仅在于保留工作节点,还在于将其添加到现有k8s群集。您需要一个部署策略,并且必须由您的提供商实施,例如AWS的自动扩展组,您是否可以尝试禁止删除此处提到的资源:通过将此添加到您的文件:lifecycle{prevent_destroy=true}@acid_fuji我试过了,但我的情况不是这样,问题不仅仅是保留工作节点,而是将它们添加到现有的k8s集群中。本例中的云提供商不支持自动调用,我一直在其他云提供商上这样做。在这里,我想通过修改terrafrom脚本来解决这个问题。本例中的云提供商不支持autos caller,我已经在其他云提供商上这样做了。在这里,我一直在寻找通往 通过修改terrafrom脚本来解决此问题。