5 Flannel网络
5.1 准备工作
上传二进制文件
tar -zxvf flannel-v0.8.0-rc1-linux-amd64.tar.gz
cp flanneld /usr/bin/
cp mk-docker-opts.sh /usr/bin/
清除网络中遗留的docker 网络 (docker0, flannel0 等)
ifconfig
如果存在 请删除,以免发生不必要的未知错误
ip link delete docker0
5.2 添加CA证书到系统信任库
使用动态CA配置update-ca-trust force-enable
拷贝ca根证书到指定目录cp /etc/kubernetes/ssl/ca.pem /etc/pki/ca-trust/source/anchors/
生效update-ca-trust extract
5.3 配置flannel的ip段
etcd节点执行
etcdctl --endpoint https://192.168.116.123:2379 set /flannel/network/config '{"Network":"10.254.0.0/16"}'
5.4 配置flannel
设置flanneld.service
vi /usr/lib/systemd/system/flanneld.service
[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=/usr/bin/flanneld-start $FLANNEL_OPTIONS
ExecStartPost=/usr/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure
[Install]
WantedBy=multi-user.target
RequiredBy=docker.service
vi /etc/sysconfig/flanneld
修改如下信息:
FLANNEL_ETCD_ENDPOINTS="https://192.168.116.123:2379"
FLANNEL_ETCD_PREFIX="/flannel/network"
FLANNEL_OPTIONS="--iface=eno1"
eno1为物理网卡的网卡名
vi /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS=
可以为空
vi /usr/bin/flanneld-start
#!/bin/sh
exec /usr/bin/flanneld \
-etcd-endpoints=${FLANNEL_ETCD_ENDPOINTS:-${FLANNEL_ETCD}} \
-etcd-prefix=${FLANNEL_ETCD_PREFIX:-${FLANNEL_ETCD_KEY}} \
"$@"
赋执行权限
chmod +x /usr/bin/flanneld-start
确保docker已停止
systemctl stop docker
启动flanneld服务
systemctl daemon-reload
systemctl enable flanneld
systemctl start flanneld
查看flannel
ip a
docker0应该和flannel0在同一ip段,且两台机器间的docker0地址可以相互ping通。
6 安装docker
6.1 配置安装docker
上传
docker-ce-17.03.1.ce-1.el7.centos.x86_64.rpm docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
安装
rpm -ivh docker-ce-17.03.1.ce-1.el7.centos.x86_64.rpm docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
如果缺少依赖,
yum localinstall docker-ce-17.03.1.ce-1.el7.centos.x86_64.rpm docker-ce-selinux-17.03.1.ce-1.el7.centos.noarch.rpm
vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.116.123:80 $DOCKER_NETWORK_OPTIONS
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
注解:--insecure-registry=192.168.116.123:80 是由于Harbor没使用https,所以必须在docker里配置这个参数,才能访问Harbor。
6.2 设置docker0网桥的ip地址
mkdir –p /usr/lib/systemd/system/docker.service.d
cd /usr/lib/systemd/system/docker.service.d
mk-docker-opts.sh -i
source /run/flannel/subnet.env
vi /usr/lib/systemd/system/docker.service.d/flannel.conf
[Service]
EnvironmentFile=-/run/flannel/docker
6.3 启动docker
systemctl daemon-reload
systemctl enable docker
systemctl start docker
6.4 查看docker0 flannel0
7.Harbor部署
7.1 上传文件
docker-compose-Linux-x86_64
harbor-offline-installer-v1.1.1.tgz
pod-infrastructure.tar
cp docker-compose-Linux-x86_64 /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
tar -xzvf harbor-offline-installer-v1.1.1.tgz
7.2 配置harbor
cd harbor
vi harbor.cfg
我这里Harbor没有配置Https,所以只需要修改 hostname为Harbor所在主机的ip即可,我Harbor是装在master上,所以hostname=192.168.116.123
cd /root/harbor
./install.sh
7.3 启动harbor
cd /root/harbor/
docker-compose stop
docker-compose up –d
查看docker-compose ps
[root@master-123 harbor]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------------
harbor-adminserver /harbor/harbor_adminserver Up
harbor-db docker-entrypoint.sh mysqld Up 3306/tcp
harbor-jobservice /harbor/harbor_jobservice Up
harbor-log /bin/sh -c crond && rm -f ... Up 127.0.0.1:1514->514/tcp
harbor-ui /harbor/harbor_ui Up
nginx nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
registry /entrypoint.sh serve /etc/ ... Up 5000/tcp
Flannel的作用
我对flannel在kubernetes中的简单理解就是,flannel将本来2个宿主机中不可以相互通信的pod放到了一个虚拟网络内,使得kubernetes集群内所有pod仿佛是在同一个内网,可以相互通信。
Harbor的作用
Harbor作为一个私有仓库,首先本身的作用肯定是存储镜像,也就是docker里的image,在kubernetes中,我们在配置pod时,都会为pod指定image的地址,当创建pod的时候,node会自动将image拉取下来,然后本地运行,形成pod。但是由于国内对国外网络访问的不可靠以及为了速度上的优化和管理上的方便,我们选择自己搭建一个私有的仓库,也就是Harbor。
在有了Harbor以后,我们可以自己上传镜像到Harbor,然后pod就只用拉取Harbor里的镜像,并且Harbor还提供同步复制的功能,很容易就能实现高可用配置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。