Kubernetes Node節點主機名 修改


Kubernetes Node節點主機名 修改

來自專輯
Kubernetes知識圈

背景

Kubernetes 集群環境中,有時候需要修改 Node 節點主機名,這時我們應該如何操作?

有些同學,在更改了 kubelet.conf 配置中 hostname-override 參數,也更改了 kube-proxy-config.yml 配置中 hostnameOverride 參數,刪除 Node 節點並且重啟 kubelet 和 kube-proxy 服務,但主機名並沒有修改,這是為什么?下文會給出解釋。

環境是使用 二進制搭建的 kubernetes v1.18.2 版本

准備工作

大家要知道一點,Node節點主機名更改,需要先刪除Node節點,在刪除節點前,我們需要把該節點上的Pod應用服務驅逐到其它節點上。

注意,如果集群中只有一個Node節點,不能使用驅逐命令,因為使用驅逐命令后,所有Pod會處於 Pending 狀態。

# 通過以下命令驅逐節點上pod應用$ kubectl drain service2 --delete-local-data --ignore-daemonsets
# 查看node節點,service2 上應用服務驅逐完后會標記為不可調度$ kubectl get node
NAME STATUS ROLES AGE VERSIONservice2 Ready,SchedulingDisabled <none> 24d v1.18.2service3 Ready <none> 24d v1.18.2
# 刪除 service2 節點$ kubectl delete node service2

修改 Node節點主機名

修改 kubelet 和 kube-proxy 服務配置文件

登陸 service2 機器,修改 kubelet 和 kube-proxy 服務配置文件,具體按如下修改:

本次演示,把主機名從 service2 修改為 service2-test

# 停止 kubelet 和 kube-proxy 服務$ systemctl stop kubelet$ systemctl stop kube-proxy
# 修改 kubelet.conf 配置文件中 hostname-override 參數$ vim /opt/kubernetes/cfg/kubelet.conf
# 修改完后,查看$ grep hostname-override /opt/kubernetes/cfg/kubelet.conf
--hostname-override=service2-test \
# 修改 kube-proxy.kubeconfig 配置文件中 hostnameOverride 參數$ vim /opt/kubernetes/cfg/kube-proxy-config.yml
# 修改完后,查看$ grep hostnameOverride /opt/kubernetes/cfg/kube-proxy-config.yml
hostnameOverride: service2-test # 注冊到k8s的節點名稱唯一

刪除 kubelet 服務生成的認證文件和客戶端證書

這里回答背景提到的問題,如果不刪除 kubelet 服務生成的認證文件客戶端證書,那么修改的節點主機名是不會生效。

# 刪除 kubelet 服務生成的認證文件和客戶端證書$ rm -f /opt/kubernetes/cfg/kubelet.kubeconfig$ rm -f /opt/kubernetes/ssl/kubelet*
# 重新啟動 kubelet 和 kube-proxy 服務$ systemctl start kubelet$ systemctl start kube-proxy

驗證

# 登陸到 k8s-master 機器上查看 csr,如何沒有自動授權 Node加入,需要執行下面命令$ kubectl certificate approve csr-xhjk5
NAME AGE SIGNERNAME REQUESTOR CONDITIONcsr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending
# 執行上面命令成功后,會看到下面結果$ kubectl get csr
NAME AGE SIGNERNAME REQUESTOR CONDITIONcsr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued
# 查看 node 節點,成功加入node節點,並且主機名也修改成功$ kubectl get node
NAME STATUS ROLES AGE VERSIONservice2-test Ready <none> 31m v1.18.2service3 Ready <none> 24d v1.18.2

總結

修改 Node節點主機名順序如下:

  • 1、使用 kubectl drain 命令驅逐節點上Pod
  • 2、使用 kubectl delete node 命令刪除需要改名的節點
  • 3、停止 kubelet 和 kube-proxy 服務
  • 4、修改 kubelet.conf 和 kube-proxy-config.yml 配置
  • 5、刪除 kubelet 服務生成的認證文件客戶端證書
  • 6、啟動 kubelet 和 kube-proxy 服務
  • 7、使用命令 kubectl get csr 和 kubectl certificate approve 命令授權 node節點加入

熱門文章推薦

最后

  • 歡迎您加我微信【ypxiaozhan01】,拉您進技術群或者掃下面群二維碼,一起交流學習...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM