如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)
前面我们已经学习了如何部署 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,我们下一节重点讨论。
书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
转载于:https://www.cnblogs.com/CloudMan6/p/7909136.html
如何访问 Service?- 每天5分钟玩转 Docker 容器技术(99)相关推荐
- 每天5分钟玩转kubernetes_DNS 访问 Service 每天5分钟玩转 Docker 容器技术(138)
第138篇 DNS 访问 Service 在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部 ...
- DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ...
- 通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
本节开始学习 Service. 我们不应该期望 Kubernetes Pod 是健壮的,而是要假设 Pod 中的容器很可能因为各种原因发生故障而死掉.Deployment 等 controller 会 ...
- 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)
2019独角兽企业重金招聘Python工程师标准>>> 上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker s ...
- 外网如何访问 Service?- 每天5分钟玩转 Docker 容器技术(139)
除了 Cluster 内部可以访问 Service,很多情况我们也希望应用的 Service 能够暴露给 Cluster 外部.Kubernetes 提供了多种类型的 Service,默认是 Clus ...
- Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)
微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...
- Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
Service Cluster IP 是一个虚拟 IP,是由 Kubernetes 节点上的 iptables 规则管理的. 可以通过 iptables-save 命令打印出当前节点的 iptable ...
- 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...
- 如何滚动更新 Service?- 每天5分钟玩转 Docker 容器技术(102)
在前面的实验中,我们部署了多个副本的服务,本节将讨论如何滚动更新每一个副本. 滚动更新降低了应用更新的风险,如果某个副本更新失败,整个更新将暂停,其他副本则可以继续提供服务.同时,在更新的过程中,总是 ...
最新文章
- mvc4.0 html.actionlink comfired,未触发MVC 5远程验证
- 开源 免费 java CMS - FreeCMS2.1 会员站内信
- 【Python2】Keras_ResNet 在Cifar10数据集上分类,Flask框架部署目标检测模型
- c语言 if 多个判断条件执行顺序_C语言之流程控制选择语句
- 基础正则表达式介绍与练习
- java 父子级json组装不用递归_2020面试阿里Java研发岗题库总结,想虐面试官不能错过的面试宝典...
- centos安装--两张光盘
- ubuntu 11.10下载和编译Android源码
- 重定向拼接中文参数和特殊字符
- SpringBootSwagger构建REST API并生成API文档
- python编写一个汽车类_python实现汽车管理系统
- 一文速学-时间序列分析算法之加权移动平均法详解+Python代码实现
- 传统行业中CPK的计算方法
- 自动机器学习-H2O.ai
- 浅析物联网行业市场最新发展趋势
- FindProxyForURL设置浏览器代理
- MacOS 安装 JDK1.8
- sql语法基础,sql分组查询
- MySQL优化之超大分页查询
- HDU 2047 [阿牛的EOF牛肉串] 递推
热门文章
- 六大设计原则之迪米特法则
- ConcurrentModificationException并发修改异常
- Mac 录制视频,并转为GIF格式
- Log4Net ,.net和SQL Server的完美结合
- MMS发送的无线网络连接协议分析
- 6410 实现 linux 串口驱动详解
- quot c语言数组压缩 quot,程序员之---C语言细节12(指针和数组细节,quot;//quot;的可移植性说明)...
- Django入门-项目创建与初识子应用
- Linux 系统中的权限管理
- MSTP协议介绍和堆叠技术介绍