Среды:
ОС: Ubuntu 18.04.5 LTS
Kubernetes: v1.16.15
инструмент развертывания : kubeadm v1.16.15
Я инициализирую одноузловой K8s на своей рабочей станции со следующими конфигурациями:
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.15
imageRepository: k8s.gcr.io
clusterName: kubernetes
controlPlaneEndpoint: HOSTNAME-01
networking:
dnsDomain: cluster.local
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
apiServer:
certSANs:
- HOSTNAME-01
extraArgs:
advertise-address: 0.0.0.0
authorization-mode: Node,RBAC
timeoutForControlPlane: 4m0s
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: InitConfiguration
nodeRegistration:
name: HOSTNAME-01
Я хочу изменить имя хоста с HOSTNAME-01 на HOSTNAME-02 и примените настройку к моей рабочей станции и кластеру K8s.
Есть ли способ сделать это лучше, чем перезагружать кластер?
Добро пожаловать в сообщество!
Ответ короткий - сброс, а затем повторная инициализация кластера - самый быстрый и простой способ добиться этого. Я не смог добиться этого с помощью других подходов. Изменение только имени хоста приводит к тому, что кластер становится не готов.
Точно так же, если изменено имя хоста рабочего узла, требуется перезагрузка kubeadm
. Об этом говорится в хорошем посте на StackOverflow или есть пример в видео, как использовать --hostname-override
для рабочих узлов.
Потенциально этого можно добиться, остановив кластер и вручную отредактировав etcd
, перегенерацией сертификатов и другими изменениями. Также нет руководства по этому вопросу и нет гарантии, что это сработает.
В качестве альтернативы существуют решения для резервного копирования/миграции, например, velero.io, которые можно использовать для миграции кластера
P.S. Я бы также предложил обновить версию кластера хотя бы до 1.19. Вот как это можно сделать.