使用terraform更新OKE k8s集群节点池中每个工作节点的内存无效



我在oracle云中有一个OKE k8s集群。它有一个只有一个工作节点的节点池pool2。这个游泳池是使用地形创建的。

现在,我正在尝试更新节点池中每个工作节点的内存和cpu。这是我用来创建节点池的地形脚本:

resource "oci_containerengine_node_pool" "oke-node-pool" {
# Required variables
compartment_id = var.compartment_ocid
cluster_id = var.oke_cluster_ocid
kubernetes_version = var.node_pool_kubernetes_version
name = var.node_pool_name
node_shape = var.node_pool_node_shape
# subnet_ids = var.node_pool_subnet_ids
# Specify the source to use to launch nodes in the node pool. Currently, image is the only supported source.
node_source_details {
image_id = var.node_image_ocid[var.region]
source_type = "IMAGE"
}
# The configuration of nodes in the node pool.
node_config_details {
placement_configs {
availability_domain = var.node_pool_availability_domain
subnet_id = var.node_pool_subnet_id
}
size = var.node_pool_size
}

# The shape configuration of the nodes.
node_shape_config {
memory_in_gbs = var.node_shape_config_memory
ocpus = var.node_shape_config_ocpus
}
}

我更新了terraform.tfvars文件中var.node_shape_config_memoryvar.node_shape_config_ocpus(修改节点的形状配置(的值,并执行了terraform apply

应用操作工作时没有任何错误,它显示:Terraform将执行以下操作:

# oci_containerengine_node_pool.oke-node-pool will be updated in-place
~ resource "oci_containerengine_node_pool" "oke-node-pool" {
id                  = "ocid1.nodepool.oc1.***.aaaaaaaakc67a"
name                = "pool2"
# (11 unchanged attributes hidden)

~ node_shape_config {
~ memory_in_gbs = 8 -> 16
~ ocpus         = 1 -> 2
}
# (4 unchanged blocks hidden)
}
Plan: 0 to add, 1 to change, 0 to destroy.

该输出中的部分表示节点配置已更新,这是真的,我可以在OCI控制台的节点池详细信息中看到。:

~ node_shape_config {
~ memory_in_gbs = 8 -> 16
~ ocpus         = 1 -> 2
}

但问题是,当我检查单个节点配置时(通过OCI控制台的实例页面(,很明显现有节点具有旧的ocpumemory配置。它们不会更新

是否存在节点池更新仅反映在更新后创建的节点上的情况?它们不适用于现有节点?

这个问题有什么解决办法吗?

Oracle文档说:

您可以使用Container Engine for Kubernetes来修改属性现有Kubernetes集群中的节点池和工作节点。

您可以更改:

  • 在新的工作节点上运行的Kubernetes版本
  • 用于新工作节点的映像
  • 用于新工作节点的形状
  • 用于新工作节点的启动卷大小

还要注意以下几点:

您对工作节点属性所做的任何更改都将仅适用于新的工作节点。您不能更改现有工作人员的属性节点

这意味着,更改仅应用于节点池中的新工作节点。

在某些情况下,当我们想同时更新节点池中所有工作节点的属性时(例如,将所有工作节点升级到新版本的Oracle Linux(,我们应该创建一个具有所需属性的工作节点的新节点池,并使用kubectl drain命令和pod中断预算将工作从原始节点池转移到新节点池。

最新更新