07-docker跨主机通信

环境准备

主机名 IP 角色 应用
docker01 10.0.0.101 ETCD数据库(配置中心) etcd
docker02 10.0.0.102 docker容器 docker、flannel
docker03 10.0.0.103 docker容器 docker、flannel

配置ETCD

安装etcd

# 1.安装etcd
[root@docker01 ~]# yum install -y etcd
# 2.配置etcd
[root@docker01 ~]# vim /etc/etcd/etcd.conf
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.101:2379,http://127.0.0.1:2379"
ETCD_NAME="default"
#[Clustering]
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.101:2379"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new"
# 3.启动
[root@docker01 ~]# systemctl start etcd
# 4.ETCD健康检查
[root@docker01 ~]# etcdctl -C http://10.0.0.101:2379 cluster-health
member 8e9e05c52164694d is healthy: got healthy result from
http://10.0.0.101:2379
cluster is healthy
# 5.测试写入数据
[root@docker01 ~]# etcdctl -C http://10.0.0.101:2379 set /usr/local/aaa "hello world"
# 6.测试查询数据
[root@docker01 ~]# etcdctl -C http://10.0.0.101:2379 get /usr/local/aaa
hello world

图形化etcd

# 1.下载
[root@docker01 ~]# wget http://test.driverzeng.com/K8S_120/etcd/etcdkeeperv0.7.6-linux_x86_64.zip
# 2.解压
[root@docker01 ~]# unzip etcdkeeper-v0.7.6-linux_x86_64.zip
# 3.授权
[root@docker01 ~]# cd etcdkeeper/
[root@docker01 etcdkeeper]# chmod +x etcdkeeper
# 4.启动
[root@docker01 etcdkeeper]# ./etcdkeeper -h 0.0.0.0

#浏览器访问:
http://10.0.0.101:8080

flannel安装配置

# 1.安装
[root@docker02 ~]# yum install -y flannel
[root@docker03 ~]# yum install -y flannel
# 2.配置flannel(都要配置的)
[root@docker02 ~]# vim /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://10.0.0.101:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
# 3.创建etcd中的数据
## 以下创建数据方式,任选其一
[root@docker01 ~]# etcdctl mk /atomic.io/network/config '{"Network":"192.168.0.0/16"}'
[root@docker01 ~]# etcdctl -C http://10.0.0.101:2379 set /atomic.io/network/config '{"Network":"192.168.0.0/16"}'
# 4.启动flannel
[root@docker02 ~]# systemctl start flanneld
[root@docker03 ~]# systemctl start flanneld

#检查网络
[root@docker03 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 192.168.6.0  netmask 255.255.0.0  destination 192.168.6.0
        inet6 fe80::8924:5015:d618:a989  prefixlen 64  scopeid 0x20<link>

关联docker和flannel

#这些flannel主机都要做

# 1.修改docker启动脚本
vim /usr/lib/systemd/system/docker.service
EnviromentFile=/run/flannel/docker
ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_NETWORK_OPTIONS
# 2.重启docker
systemctl daemon-reload
systemctl restart docker

#3.检查网段
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1472
        inet 192.168.8.1  netmask 255.255.255.0  broadcast 192.168.8.255

flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1472
        inet 192.168.8.0  netmask 255.255.0.0  destination 192.168.8.0

开启Linux内核转发

#这些flannel主机都要做
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
systemctl start firewalld
systemctl stop firewalld

gitlab 和 jenkins启动在不同的机器上

docker03

version: '3.3'

services:
    gitlab:
        image: gitlab/gitlab-ce
        container_name: gitlab
        hostname: 10.0.0.103
        environment:
            GITLAB_OMNIBUS_CONFIG: |
                external_url 'http://10.0.0.103'
                gitlab_rails['gitlab_shell_ssh_port'] = 2222
                prometheus['enable'] = false
                prometheus['monitor_kubernetes'] = false
                prometheus_monitoring['enable'] = false
                alertmanager['enable'] = false
                node_exporter['enable'] = false
                redis_exporter['enable'] = false
                postgres_exporter['enable'] = false
                grafana['enable'] = false

        volumes: 
            - /opt/gitlab/config:/etc/gitlab
            - /opt/gitlab/logs:/var/log/gitlab
            - /opt/gitlab/data:/var/opt/gitlab
        ports:
            - 80:80
            - 443:443
            - "2222:22"
        shm_size: '256m'
        restart: always

docker02

version: '3.3'

services:
    jenkins:
        image: jenkins/jenkins
        container_name: jenkins
        volumes:
            - /data/jenkins/data:/var/jenkins_home
            - /bin/docker:/bin/docker
            - /var/run/docker.sock:/var/run/docker.sock
            - /root/.ssh/:/root/.ssh/
            - /root/.docker/config.json:/root/.docker/config.json
        ports:
            - 8080:8080
            - 50000:50000
        privileged: true
        user: root
        restart: always
暂无评论

发送评论 编辑评论


				
上一篇
下一篇