环境准备
主机名 | 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