更多的情况下,我们会有一个,可能有,也可能有,因此,进行集群管理就十分重要了,也支持集群管理,可以和一起来进行集群管理操作。
在管理节点执行以下操作:
-
下载镜像
-
创建数据卷
-
创建网络
-
创建portainer代理
-
创建portainer服务
参数说明:
--constraint node.role==manager 指定容器运行在管理节点上.
--constraint node.hostname==manager-node 指定容器运行在管理节点manager-node上.
--container-label com.docker.stack.namespace=portainer 是为了prometheus+grafana能通过stack标签查看监控数据,建议今后不以stack方式部署的服务都加上com.docker.stack.namespace标签。
-
访问服务
访问方式: ,首次登录需要注册用户,给用户设置密码,如下图:
我们进入之后可以看到这个一个界面:
-
仪表盘和Swarm
仪表盘展示了Swarm集群的信息:
注意CPU 处为4、总内存为16.4 GB,集群内的每个节点有2个CPU且内存为8.2 GB,所以这些值为集群的总和。
点击 cluster vizualizer会进入Swarm页面, 这里有一个集群的视觉总览,唯一运行的服务是当前的Portainer:
点击名称列的cluster会进入一个服务的总览页面。可以看到,有很多服务相关的信息:
可以对服务进行实时的修改,包括位置约束、重启策略、添加服务标签等等。
找到 Resource limits and reservations 的位置,可以修改服务资源限制:
在页面的最底部是与服务关联的任务列表:
可以看到,我们有2个运行中的任务,2个节点上各有1个。点击左侧菜单中的Containers会显示一些你可能没预料到的信息:
只列出了1个容器,正常应该是有2个才对。为什么呢?
我们学习了docker container命令实际上仅在运行它们的节点上进行了应用,因为Portainer是在和manager进行对话,那是docker container命令所唯一进行运行的节点。记住Portainer只是Docker API的一个网页界面,因此它与命令行中运行 docker container ls的结果相同。
-
添加端点(endpoint)
但是我们可以将剩下的两个集群节点加到Portainer中。要进行添加,点击左侧菜单的Endpoint项。
然后点击+ Add endpoint按键,点击Home会带你进入本章这部分开头处所见到的Endpoint总览页面。从下面的截图中可以看到,worker节点分别运行了三个容器,并且它们 被标记为单机版而非 Swarm:
这时选择新的swarm cluster下左侧菜单中的的continers就会显示所有节点上的容器了:
-
添加私有仓库(registry)