这篇文章给大家分享的是有关Rancher网络是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
首先我们来了解一下Rancher网络的拓扑:
隧道维护(基于config.json)
如果有新加主机,添加IPSec隧道;
如果有新加容器,但是已经存在IPSec隧道,更新xfrm policy;
如果有删除执行相反操作。
隧道路由:
容器内部协议栈判断到目的地址10.42.x.x 存在一条直连路由,发送ARP请求;
同一Host上的agent-instance容器监听ARP请求,接收报文后,判断该目的IP是否在本Host上;
对于目的IP不在该Host上的,使用自己的MAC响应ARP请求;
容器接收到ARP响应,发送业务报文到agent-instance;
agent-instance容器内的IPSec policy将报文送入IPSec 隧道,发到目的Host的agent-instance做解包转发。
配置网络:
Rancher-Metadata
固定IP地址:169.254.169.250;
Metadata Server:webserver,配置文件answers.yml;
支持reload:提供服务reload接口;
分布式:各host均存有metadata server;
Rancher-DNS
分布式:每个Rancher-DNS只服务本Host上的容器;
源IP:记录按client_ip为key来存储;
两种特殊情况也会生成记录:
添加External-service:<external_service>.<stack>.rancher.local
为service添加别名:<service_alias>.<stack>.rancher.local
External-DNS
相当于DNS服务器的一个代理程序;
Service必须Expose port到主机,否则无法生成域名记录;
需要为Host设置标签io.rancher.host.external_dns_ip=<IP_TO_BE_USED_FOR_EXTERNAL_DNS>
域名规则:<serviceName>.<stackName>.<environmentName>.<rootDomainName>
Load Balance
使用Haproxy做负载均衡;
Lb通过managed网络转发流量到endpoints;
LB端口expose到主机;
需要指定是否在每台主机上启动一个LB实例;
External-LB
Service需expose port;
io.rancher.service.external_lb_endpoint;
External-LB自动创建Pool以及member信息,包含:<host_ip>:<exposed_port>
感谢各位的阅读!关于“Rancher网络是怎么样的”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。