问题描述:
因业务增长,需要添加新的node节点到openshift的集群,以满足业务的需求,但是节点加进openshift集群后,发现在主机上用域名和端口的形式是可以访问已经部署的服务,但是在新node节点上启动的容器,进入容器中,用域名加端口的形式访问,报错无法解析,curl 容器的svc ip加端口是没有问题的,具体访问情况如下:
在主机上进行测试
在新节点的容器内访问服务: 解决问题过程:
openshift的解析是通过本地的dnsmasq进行解析的,通过查看容器里面的reslove.conf文件发现ip地址是不对的,解析的ip地址是另一张网卡上的,这就很奇怪,改了下容器的reslove.conf的文件可以临时解决,但还是不行,一旦容器重启就无法正常解析了,openshift中node节点的配置文件都是封装到代码中的,看了下node节点的配置发现cluster-dns获取的地址是不对的如下:
只要更改了下cluster-dns的值应该就可以搞定了,通过翻看openshift中node节点代码,查看到定义这个配置参数
然后找到 atomic-openshift-node.service的配置文件/etc/origin/node/node-config.yaml改下DNSIP为本机ip主机正确的网卡地址,重启atomic-openshift-node.service即可,观察atomic-openshift-node.service的服务状态,其中cluster-dns参数是否获取正常: