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 nodeNAME 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.ymlhostnameOverride: 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-xhjk5NAME AGE SIGNERNAME REQUESTOR CONDITIONcsr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending# 執行上面命令成功后,會看到下面結果$ kubectl get csrNAME AGE SIGNERNAME REQUESTOR CONDITIONcsr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued# 查看 node 節點,成功加入node節點,並且主機名也修改成功$ kubectl get nodeNAME 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節點加入
熱門文章推薦
- Kubernetes 是否值得學習嗎?
- Kubernetes 私有集群 LoadBalancer 解決方案
- Nginx 之 realip模塊 使用詳解
- Kubernetes節點頻繁NotReady-處理和防范
- K8S node NotReady 后如何保證服務可用
- K8S Pod 內抓包快速定位網絡問題
最后
- 歡迎您加我微信【ypxiaozhan01】,拉您進技術群或者掃下面群二維碼,一起交流學習...
