Сценарий:
У меня есть ситуация, когда у меня нет свободы использовать любой доступный на рынке инструмент обновления Kubernetes, например KOps или KubeSpray.Итак, я вынужден использовать Terraform для предоставления экземпляров, а kubernetes устанавливается как часть начальной загрузки с использованием провайдеров.Теперь бросается в глаза: мой кластер K8s работает на версии 1.11.6, и я хочу обновить его до 1.12.3.
Что я сделал:
В скриптах terraform я удвоил количество узлов и обновил версию K8s.Затем сделал развертывание Terraform.Мне удалось обновить новые узлы (узлы образовались после удвоения количества).Пост, который я прекратил экземпляры, работающие на старой версии K8s.Теперь у меня есть только новые узлы с новой версией K8, работающей на них.Затем запустил terraform refresh
, чтобы синхронизировать файл состояния с реальными ресурсами, которые существуют удаленно в AWS.
Проблема
Чтобы убедиться, что файл состояния и удаленный сервер синхронизированы, я запустил terraform plan
, который показывает некоторые ресурсы, которые необходимо создать.По сути, план показывает, что он собирается снова создать новые узлы.Невозможно понять, почему так !!
Пожалуйста, кто-нибудь может уточнить, что здесь происходит не так?Заранее спасибо.
Обновление:
Моя карта версий K8s
type = "map"
default = {
kubernetes = "1.11.5"
etcd = "3.3.1"
dockerCE = "18.06.1.ce-3.el7"
cfssl = "1.2"
kube-dns = "1.14.10"
core-dns = "1.2.0"
helm = "2.9.1"
calico-node = "3.0.6"
calico-cni = "2.0.5"
calico-kube-controller = "2.0.4"
nginx-ingress-controller = "0.19.0"
}
Количество моих узлов (для мастера ниже, но одинаково для всех узлов, таких как etcd, ca, рабочий и т. д.)
variable "MASTER_COUNT" {
type = "map"
default = {
#bastion
dev = "1"
prod = "3"
}
В плане Terraform все еще показаны ресурсы, которые необходимо создать.В основном он пытается воссоздать узлы с более старой версией K8, чего не должно быть, поскольку я уже выполнил terraform refresh
, который должен синхронизировать мой локальный и удаленный.
Terraform will perform the following actions:
+ module.master.aws_instance.ec2-master[0]
id: <computed>
ami: "ami-######"
arn: <computed>
associate_public_ip_address: <computed>
availability_zone: <computed>
cpu_core_count: <computed>
cpu_threads_per_core: <computed>
ebs_block_device.#: "2"
+ module.master.aws_instance.ec2-master[1]
id: <computed>
ami: "ami-#######"
arn: <computed>
associate_public_ip_address: <computed>
availability_zone: <computed>
cpu_core_count: <computed>
cpu_threads_per_core: <computed>
ebs_block_device.#: "2"
+ module.master.aws_instance.ec2-master[2]
id: <computed>
ami: "ami-######"
arn: <computed>
associate_public_ip_address: <computed>
availability_zone: <computed>
cpu_core_count: <computed>
cpu_threads_per_core: <computed>
ebs_block_device.#: "2"
- module.master.aws_instance.ec2-master[3]
- module.master.aws_instance.ec2-master[4]
- module.master.aws_instance.ec2-master[5]
# some other re-creations like Auto scaling group, Load balancer changes etc
Plan: 10 to add, 1 to change, 16 to destroy.