介绍
介绍
福哥发现如果我们在rancher服务器节点上面部署rancher客户端节点的话,总是会出现不成功的情况。
这是因为虽然是一台服务器,但是服务器节点和客户端节点之间还是“远程”操作的,这里面就存在一个安全的问题。而rancher解决安全的方式就是使用HTTPS方式加密传输数据,HTTPS就意味着需要一张SSL证书。当我们没有合法的SSL证书的时候就会出现各种问题了。
问题
福哥在rancher的服务器节点上面部署rancher的agent节点时候,发现了agent节点报出如下错误信息。
time="2021-09-08T08:32:49Z" level=error msg="Failed to connect to proxy. Empty dialer response" error="dial tcp 192.168.2.168:44386: connect: connection refused" time="2021-09-08T08:32:49Z" level=error msg="Remotedialer proxy error" error="dial tcp 192.168.2.168:44386: connect: connection refused"
解决
修改前
这是标准的加入agent节点的命令。
docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.9 --server https://192.168.2.168:44386 --token 5tm8jmlc947mcrwt47ncq46d5lntpwsktrjnpjq8prdnlhcgnhkqjp --ca-checksum 2cb5619576f91181965e0d1fda522be3a023bc198f4de92c9d62f83727259086 --etcd --controlplane --worker
修改后
需要增加一个环境变量NO_PROXY,通过NO_PROXY告诉rancher服务器哪些地址上面的agent很安全,不要考虑那么多了。
这是一个NO_PROXY示例,原来默认的127.0.0.1和0.0.0.0也要加上。
NO_PROXY="localhost,127.0.0.1,0.0.0.0,192.168.2.0/24"
改造后的加入agent节点的命令。
docker run -d --privileged -e NO_PROXY="localhost,127.0.0.1,0.0.0.0,192.168.2.0/24" --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.5.9 --server https://192.168.2.168:44386 --token 5tm8jmlc947mcrwt47ncq46d5lntpwsktrjnpjq8prdnlhcgnhkqjp --ca-checksum 2cb5619576f91181965e0d1fda522be3a023bc198f4de92c9d62f83727259086 --etcd --controlplane --worker
成功
加了NO_PROXY之后,这个“状态”一栏下面就会动了。
经过漫长的等待,终于OK了~~
总结
很多时候我们的网络情况都是这样的,就是rancher服务器和rancher客户端都在一个专用网络里面,也就是说它们之间的通讯是很安全的,通过设置NO_PROXY不仅可以解决SSL证书问题,还可以提高服务器和客户端之间的通讯效率。