基础环境,三台虚拟机
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
.png)
可以看到服务已经创建,网络已经创建,命令最后的house,是指哪个组,可以把一些服务都放到这个组里,这个命令的组名是house
我们再来看看集群的网络
.png)
可以看到多出来一个house_ifeng的网络,在其他节点上也可以看到,新网络是组名+网络名的方式组成的,网络名是在上面的yml文件定义的,如果有好多个服务需要使用同一个网络的话,就需要在定义yml文件时候写网络名写一致,比如都写ifeng,然后创建服务时候记得放到同一组里,比如上面的house就是house组,这样创建出来的服务都在一个网络里了
我们看下创建的服务
.png)
我们可以看到,集群显示的服务名是以为组+自定义的服务名方式组成的,我们yml文件里定义了服务名叫webs那么创建后显示的服务名就是house_webs,显示有2个副本,以及端口映射
至此我们在任意节点访问节点IP+端口就可以访问到服务了
.png)
滚动更新
[root@sw1 ~]# docker service update --image httpd:latest --update-parallelism 1 --update-delay 2s house_webs ##最后跟服务名
--image: 使用那个镜像
--update-parallelism:每次最大更新副本数
--update-delay:延迟几秒
执行后,可以进行滚动更新,不会影响服务
.png)
更新完毕
.png)
可以看到镜像已改变
.png)
完成。
- docker swarm集群搭建及使用Portainer、shipyard
一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168. ...
- 分享:docker swarm集群搭建
[Y_H]实践原创 三台虚拟机:1台centOS , 2台ubuntu. 网上有用docker-machine创建虚拟机做的例子. 这里直接用VMware创建这三台虚拟机,然后用xshell连 ...
- Docker swarm集群搭建教程
一.什么是Swarm Swarm这个项目名称特别贴切.在Wiki的解释中,Swarm behavior是指动物的群集行为.比如我们常见的蜂群,鱼群,秋天往南飞的雁群都可以称作Swarm behavio ...
- DOCKER 学习笔记8 Docker Swarm 集群搭建
前言 在前面的文章中,已经介绍如何在本地通过Docker Machine 创建虚拟Docker 主机,以及也可以在本地Windows 创建虚拟主机,也是可以使用的.这一节,我们将继续学习 Docker ...
- docker swarm集群搭建
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: swarm是docker原生的集群管理软件,与kuberne ...
- docker swarm 集群搭建
创建一个集群 [vagrant@node1 ~]$ docker swarm init --advertise-addr 192.168.9.101 Swarm initialized: curren ...
- Docker Swarm 集群环境搭建及弹性服务部署
上一篇文章<Docker Swarm 集群管理利器核心概念扫盲>中我们把 Swarm 重要的概念性知识给大家讲解了一波,理论完事就该实战了,这篇文章带大家从零开始,搭建 Docker Sw ...
- 从零开始搭建Docker Swarm集群
从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker2. 添加-H tcp:/ ...
- Docker系列之swarm集群搭建
学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络 ...
随机推荐
- docker中安装ps命令
apt-get update && apt-get install -y procps
- UEditor富文本简单使用
简单使用编辑器UEditor(录入)步骤: 1,下载Ueditor插件(文中使用1.4.3版本),添加js引用. <script src="../js/ueditor/ueditor. ...
- 【C++】static关键字的总结
转自 https://www.cnblogs.com/BeyondAnyTime/p/2542315.html C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的s ...
- lnmp一件安装包 搭建laravel 环境(lnmp1.4)(报错500)
https://blog.csdn.net/huangyuxin_/article/details/78998486
- tp框架增删改
选择一张表: 首先要创建模型: 1 $n = M("account"); 数据库添加数据: 1.使用数组: 1 2 3 1.使用数组 $arr = array("uid& ...
- 【总结】Java异常分类
链接:https://www.nowcoder.com/questionTerminal/3ded1983c85c4ae197e005bd31777bc7来源:牛客网 Throwable是所有异常的根 ...
- [UE4]计算箭头方向:正切、SetRelativeRotation、RotationFromXVector、Get MotionController Thumbstick X
正切 正弦函数 sinθ=y/r 余弦函数 cosθ=x/r 正切函数 tanθ=y/x 余切函数 cotθ=x/y 正割函数 secθ=r/x 余割函数 cscθ=r/y 已知y和x,求角度θ: ...
- SketchUp 建模练习(一)从图像建模运货木板 Pallet
软件环境 SketchUp Pro 2017 GIMP 2.10.6 参考书籍 Google SketchUp for Game Design 作者:Robin de Jongh 运货木板效果图 制作 ...
- MySQL binlog2sql-闪回数据
binlog2sql 从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等. 用途 数据快速回滚(闪回) 主从切换后新mast ...
- 使用腾讯地图和js,html实现地理位置的获取
转自http://blog.csdn.net/eele_one/article/details/64905218<!DOCTYPE html> <html> <head& ...