ITPub博客

首页 > 云计算 > Docker/K8 > 20 Docker容器集群网络架构:三、Docker集群离线部署

20 Docker容器集群网络架构:三、Docker集群离线部署

原创 Docker/K8 作者:shuchaoyang 时间:2024-11-19 08:33:01 0 删除 编辑

20 Docker容器集群网络架构:三、Docker集群离线部署 3.1 环境准备 3.1.1 配置主机名 3.1.2 关闭firewall防火墙 3.1.3 关闭iptables防火墙 3.1.3.1 安装iptables 3.1.3.2 禁用iptables 3.1.3.3 清空防火墙规则 3.1.4 关闭selinux 3.1.4.1 临时关闭 3.1.4.2 彻底关闭 3.1.4.3 查询关闭情况 3.1.5 配置时间同步 3.1.5.1 安装chrony 3.1.5.2 配置时钟源 3.1.5.3 重新启动chrony服务,并配置开机启动 3.1.5.4 设置时区,同步时间 3.1.6 开启包转发功能和修改内核参数 3.1.6.1 加载br_netfilter模块 3.1.6.2 设置br_netfilter内核参数 3.1.6.3 使br_netfilter内核参数生效 3.1.6.4 开机自动加载模块 3.1.6.5 新建加载模块文件 3.1.6.6 设置权限 3.1.6.7 查看模块加载情况 3.1.7 安装基础软件包 3.1.8 安装docker依赖包 3.1.9 上传文件并解压 3.1.10 设置本地docker yum源 3.1.10.1 创建docker.repo 3.1.10.2 刷新yum缓存 3.2 离线部署 Docker 3.3 关联 etcd 3.3.1 docker01 关联 etcd 3.3.2 docker02 关联 etcd 3.3.3 docker03 关联 etcd

20 Docker容器集群网络架构:三、Docker集群离线部署

3.1 环境准备

主机名 IP 操作系统 配置 部署软件
docker01 192.168.0.121 CentOS 7.9 x64 1C/4G etcd+docker
docker02 192.168.0.122 CentOS 7.9 x64 1C/4G etcd+docker
docker03 192.168.0.123 CentOS 7.9 x64 1C/4G etcd+docker

以节点docker01为例,其它节点参照执行。

3.1.1 配置主机名

[root@localhost ~]# hostnamectl set-hostname docker01 && bash

3.1.2 关闭firewall防火墙

[root@docker01 ~]# systemctl stop firewalld && systemctl disable firewalld

3.1.3 关闭iptables防火墙

3.1.3.1 安装iptables
[root@docker01 ~]# yum install iptables-services -y
3.1.3.2 禁用iptables
root@xianchaomaster1 ~]# systemctl stop iptables && systemctl disable iptables
3.1.3.3 清空防火墙规则
[root@xianchaomaster1~]# iptables -F

3.1.4 关闭selinux

3.1.4.1 临时关闭
[root@docker01 ~]# setenforce 0
3.1.4.2 彻底关闭
[root@docker01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

注意: 修改selinux配置文件之后,重启机器,selinux才能彻底生效。

3.1.4.3 查询关闭情况
[root@docker01 ~]# getenforce

显示Disabled表示selinux关闭成功。

3.1.5 配置时间同步

3.1.5.1 安装chrony
[root@docker01 ~]# yum install chrony -y
3.1.5.2 配置时钟源
[root@docker01 ~]# echo "server 192.168.0.8 iburst" >> /etc/chrony.conf

注意: 192.168.0.8为时钟服务器。

3.1.5.3 重新启动chrony服务,并配置开机启动
[root@docker01 ~]
# systemctl restart chronyd.service

[root@docker01 ~] # systemctl status chronyd.service
[root@docker01 ~] # systemctl enable chronyd.service
[root@docker01 ~] # systemctl list-unit-files |grep chronyd.service
3.1.5.4 设置时区,同步时间
[root@docker01 ~]
# timedatectl set-timezone Asia/Shanghai

[root@docker01 ~] # chronyc sources
[root@docker01 ~] # timedatectl status

3.1.6 开启包转发功能和修改内核参数

内核参数修改:br_netfilter模块用于将桥接流量转发至iptables链,br_netfilter内核参数需要开 启转发。

3.1.6.1 加载br_netfilter模块
[root@docker01 ~]# modprobe br_netfilter
3.1.6.2 设置br_netfilter内核参数
[root@docker01 ~]
# cat > /etc/sysctl.d/docker.conf <<EOF

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
3.1.6.3 使br_netfilter内核参数生效
[root@docker01 ~]# sysctl -p /etc/sysctl.d/docker.conf
3.1.6.4 开机自动加载模块

重启后模块失效,下面是开机自动加载模块的脚本 在/etc/新建rc.sysinit文件

[root@docker01 ~]
# cat > /etc/rc.sysinit <<EOF

#!/bin/bash
for file in /etc/sysconfig/modules/*.modules; do
[ -x \$file ] && \$file
done
EOF
3.1.6.5 新建加载模块文件

在/etc/sysconfig/modules/目录下新建文件如下

[root@docker01 ~]
# cat > /etc/sysconfig/modules/br_netfilter.modules <<EOF

modprobe br_netfilter
EOF
3.1.6.6 设置权限
[root@docker01 ~]# chmod 755 /etc/sysconfig/modules/br_netfilter.modules

重启机器模块也会自动加载。

3.1.6.7 查看模块加载情况
[root@localhost ~]
# lsmod | grep br_netfilter

br_netfilter 22209 0
bridge 136173 1 br_netfilter

注意:Docker安装后出现:WARNING:  bridge-nf-call-iptables is disabled的解决办法:

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

将Linux系统作为路由或者VPN服务就必须要开启IP转发功能。当linux主机有多个网卡时一个网卡收 到的信息是否能够传递给其他的网卡,如果设置成1的话可以进行数据包转发,可以实现VxLAN等功 能。不开启会导致docker部署应用无法访问。

3.1.7 安装基础软件包

[root@docker01 ~]
# yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack

[root@docker01 ~] #

3.1.8 安装docker依赖包

[root@docker01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

3.1.9 上传文件并解压

将“docker-19.03.15-stable.tar.gz” 压缩包上传到 /opt目录

[root@docker01 ~]
# cd /opt

[root@docker01 opt] #
[root@docker01 opt] # ls
docker-19.03.15-stable.tar.gz  etcd-v3.0.12-linux-amd64.tar.gz  rh
[root@docker01 opt] #
[root@docker01 opt] # tar xzf docker-19.03.15-stable.tar.gz
[root@docker03 opt] #

3.1.10 设置本地docker yum源

3.1.10.1 创建docker.repo
[root@docker01 opt]
# cd /etc/yum.repos.d

[root@docker01 yum.repos.d] #
[root@docker01 yum.repos.d] # echo '[docker]
name =docker
baseurl =file:///opt/docker-19.03.15-stable
enabled = 1
gpgcheck = 0 ' > docker.repo
[root@docker01 yum.repos.d] #
3.1.10.2 刷新yum缓存
[root@docker01 yum.repos.d]
# yum clean all && yum makecache

已加载插件:fastestmirror, langpacks
正在清理软件源: base docker epel extras updates
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base                                                                                                | 3.6 kB   00:00:00    
docker                                                                                              | 2.9 kB   00:00:00    
epel                                                                                                | 4.3 kB   00:00:00    
extras                                                                                              | 2.9 kB   00:00:00    
updates                                                                                             | 2.9 kB   00:00:00    
(1/19): base/7/x86_64/group_gz                                                                      | 153 kB   00:00:00    
(2/19): base/7/x86_64/primary_db                                                                    | 6.1 MB   00:00:14    
(3/19): docker/filelists_db                                                                         |   23 kB   00:00:00    
(4/19): docker/other_db                                                                             |   15 kB   00:00:00    
(5/19): docker/primary_db                                                                           |   49 kB   00:00:00    
(6/19): base/7/x86_64/filelists_db                                                                  | 7.2 MB   00:00:17    
(7/19): epel/x86_64/group                                                                           | 399 kB   00:00:03    
(8/19): base/7/x86_64/other_db                                                                      | 2.6 MB   00:00:05    
(9/19): epel/x86_64/updateinfo                                                                      | 1.0 MB   00:00:02    
(10/19): epel/x86_64/prestodelta                                                                    |   592 B   00:00:00    
(11/19): epel/x86_64/primary_db                                                                     | 8.7 MB   00:00:17    
(12/19): extras/7/x86_64/filelists_db                                                               | 305 kB   00:00:05    
(13/19): extras/7/x86_64/primary_db                                                                 | 253 kB   00:00:06    
(14/19): extras/7/x86_64/other_db                                                                   | 154 kB   00:00:01    
(15/19): epel/x86_64/other_db                                                                       | 4.1 MB   00:00:15    
(16/19): epel/x86_64/filelists_db                                                                   |   15 MB   00:00:44    
(17/19): updates/7/x86_64/filelists_db                                                              |   15 MB   00:00:40    
(18/19): updates/7/x86_64/other_db                                                                  | 1.6 MB   00:00:04    
(19/19): updates/7/x86_64/primary_db                                                                |   27 MB   00:00:57    
元数据缓存已建立
[root@docker01 yum.repos.d] #

3.2 离线部署 Docker

[root@docker01 yum.repos.d]
# yum install docker-ce docker-ce-cli containerd.io -y

已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 containerd.io.x86_64.0.1.6.28-3.2.el7 将被 安装
--> 正在处理依赖关系 container-selinux > = 2:2.74,它被软件包 containerd.io-1.6.28-3.2.el7.x86_64 需要
---> 软件包 docker-ce.x86_64.3.19.03.15-3.el7 将被 安装
---> 软件包 docker-ce-cli.x86_64.1.19.03.15-3.el7 将被 安装
--> 正在检查事务
---> 软件包 container-selinux.noarch.2.2.119.2-1.911c772.el7_8 将被 安装
--> 解决依赖关系完成

依赖关系解决

===========================================================================================================================
Package                         架构                 版本                                      源                    大小
===========================================================================================================================
正在安装:
containerd.io                   x86_64               1.6.28-3.2.el7                            docker                 35 M
docker-ce                       x86_64               3:19.03.15-3.el7                          docker                 24 M
docker-ce-cli                   x86_64               1:19.03.15-3.el7                          docker                 38 M
为依赖而安装:
container-selinux               noarch               2:2.119.2-1.911c772.el7_8                 docker                 40 k

事务概要
===========================================================================================================================
安装   3 软件包 ( + 1 依赖软件包)

总下载量:98 M
安装大小:391 M
Downloading packages:
---------------------------------------------------------------------------------------------------------------------------
总计                                                                                       313 MB/s |   98 MB   00:00:00    
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 正在安装    : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                                     1/4
 正在安装    : containerd.io-1.6.28-3.2.el7.x86_64                                                                     2/4
 正在安装    : 1:docker-ce-cli-19.03.15-3.el7.x86_64                                                                   3/4
 正在安装    : 3:docker-ce-19.03.15-3.el7.x86_64                                                                       4/4
 验证中      : 3:docker-ce-19.03.15-3.el7.x86_64                                                                       1/4
 验证中      : 1:docker-ce-cli-19.03.15-3.el7.x86_64                                                                   2/4
 验证中      : containerd.io-1.6.28-3.2.el7.x86_64                                                                     3/4
 验证中      : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                                     4/4

已安装:
 containerd.io.x86_64 0:1.6.28-3.2.el7     docker-ce.x86_64 3:19.03.15-3.el7     docker-ce-cli.x86_64 1:19.03.15-3.el7    

作为依赖被安装:
 container-selinux.noarch 2:2.119.2-1.911c772.el7_8                                                                      

完毕!
[root@docker01 yum.repos.d] #

3.3 关联 etcd

3.3.1 docker01 关联 etcd

[root@docker01 etcd-v3.0.12-linux-amd64]
# /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.121:2379 --cluster-advertise=192.168.0.121:2375 &

[1] 20722
[root@docker01 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:05:01.536262354+08:00] Starting up                                  
WARN[2024-10-20T10:05:01.536688946 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:05:01.548617080 + 08:00] libcontainerd: started new containerd process   pid = 20727
INFO[2024-10-20T10:05:01.548675994 + 08:00] parsed scheme: "unix"                         module =grpc
INFO[2024-10-20T10:05:01.548684269 + 08:00] scheme "unix" not registered, fallback to default scheme   module =grpc
INFO[2024-10-20T10:05:01.548702390 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0  <nil>}] <nil>}   module =grpc
INFO[2024-10-20T10:05:01.548710625 + 08:00] ClientConn switching balancer to "pick_first"   module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:05:01.612336153 + 08:00] starting containerd                           revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.
INFO[2024-10-20T10:05:02.000419428 + 08:00] Loading containers: done.                    
INFO[2024-10-20T10:05:02.081941022 + 08:00] Docker daemon                                 commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:05:02.082037629 + 08:00] Daemon has completed initialization          
INFO[2024-10-20T10:05:02.099168252 + 08:00] API listen on /var/run/docker.sock          
INFO[2024-10-20T10:05:02.099238413 + 08:00] API listen on [::]:2375                      
INFO[2024-10-20T10:05:02.224219879 + 08:00] 2024/10/20 10:05:02 [INFO] serf: EventMemberJoin: docker01 192.168.0.121

3.3.2 docker02 关联 etcd

[root@docker02 ~]
# /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.122:2379 --cluster-advertise=192.168.0.122:2375 &

[1] 10674
[root@docker02 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:06:16.006269470+08:00] Starting up                                  
WARN[2024-10-20T10:06:16.006811091 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:06:16.018644112 + 08:00] libcontainerd: started new containerd process   pid = 20738
INFO[2024-10-20T10:06:16.018703306 + 08:00] parsed scheme: "unix"                         module =grpc
INFO[2024-10-20T10:06:16.018712067 + 08:00] scheme "unix" not registered, fallback to default scheme   module =grpc
INFO[2024-10-20T10:06:16.018730708 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0  <nil>}] <nil>}   module =grpc
INFO[2024-10-20T10:06:16.018739039 + 08:00] ClientConn switching balancer to "pick_first"   module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:06:16.080871096 + 08:00] starting containerd                           revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.                
INFO[2024-10-20T10:06:16.506582746 + 08:00] Docker daemon                                 commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:06:16.506676229 + 08:00] Daemon has completed initialization          
INFO[2024-10-20T10:06:16.521548478 + 08:00] API listen on /var/run/docker.sock          
INFO[2024-10-20T10:06:16.521628932 + 08:00] API listen on [::]:2375                      
INFO[2024-10-20T10:06:16.713715029 + 08:00] 2024/10/20 10:06:16 [INFO] serf: EventMemberJoin: docker02 192.168.0.122
INFO[2024-10-20T10:06:16.718314246 + 08:00] 2024/10/20 10:06:16 [INFO] serf: EventMemberJoin: docker01 192.168.0.121

3.3.3 docker03 关联 etcd

[root@docker03 etcd-v3.0.12-linux-amd64]
# /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=etcd://192.168.0.123:2379 --cluster-advertise=192.168.0.123:2375 &

[1] 20735
[root@docker03 etcd-v3.0.12-linux-amd64] # INFO[2024-10-20T10:06:51.544315033+08:00] Starting up                                  
WARN[2024-10-20T10:06:51.545038092 + 08:00] [!] DON 'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU 'RE DOING [!]
INFO[2024-10-20T10:06:51.556496715 + 08:00] libcontainerd: started new containerd process   pid = 20740
INFO[2024-10-20T10:06:51.556557386 + 08:00] parsed scheme: "unix"                         module =grpc
INFO[2024-10-20T10:06:51.556565615 + 08:00] scheme "unix" not registered, fallback to default scheme   module =grpc
INFO[2024-10-20T10:06:51.556584215 + 08:00] ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0  <nil>}] <nil>}   module =grpc
INFO[2024-10-20T10:06:51.556592529 + 08:00] ClientConn switching balancer to "pick_first"   module =grpc
WARN[0000] containerd config version `1` has been deprecated and will be removed in containerd v2.0, please switch to version `2`, see https://github.com/containerd/containerd/blob/main/docs/PLUGINS.md #version-header
INFO[2024-10-20T10:06:51.620794493 + 08:00] starting containerd                           revision =ae07eda36dd25f8a1b98dfbf587313b99c0190bb version = 1.6.28
.
.
.
INFO[2024-10-20T10:06:52.056021068 + 08:00] Docker daemon                                 commit =99e3ed8919 graphdriver(s) =overlay2 version = 19.03.15
INFO[2024-10-20T10:06:52.056113053 + 08:00] Daemon has completed initialization          
INFO[2024-10-20T10:06:52.089439396 + 08:00] API listen on /var/run/docker.sock          
INFO[2024-10-20T10:06:52.089522277 + 08:00] API listen on [::]:2375                      
INFO[2024-10-20T10:06:52.263852615 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker03 192.168.0.123
INFO[2024-10-20T10:06:52.265731646 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker01 192.168.0.121
INFO[2024-10-20T10:06:52.265788158 + 08:00] 2024/10/20 10:06:52 [INFO] serf: EventMemberJoin: docker02 192.168.0.122

原文链接: https://mp.weixin.qq.com/s?__biz=MzkxNzI1OTE3Mw==&mid=2247493160&idx=1&sn=e35fccb86b00fba96e43d293f90d498c&chksm=c141f0e2f63679f45f9ebca119de13ce45d544518a2558c1afcf675dc700f406288b9eb090ae&token=1641304794&lang=zh_CN#rd

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/291614/viewspace-3050500/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
专注于IT系统集成、运维、架构二十年的IT职场老兵,拥有CCNA、OCA、OCP、PGCA、PGCE认证证书,公众号:超哥的IT私房菜,知识星球:超哥的IT私房菜,目前是多家IT厂商的咨询顾问。

注册时间:2021-08-27

  • 博文量
    552
  • 访问量
    303523