在不更换整个集群的情况下更新数字海洋 kubernetes 集群的节点大小
Update the node size of a digital ocean kubernetes cluster without replacing the whole cluster
我通过 terraform 在数字海洋中成功维护了一个 kubernetes 集群。核心集群配置如下:
resource "digitalocean_kubernetes_cluster" "cluster" {
name = var.name
region = var.region
version = var.k8s_version
vpc_uuid = digitalocean_vpc.network.id
node_pool {
name = "workers"
size = var.k8s_worker_size
node_count = var.k8s_worker_count
}
}
问题是,我现在需要增加节点大小(存储在变量 k8s_worker_size
中)。
如果我只是将变量更改为新字符串,terraform 计划会导致完全替换 kubernetes 集群:
digitalocean_kubernetes_cluster.cluster must be replaced
这在我们的生产环境中是不可行的。
在数字海洋中执行此操作的正确过程是:
- 创建一个具有所需大小的新节点池
- 使用
kubectl drain
从'old'节点中删除我们的pods
- 移除之前的节点池。
当然,通过在数字海洋控制台中手动执行此操作,terraform 状态完全不同步,因此无法使用。
有没有办法通过 Terraform 执行该操作?
作为替代选项,是否可以“手动”更新 Terraform 状态,以便在我手动执行迁移后将其与真实集群状态同步?
Is there a way to perform that operation through terraform?
可能有一些边缘情况可以解决这个问题。由于我不熟悉 DigitalOcean 中的 kubernetes,我无法分享具体的解决方案。
As an alternative options, is it possible to "manually" update the terraform state in order to sync it with the real cluster state after I perform the migration manually?
是的!按照您的建议手动操作,然后使用
删除不同步的集群
terraform state rm digitalocean_kubernetes_cluster.cluster
来自州。如果你的集群在模块等请访问对应的documentation for state rm并更新地址,然后使用
terraform import digitalocean_kubernetes_cluster.cluster <id of your cluster>
重新导入集群。详情请参考documentation for importing the cluster。文档提到了一些关于标记默认节点池的内容。
我通过 terraform 在数字海洋中成功维护了一个 kubernetes 集群。核心集群配置如下:
resource "digitalocean_kubernetes_cluster" "cluster" {
name = var.name
region = var.region
version = var.k8s_version
vpc_uuid = digitalocean_vpc.network.id
node_pool {
name = "workers"
size = var.k8s_worker_size
node_count = var.k8s_worker_count
}
}
问题是,我现在需要增加节点大小(存储在变量 k8s_worker_size
中)。
如果我只是将变量更改为新字符串,terraform 计划会导致完全替换 kubernetes 集群:
digitalocean_kubernetes_cluster.cluster must be replaced
这在我们的生产环境中是不可行的。
在数字海洋中执行此操作的正确过程是:
- 创建一个具有所需大小的新节点池
- 使用
kubectl drain
从'old'节点中删除我们的pods - 移除之前的节点池。
当然,通过在数字海洋控制台中手动执行此操作,terraform 状态完全不同步,因此无法使用。
有没有办法通过 Terraform 执行该操作?
作为替代选项,是否可以“手动”更新 Terraform 状态,以便在我手动执行迁移后将其与真实集群状态同步?
Is there a way to perform that operation through terraform?
可能有一些边缘情况可以解决这个问题。由于我不熟悉 DigitalOcean 中的 kubernetes,我无法分享具体的解决方案。
As an alternative options, is it possible to "manually" update the terraform state in order to sync it with the real cluster state after I perform the migration manually?
是的!按照您的建议手动操作,然后使用
删除不同步的集群terraform state rm digitalocean_kubernetes_cluster.cluster
来自州。如果你的集群在模块等请访问对应的documentation for state rm并更新地址,然后使用
terraform import digitalocean_kubernetes_cluster.cluster <id of your cluster>
重新导入集群。详情请参考documentation for importing the cluster。文档提到了一些关于标记默认节点池的内容。