aau*_*and 6 kubernetes terraform azure-aks
我认为没有愚蠢的问题,所以这是一个我找不到直接答案的问题。
\n情况
\n我目前有一个在 AKS 上运行 1.15.x 的 Kubernetes 集群,通过 Terraform 进行部署和管理。AKS 最近 Azure 宣布他们将停用 AKS 上的 Kubernetes 1.15 版本,我需要将集群升级到 1.16 或更高版本。现在,据我了解情况,直接在 Azure 中升级集群不会对集群的内容、IE 节点、pod、秘密以及当前存在的其他所有内容产生任何影响,但我找不到任何正确的答案来说明会发生什么如果我通过 Terraform 升级集群。
\n潜在问题
\n那么会出现什么问题呢?在我看来,最糟糕的结果是整个集群被摧毁,然后创建一个新的集群。没有豆荚,没有秘密,什么都没有。由于那里的信息太少,我在这里询问是否有人在 Terraform 和 Kubernetes 方面拥有更多经验,可以帮助我。
\n总结一下:
\n地形版本
\nTerraform v0.12.17\n+ provider.azuread v0.7.0\n+ provider.azurerm v1.37.0\n+ provider.random v2.2.1\nRun Code Online (Sandbox Code Playgroud)\n我在做什么
\n\xc2\xa7 terraform init \n\n//running terrafrom plan with new Kubernetes version declared for AKS\n\n\xc2\xa7 terraform plan \n\n//Following changes are announced by Terraform:\n\n\n\nAn execution plan has been generated and is shown below.\nResource actions are indicated with the following symbols:\n ~ update in-place\n\nTerraform will perform the following actions:\n\n #module.mycluster.azurerm_kubernetes_cluster.default will be updated in-place...\n\n ...\n ~ kubernetes_version = "1.15.5" -> "1.16.13"\n ...\n\n\nPlan: 0 to add, 1 to change, 0 to destroy.\nRun Code Online (Sandbox Code Playgroud)\n我想要发生什么
\nTerraform 将告诉 Azure 升级现有的 AKS 服务,而不是在创建新服务之前销毁。我认为这将会发生,因为 Terraform 宣布它将“就地更新”,而不是添加新的和/或销毁现有的集群。
\n我今天发现了这个问题,我想我也应该补充一下我的经验。我做了以下更改:
kubernetes_version以下内容azurerm_kubernetes_cluster从“1.16.15”更改为“1.17.16”orchestrator_version以下内容default_node_pool从“1.16.15”更改为“1.17.16”node_count下边default_node_pool从 1 -> 2Aterraform plan显示它将就地更新。然后我执行了一个terraform apply成功完成的操作。kubectl get nodes显示创建了一个额外的节点,但池中的两个节点仍然是旧版本。在Azure Portal中进一步检查发现只升级了k8s集群版本,并没有升级节点池的版本。然后我terraform plan一次又一次地执行它表明orchestrator_version下面default_node_pool将被就地更新。然后我执行了terraform apply该操作,然后继续升级节点池的版本。它完成了整个过程,在池中创建了一个附加节点(使用新版本)并将状态设置为 ,NodeSchedulable同时将池中的现有节点设置为NodeNotSchedulable。然后该NodeNotSchedulable节点将被新的 k8s 版本的新节点替换,并最终设置为NodeSchedulable. 它对两个节点都执行了此操作。随后所有节点都进行了升级,没有出现任何明显的停机情况。
我想说这表明 Terraform 方法是非破坏性的,即使在升级过程中有时会出现疏忽(但在本例中仍然是非破坏性的): https: //github.com/terraform-providers/ terraform-provider-azurerm/问题/5541
如果您对此更改需要更高的信心,那么您可以考虑使用基于 Azure 的升级方法,将更改刷新回您的状态,并调整代码,直到计划生成不会显示任何无法容忍的内容。处理版本的两个 azurerm_kubernetes_cluster 参数可能就是您需要调整的全部内容。
| 归档时间: |
|
| 查看次数: |
8068 次 |
| 最近记录: |