基础环境,三台虚拟机
172.17.3.70
172.17.3.71
172.17.3.72
系统配置:centos 7,关闭selinux
需要优化的基础配置:
[root@sw1 ~]# vim /etc/rc.local
ulimit -SHn 65535
modprobe br_netfilter
sleep 60 && /sbin/iptables -P FORWARD ACCEPT
sleep 15 && docker container prune -f
[root@sw1 ~]# chmod a+x /etc/rc.d/rc.local
[root@sw1 ~]# vim /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
net.ipv4.ip_forward = 1
更改下主机名,基本就没别的了。
接下来安装docker,为了使用高版本的docker-compose.yml语法,安装了最新的docker-ce
yum install -y vim-enhanced.x86_64 wget net-tools epel-release
以上是安装基础工具
然后正式开始安装docker
yum install -y yum-utils
yum install  -y --setopt=obsoletes=0 docker-ce-18.06.1.ce-3.el7.x86_64
安装完毕后,编辑下docker.service启动文件增加如下配置
[root@sw1 ~]# vim /usr/lib/systemd/system/docker.service
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd \
          --storage-driver=overlay2 \
          --storage-opt overlay2.override_kernel_check=1 \
          --exec-opt native.cgroupdriver=cgroupfs \
          --insecure-registry 172.17.3.14:5000
ExecReload=/bin/kill -s HUP $MAINPID
红色部分为增加部分,更改存储驱动为overlay2,提升性能,增加了一个私有仓库,方便测试
重载一下服务
[root@sw1 ~]# systemctl daemon-reload
三台物理机均如此。
开始建立swarm集群
我们在172.17.3.70执行如下命令
docker swarm init ###初始化集群
然后在其他两台机器上按照提示命令加入集群,至此集群建立完毕
部署一个service服务,我们使用stack命令来部署,需要新建一个yml文件
[root@sw1 ~]# vim nginx.yml
version: "3"
services:
  webs:  ####新建服务的名字
    image: 172.17.3.14:5000/k8s/nginx:1.0  ####使用的镜像
    deploy:
      replicas: 2  ####初始数量为2
      resources:
        limits:  ###最大资源使用量
          cpus: "0.1"
          memory: 50M
      restart_policy:  ###失败后重启策略
        condition: on-failure
    ports:  ###映射到主机那个端口,前面是主机端口后面是容器开放端口
      - "80:80"
    networks:  ####使用那个网络
      - ifeng
networks: ###同上,使用那个网络
  ifeng:
在创建服务前我们先看下swarm集群的网络
其中Ingress是给服务使用的集群共享网络,其他的自行查询
我们创建服务后会再创建一个集群共享网络
[root@sw1 ~]# docker stack deploy -c nginx.yml house
可以看到服务已经创建,网络已经创建,命令最后的house,是指哪个组,可以把一些服务都放到这个组里,这个命令的组名是house
我们再来看看集群的网络
可以看到多出来一个house_ifeng的网络,在其他节点上也可以看到,新网络是组名+网络名的方式组成的,网络名是在上面的yml文件定义的,如果有好多个服务需要使用同一个网络的话,就需要在定义yml文件时候写网络名写一致,比如都写ifeng,然后创建服务时候记得放到同一组里,比如上面的house就是house组,这样创建出来的服务都在一个网络里了
我们看下创建的服务
我们可以看到,集群显示的服务名是以为组+自定义的服务名方式组成的,我们yml文件里定义了服务名叫webs那么创建后显示的服务名就是house_webs,显示有2个副本,以及端口映射
至此我们在任意节点访问节点IP+端口就可以访问到服务了
滚动更新
[root@sw1 ~]# docker service update --image httpd:latest  --update-parallelism 1 --update-delay 2s house_webs ##最后跟服务名
--image: 使用那个镜像
 --update-parallelism:每次最大更新副本数
--update-delay:延迟几秒
执行后,可以进行滚动更新,不会影响服务
更新完毕
可以看到镜像已改变
完成。
 

docker swarm集群搭建以及使用滚动更新的更多相关文章

  1. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1   localhost 192.168. ...

  2. 分享:docker swarm集群搭建

    [Y_H]实践原创 三台虚拟机:1台centOS , 2台ubuntu.   网上有用docker-machine创建虚拟机做的例子.   这里直接用VMware创建这三台虚拟机,然后用xshell连 ...

  3. Docker swarm集群搭建教程

    一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...

  4. DOCKER 学习笔记8 Docker Swarm 集群搭建

    前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...

  5. docker swarm集群搭建

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: swarm是docker原生的集群管理软件,与kuberne ...

  6. docker swarm 集群搭建

    创建一个集群 [vagrant@node1 ~]$ docker swarm init --advertise-addr 192.168.9.101 Swarm initialized: curren ...

  7. Docker Swarm 集群环境搭建及弹性服务部署

    上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...

  8. 从零开始搭建Docker Swarm集群

    从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...

  9. Docker系列之swarm集群搭建

    学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...

随机推荐

  1. mini-treeselect的动态赋值

    <div id="faultTree" allowdrag="false" allowdrop="true" class=" ...

  2. Linux文件夹文件改英文

    打开终端,在终端中输入命令: export LANG=en_US xdg-user-dirs-gtk-update 跳出对话框询问是否将目录转化为英文路径,同意并关闭. 在终端中输入命令: expor ...

  3. MySQL is running but PID file could not be found

    在Linux 中,当你启动或者重启 MySQL 时,报 关于 PID file 的错误 解决方法 第一步:找到   mysql 中 data 目录下的 mysql-bin.index 文件,然后删除 ...

  4. linux kernel mini2440 start.S head-common.S 部分注释

    内核版本:2.6.32.2(mini2440光盘源码) github地址:https://github.com/guanglun/mini2440_uboot_linux (for_len分支 htt ...

  5. js 数组 map方法

    https://www.cnblogs.com/xuan52rock/p/4460949.html https://jingyan.baidu.com/article/91f5db1b7453471c ...

  6. 使用uiautomator2进行webview页面的测试

    1.开发开启webview debug模式 2.使用VirtualXposed框架进行webview测试,详细见https://testerhome.com/topics/16156 下载,安装Vir ...

  7. LeetCode【111. 二叉树的最小深度】

    最小深度,看起来很简单,就是左右节点的深度最小值 定义一个函数,计算其深度 class Solution { public int minDepth(TreeNode root) { if(root ...

  8. 4、redis 分布式锁

    1. 前言 关于分布式锁的实现,目前常用的方案有以下三类: 数据库乐观锁: 基于分布式缓存实现的锁服务,典型代表有 Redis 和基于 Redis 的 RedLock: 基于分布式一致性算法实现的锁服 ...

  9. java 通过jmx获取active mq队列消息

    一.修改active mq配置文件 修改\conf\activemq.xml,带下划线部分 <!-- Licensed to the Apache Software Foundation (AS ...

  10. SOCKET选项

    1. IP_TRANSPARENT [1]socket设置该选项后,可以处理发往非本机的数据包. [2]使用流程: 配置防火墙和路由: iptables -t mangle -A PREROUTING ...