k8s集群节点主机名修改
系统环境
- Kubernetes 版本:1.20.4
前提背景
k8s集群中,需要修改node节点主机名,我们应该怎样操作,更改了kubelet.conf配置中 hostname-override 参数,也更改了 kube-proxy-config.yml 配置中 hostnameOverride 参数,删除 Node 节点并且重启 kubelet 和 kube-proxy 服务,但主机名并没有修改
具体操作
驱逐pod并删除node节点
Node节点主机名更改,需要先删除Node节点,在删除节点前,需要把该节点上的Pod应用服务驱逐到其它节点上
# 通过以下命令驱逐节点上pod应用
[root@k8s-master ~]# kubectl drain nodename --delete-local-data --force --ignore-daemonsets
# 查看node节点,nodename上应用服务驱逐完后会标记为不可调度
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master1 Ready,SchedulingDisabled <none> 24d v1.20.4
k8s-node1 Ready <none> 24d v1.20.4
# 删除节点
[root@k8s-master ~]# kubectl delete node k8s-master1
修改 kubelet 和 kube-proxy 服务配置文件
# 停止 kubelet和kube-proxy服务
[root@k8s-master ~]# systemctl stop kubelet
[root@k8s-master ~]# systemctl stop kube-proxy
# 修改 kubelet.conf 配置文件中 hostname-override 参数
[root@k8s-master ~]# vim /opt/kubernetes/cfg/kubelet.conf
# 修改完后,查看
[root@k8s-master ~]# grep hostname-override /opt/kubernetes/cfg/kubelet.conf
--hostname-override=k8s-master \
# 修改 kube-proxy.kubeconfig 配置文件中 hostnameOverride 参数
[root@k8s-master ~]# vim /opt/kubernetes/cfg/kube-proxy-config.yml
# 修改完后,查看
[root@k8s-master ~]# grep hostnameOverride /opt/kubernetes/cfg/kube-proxy-config.yml
hostnameOverride: k8s-master # 注册到k8s的节点名称唯一
删除 kubelet 服务生成的认证文件和客户端证书
如果不删除 kubelet 服务生成的认证文件和客户端证书,那么修改的节点主机名是不会生效
# 删除 kubelet 服务生成的认证文件和客户端证书
[root@k8s-master ~]# rm -f /opt/kubernetes/cfg/kubelet.kubeconfig
[root@k8s-master ~]# rm -f /opt/kubernetes/ssl/kubelet*
# 重新启动 kubelet 和 kube-proxy 服务
[root@k8s-master ~]# systemctl start kubelet
[root@k8s-master ~]# systemctl start kube-proxy
验证
[root@k8s-master ~]# kubectl certificate approve csr-xhjk5
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Pending
# 执行上面命令成功后,会看到下面结果
[root@k8s-master ~]# kubectl get csr
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-xhjk5 31m kubernetes.io/kube-apiserver-client-kubelet kubelet-bootstrap Approved,Issued
# 查看 node 节点,成功加入node节点,并且主机名也修改成功
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready <none> 31m v1.20.4
k8s-node1 Ready <none> 24d v1.20.4
总结
修改node节点主机名顺序如下
- 使用 kubectl drain 命令驱逐节点上Pod
- 使用 kubectl delete node 命令删除需要改名的节点
- 停止 kubelet 和 kube-proxy 服务
- 修改 kubelet.conf 和 kube-proxy-config.yml 配置
- 删除 kubelet 服务生成的认证文件和客户端证书
- 启动 kubelet 和 kube-proxy 服务
- 使用命令 kubectl get csr 和 kubectl certificate approve 命令授权 node节点加入
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
爱吃可爱多!
喜欢就支持一下吧
打赏
微信
支付宝