如何访问Service

65次阅读
没有评论

共计 1099 个字符,预计需要花费 3 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关如何访问 Service,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前面我们已经学习了如何部署 service,也验证了 swarm 的 failover 特性。不过截止到现在,有一个重要问题还没有涉及:如何访问 service?

为了便于分析,我们重新部署 web_server。

① docker service rm  删除 web_server,service 的所有副本(容器)都会被删除。

② 重新创建 service,这次直接用  –replicas=2  创建两个副本。

③ 每个 worker node 上运行了一个副本。

好了,现在 service 已经在那里了,我们如何访问呢?

要访问 http 服务,最起码网络得通吧,服务的 IP 我们得知道吧,但这些信息目前我们都不清楚。不过至少我们知道每个副本都是一个运行的容器,要不先看看容器的网络配置吧。

在 swarm-worker1 上运行了一个容器,是 web_server 的一个副本,容器监听了  80  端口,但并没有映射到 Docker Host,所以只能通过容器的 IP 访问。查看一下容器的 IP。

容器 IP 为  172.17.0.2,实际上连接的是 Docker 默认  bridge  网络。

我们可以直接在 swarm-worker1 上访问容器的 http 服务。

但这样的访问也仅仅是容器层面的访问,服务并没有暴露给外部网络,只能在 Docker 主机上访问。换句话说,当前配置下,我们无法访问 service web_server。

从外部访问 service

要将 service 暴露到外部,方法其实很简单,执行下面的命令:
 

docker service update --publish-add 8080:80 web_server

如果是新建 service,可以直接用使用  –publish  参数,比如:
 

docker service create --name web_server --publish 8080:80 --replicas=2 httpd

容器在 80 端口上监听 http 请求,–publish-add 8080:80  将容器的 80 映射到主机的 8080 端口,这样外部网络就能访问到 service 了。

大家可能会奇怪,为什么 curl 集群中任何一个节点的 8080 端口,都能够访问到 web_server?

这实际上就是使用 swarm 的好处了,这个功能叫做 routing mesh。

上述就是丸趣 TV 小编为大家分享的如何访问 Service 了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1099字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)