基础环境,三台虚拟机
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太虚拟机必须网络 ...
随机推荐
- is_numeric — 检测变量是否为数字或数字字符串
is_numeric — 检测变量是否为数字或数字字符串 bool is_numeric ( mixed $var ) 如果 var 是数字和数字字符串则返回 TRUE ,否则返回 FALSE . 参 ...
- ORACLE数据库在导入导出时序列不一致的问题
ORACLE数据库在导入导出时序列不一致的问题 在使用ORACLE数据库时,当给一个表设置自增字段时,我们经常会使用到序列+触发器来完成.但当你需要对数据库进行导入导出时,序列很容易出问题. 当你 ...
- 安装Visual Studio 语言包时出现windows 程序兼容模式已打开.请将其关闭
打开 cmd.exe 输入 安装包路径 /Uninstall例如:D:\vs_lang_cn.exe /Uninstall (中间有个空格,Uninstall前是个左斜杠)回车 后 安装包会运行.点击 ...
- Git 日常操作
本地新建Git库步骤: 初始化git库:git init 建立本地和远程的关联: git remote add origin ip:端口/ 项目.git 从远程下载所有分支到本地:git fetch ...
- xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files'
xtrabackup备份MySQL报错:InnoDB: Error number 24 means 'Too many open files' 1.使用xtrabackup备份MySQL时出现如下报错 ...
- 单例模式实例&多线程应用
单例模式是指:对于一个类在内存中只能存在唯一一个对象,这种设计模式叫做单例设计模式. 单例设计模式的写法: 1. 设置私有(private)的构造方法. 2. 实例化一个该类的对象作为成员变量,并设置 ...
- Thread.Abort 方法
[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)] public void Abort() 在调用此方 ...
- 高度自适应的div
需求:有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度 1.用flex 来实现 思路:flex 垂直布局(column),第一个元素固定高度,第二个元素flex ...
- sunzl is not in the sudoers file.This incident will be reported
Description: [sunzl@localhost nuc900bsp$] ./install.sh sorry!you are not the root !! [sunzl@localhos ...
- Centos 6.9 install Python3.7
# install python3sudo yum -y updatesudo yum -y install yum-utils yum install -y zlib-devel bzip2-dev ...