Kubernetes. Переименование кластера

Thank you for reading this post, don't forget to subscribe!

Воз­ник­ла сле­ду­ю­щая про­бле­ма: был уста­нов­лен кла­стер kubernetes всё точ­ка, пред­ло­же­ние закончено )))))
При уста­нов­ке кла­сте­ра было зада­но имя кла­сте­ра cluster.local

Оно сов­па­да­ет с име­нем домен кон­трол­ле­ра в AD поэто­му если сер­вис внут­ри кубе­ра щимит­ся на любой сер­вис в
*. cluster.local то он резолвит­ся на внут­рен­них DNS и соот­вет­ствен­но не может досту­чать­ся до внеш­не­го сервиса
*. cluster.local

Поэто­му 1ое и основ­ное пра­ви­ло не при­сва­и­вать име­на кла­сте­рам на осно­ве доме­на AD или дру­гих имён вне это­го кластера.

СЛЕДУЮЩИЕ ДЕЙСТВИЯ ВЫПОЛНЯЕМ НА КАЖДОМ МАСТЕРЕ:

Смот­рим теку­щие имена:

kubectl config get-contexts

Пра­вим
kubectl config set-context admin-cluster.local --user='admin-new-name.cluster'

kubectl config rename-context admin-cluster.local admin-new-name.cluster

kubectl config set-context admin-new-name.cluster --cluster='new-name.cluster'

Про­ве­ря­ем:

kubectl config get-contexts

Теперь пра­вим конфиги

sed -i 's|admin-cluster.local|admin-new-name.cluster|g' /etc/kubernetes/admin.conf

for i in `grep -rli cluster.local /etc/kubernetes/`; do sed -i 's|cluster.local|new-name.cluster|g' $i; done

sed -i 's|admin-cluster.local|admin-new-name.cluster|g' /root/.kube/config

sed -i 's|cluster.local|new-name.cluster|g' /root/.kube/config

 

 

Напо­ми­наю что эти дей­ствия дела­ем на каж­дой тачке.

 

 

Теперь пра­вим configmap что­бы кла­стер исполь­зо­вал новое домен­ное имя:

kubectl edit configmaps -n kube-system nodelocaldns

Теперь тут нахо­дим ста­рое имя cluster.local и пра­вим на новое new-name.cluster в 2х местах:

Тоже самое дела­ем для кон­фиг­ма­па coredns

 

Пере­за­пус­ка­ем coredns
kubectl delete pod -n kube-system coredns-5847bcdbbb-hqvq6 coredns-5847bcdbbb-x8pdt

И nodelocaldns
kubectl delete pod -n kube-system nodelocaldns-6xtxd nodelocaldns-7zmvw nodelocaldns-8xsvc nodelocaldns-jgcvh nodelocaldns-p9m7x nodelocaldns-w89vb

После это­го для надёж­но­сти мож­но и ребут­нуть масте­ра по одному

Далее пере­хо­дим к вор­ке­рам, на них выполняем:
for i in `grep -rli cluster.local /etc/kubernetes/`; do sed -i 's|cluster.local|new-name.cluster|g' $i; done

И мож­но ребутнуться.

Далее про­ве­ря­ем:

kubectl config view

 

Ста­вим про­ве­роч­ный под:
kubectl apply -f https://k8s.io/examples/admin/dns/dnsutils.yaml

Под­клю­ча­ем­ся к нему:
kubectl exec -i -t dnsutils sh

Ну и чекаем:

Про­ве­ря­ем как отве­ча­ет любой сер­вис с новым доменом:

Всё ок

Смот­рим как отве­ча­ет тот же сер­вис со ста­рым доменом:

Как и пред­по­ла­га­лось ничего.