將swarm中的service端口暴露出去,供集羣外的服務進行訪問的 2 種方法:
1、路由網格
也就是在docker create service時,使用下面的參數
--publish published=<published_port>,target=<service_port>
2、將task端口直接映射到節點主機上
在創建service時,使用如下的參數,比上面多了個mode=host
--publish mode=host,published=<published_port>,target=<service_port>
這樣,外部的請求就可以通過主機的端口對service中的服務進行訪問了。
3、兩者的區別?
- 路由網格,使用任意的主機的端口都可以訪問
- 路由網格,節點上不一定必須運行task (比如:5個節點,一個實例,但是通過任意的節點都能訪問)
- 直接端口映射,節點無task,無法訪問 (比如:5個節點,一個實例,只有在節點所在的主機上才能訪問這個服務,其他的節點無法訪問)