openshift集群修改node节点IP地址后,修改对应配置恢复集群

openshift集群运行中,修改node节点IP地址后,恢复集群

  • 修改所有节点的/etc/hosts文件
  • 注意
  • 问题

踩坑记录原因:本次安装的版本为openshift3.11,一个master节点,一个infra节点,三个compute节点,其中master节点和infra节点在同一台机器上。
openshift集群已经安装好了,并且很多服务都在openshift集群中运行,但是集团领导统一规划服务器IP地址,需要将openshift的三个compute三个节点的服务器ip地址更改。
本次记录的是修改IP地址后,通过修改一些配置,让openshift能恢复原来的运行状态。

1、修改node IP地址后,集群中服务运行正常
修改IP地址后,查看集群状态,所有节点准备就绪,此时,没有重启任何服务,但是如何重启docker或者相关服务,node节点上将无法运行任何自定义的服务。所以,需要修改对应的一些配置,哪怕重启docker,openshift也能正常运行

修改所有节点的/etc/hosts文件

  1. 修改hosts文件中,对应域名的新IP地址
    xx.xx.xx.17 openshift openshift.example.com
    xx.xx.13.212 bjitmmzys.example.com bjitmmzys
    xx.xx.13.211 bjitmmcodes.example.com bjitmmcodes
    xx.xx.13.209 okd-master.example.com okd-master
    
  2. 将所有节点的ssh文件重命名
    cd ~/.ssh/
    mv known_hosts known_hosts.back
    mv authorized_keys authorized_keys.back
    
  3. 重新设置免密,master节点
    ssh-copy-id -i ~/.ssh/id_rsa.pub zhongjiao@openshift.example.com
    ssh-copy-id -i ~/.ssh/id_rsa.pub zhongjiao@bjitmmzys.example.com
    ssh-copy-id -i ~/.ssh/id_rsa.pub zhongjiao@bjitmmcodes.example.com
    ssh-copy-id -i ~/.ssh/id_rsa.pub zhongjiao@okd-master.example.com
    
  4. 登录到每台机器上验证,master节点
    验证域名,直接登录到对应服务器上,不需要输入密码
    ssh openshift.example.com
    ssh bjitmmzys.example.com
    ssh bjitmmcodes.example.com
    ssh okd-master.example.com
    
    验证主机名,第一次需要输入yes,才能登录到服务器上
    ssh openshift
    ssh bjitmmzys
    ssh bjitmmcodes
    ssh okd-master
    
  5. 重启docker,所有节点
    sudo systemctl restart docker
    
  6. 重启修改节点的服务器
    reboot
    

注意

按道理走到这一步,openshift应该就恢复了,我没有完整的跟着这个步骤操作,但经过零散的一些配置,总结需要的步骤应该就这些。下面会记录一些问题,如果不成功的话,可以看一下下面的问题

问题

原IP地址为xx.xx.8.175,新IP地址为xx.xx.13.209

  1. sdn网络问题
    节点处于Ready状态,但是无法在节点上部署pod及服务,查看项目openshift-sdn中的ovs和sdn服务,发现sdn的pod运行失败了,查看sdn服务pod内的日志,报错信息类似如下(当时忘记截图了):

    	E1216 06:27:59.360750   36712 node.go:236] Unable to find network interface for node IP; some features will not work! (node IP "xx.xx.xx.xx" is not a local/private address (hostname "okd-master"))          
    	I1216 06:27:59.361096   36712 node.go:274] Starting openshift-sdn network plugin                                                                                                                                                             
    	W1216 06:27:59.374833   36712 subnets.go:147] HostIP "xx.xx.13.209" for local subnet does not match with nodeIP "xx.xx.8.175", Waiting for master to update subnet for node "okd-master" ...                  
    	W1216 06:28:00.376416   36712 subnets.go:147] HostIP "xx.xx.13.209" for local subnet does not match with nodeIP "xx.xx.8.175", Waiting for master to update subnet for node "okd-master" ...     
    	W1216 06:28:01.878100   36712 subnets.go:147] HostIP "xx.xx.13.209" for local subnet does not match with nodeIP "xx.xx.8.175", Waiting for master to update subnet for node "okd-master" ... 	    
    

    原因:没有修改okd-master节点的/etc/hosts文件内容以及设置免密
    解决方法:修改okd-master(xx.xx.13.209)服务器上的hosts文件,并重新设置免密,重启docker,检查openshift-sdn中的pod,sdn服务启动成功,可以在okd-master的node节点上运行服务了

  2. okd-master上的pod无法连接外网
    pod无法连接外网,会导致通过S2I build构建镜像时,编译项目源代码无法下载依赖,无法构建程序,例如java程序,无法构建代码,无法下载maven依赖文件
    I. 查看是否连接外网:

    curl http://www.baidu.com
    

    报错(无法连接外网):curl: (6) Could not resolve host: www.baidu.com; Name or service not known

    II. 查看pod内的/etc/resolv.conf文件内容,显示的nameserver是原IP地址,不是新IP地址,所以pod无法连接外网

    cat /etc/resolv.conf
    

    在这里插入图片描述
    解决方法:查看okd-master服务器上的/etc/resolv.conf文件内容,设置nameserver为新地址xx.xx.13.209,
    在这里插入图片描述
    修改之后重启dnsmasq

    sudo systemctl restart dnsmasq
    

    没有成功!!!!!
    查看pod,依然无法连接外网,/etc/resolv.conf文件中地址仍然是原IP地址,重启docker

    sudo systemctl restart docker
    

    没有成功!!!!!
    查看pod,依然无法连接外网,/etc/resolv.conf文件中地址仍然是原IP地址,重启xx.xx.13.209 linux服务器

    reboot
    

    成功!成功!!成功!!!
    等待服务器启动,再次查看pod,成功连接外网,/etc/resolv.conf文件内容已修改成功
    在这里插入图片描述
    问题记录就这么多了~~

你可能感兴趣的:(linux,docker,openshift,dns服务器,网络)