当前位置: 首页 > news >正文

【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用

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

clipboard.png

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

clipboard.png

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仿佛是在同一个内网,可以相互通信。

可以参考链接:http://dockone.io/article/618

Harbor的作用

Harbor作为一个私有仓库,首先本身的作用肯定是存储镜像,也就是docker里的image,在kubernetes中,我们在配置pod时,都会为pod指定image的地址,当创建pod的时候,node会自动将image拉取下来,然后本地运行,形成pod。但是由于国内对国外网络访问的不可靠以及为了速度上的优化和管理上的方便,我们选择自己搭建一个私有的仓库,也就是Harbor。
在有了Harbor以后,我们可以自己上传镜像到Harbor,然后pod就只用拉取Harbor里的镜像,并且Harbor还提供同步复制的功能,很容易就能实现高可用配置。

相关文章:

  • 一名提高选手的数论之路(二)
  • jQuery学习笔记(二)
  • 展望2017 Commvault支招企业如何应对数据洪流
  • 字符画生成
  • ECS上自建Redis服务压测报告
  • linux-grep、find、ps命令
  • (转载)OpenStack Hacker养成指南
  • 利用Logstash插件进行Elasticsearch与Mysql的数据
  • fastjson快速上手(4)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • Python Configparser模块读取、写入配置文件
  • Oracle JET mobile cordove navigator.app对象
  • TFS 报错解决方案:tf400324
  • 欧洲某领先银行利用大数据实现创新转型
  • Nginx多层代理配置
  • @angular/forms 源码解析之双向绑定
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Akka系列(七):Actor持久化之Akka persistence
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Joomla 2.x, 3.x useful code cheatsheet
  • nfs客户端进程变D,延伸linux的lock
  • 记录一下第一次使用npm
  • 区块链分支循环
  • 深入 Nginx 之配置篇
  • 什么软件可以剪辑音乐?
  • 算法-图和图算法
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一份游戏开发学习路线
  • Prometheus VS InfluxDB
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​水经微图Web1.5.0版即将上线
  • #include<初见C语言之指针(5)>
  • #每日一题合集#牛客JZ23-JZ33
  • #预处理和函数的对比以及条件编译
  • (¥1011)-(一千零一拾一元整)输出
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C++17) std算法之执行策略 execution
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)JAVA使用POI操作excel
  • (二)pulsar安装在独立的docker中,python测试
  • (分布式缓存)Redis持久化
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读30/100)Convolutional Pose Machines
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十一)c52学习之旅-动态数码管
  • (五)网络优化与超参数选择--九五小庞
  • (转)ObjectiveC 深浅拷贝学习
  • (转)大型网站的系统架构
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • :O)修改linux硬件时间
  • @Autowired @Resource @Qualifier的区别