Docker与Kubernetes系列(七): Docker Swarm

这段时间工作中用到了Docker以及Kubernetes(简称K8S),现在整理下我学习Docker以及K8S过程中看的一些比较好的资料,方便自己回顾,也希望能给容器小白一些帮助。给自己定一个小目标,二月底之前完成。


这是本系列的第七篇文章, 先不介绍K8S了, 我打算先来介绍Docker Swarm(K8S以后再说吧)。

本篇文章基本翻译和总结自Docker官方文档, 做了精简和改动。


一、Swarm的一些核心概念

Docker engine中已经内嵌了集群管理和编排的特性,加入到集群中的docker engine就是以swarm模式运行的。 我们可以以初始化一个swarm或者加入一个swarm的方式来使docker engine进入swarm模式。

一个Swarm就是一个docker engine的集群,我们可以在上面部署services。 我们也可以同时在同一台Docker实例上部署service和单独的docker容器。

Node


一个节点就是一台加入到swarm中的docker实例。
要在swarm上部署应用,我们需要向集群的管理节点提交我们对service的定义, manager node会把一个个的task(下文会说到)分发到集群的工作节点上。默认情况下,manager node同时也是一个worker node。

Service和Task


service是对于要运行在worker node上的task的定义, 当我们创建一个service的时候,我们需要制定要run哪个image,以及在这个container里要run什么commands。

在replicated service模式下,manager node会根据我们scale的大小来决定在各个节点上运行多少个task。

一个task包含一个docker容器以及在这个容器中要运行的指令。 它是swarm调度的原子单位。

Swarm模式有一个内部的DNS组件,这个组件可以自动把Swarm内的每个service作为一个DNS入口,manager node使用内部的负载均衡器把请求分发给各个worker node。


二、在Swarm上部署一个service


我们需要做以下的事情:
  • 初始化一个以swarm模式运行的docker engine集群
  • 向这个集群中加入两个worker node
  • 部署一个service

初始化Swarm


首先我们通过SSH登录到用来做manager node的机器上, 如 ssh root@10.66.137.222

然后运行以下指令创建一个swarm:

docker swarm init --advertise-addr 10.66.137.222

加入Worker nodes


我们在manager node上运行以下指令:
docker swarm join-token worker,
会输出:

docker swarm join \
    --token XXX \
    10.66.137.222:2377

这就是我们要在worker node上要运行的指令, 运行之后, worker node 就加入到了这个swarm集群中。

加入之后,在manager node上运行 docker node ls, 会有类似以下输出:

[root@localhost ~]# docker node ls
ID                           HOSTNAME               STATUS  AVAILABILITY  MANAGER STATUS
dsu1tginb4deet36qqzo4bbr3    localhost.localdomain  Ready   Active        Reachable
t2213ncsiy7oxfg73umm7fnyh    localhost.localdomain  Ready   Active
wbbl4h5qldptdaq6ogawvonhi *  localhost.localdomain  Ready   Active        Leader

部署service


比如 : docker service create --replicas 3 --name my-web -p 8080:80 nginx
我通过--replicas来定义task的数量,通过-p来使外部可以访问。之后我就可以通过http://10.66.137.222:8080/ 来访问到我的服务了:



参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

沈鸿斌

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值