Breeze项目是深圳睿云智合所开源的Kubernetes图形化部署工具,大大简化了Kubernetes部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取Google的相应资源包,尤其适合某些不便访问互联网的服务器场景。

(项目地址 https://github.com/wise2c-devops/breeze )

转载于https://mp.weixin.qq.com/s?__biz=MzI5ODQ2MzI3NQ==&mid=2247485466&idx=1&sn=1508d76ac6d4611fe3197ed79e601c51&chksm=eca4315edbd3b8480c07d0aea9a13f8b781f063a7033ecc492a817c2046cc9cfd16963af7837&mpshare=1&scene=23&srcid=#rd

Breeze开源工具由以下子项目构成

  • playbook(breeze) 该项目由不同的ansible playbook构成,分别是docker、etcd、registry、kubernetes

  • yum-repo 该项目用于为安装过程中提供离线的yum repo源,包含了docker、kubelet、kubectl、kubeadm、kubernetes-cni、docker-compose等rpm包库,除此之外我们还包括了可能会用到的ceph及nfs相关rpm

  • deploy-ui 用户前端UI,采用vue.js框架实现

  • pagoda 实现了对ansible脚本调用的API集

  • kubeadm-version 输出kubernetes组件镜像版本信息

  • haproxy 用于安装负载均衡的镜像及启动脚本

  • keepalived 为负载均衡实现统一入口虚IP的组件镜像及启动脚本

Breeze软件架构简图:

用户通过Breeze工具,只需要一台安装有Docker及docker-compose命令的服务器,连接互联网下载一个对应Kubernetes版本的docker-compose.yaml文件即可将部署程序运行出来,对部署机而已,只需能有普通访问互联网的能力即可,无需FQ,因为我们已经将所有Kubernetes所需要的docker镜像以及rpm包内置于docker image里了。

如果需要离线安装,也是极其容易的,只需要将docker-compose.yaml文件里涉及的docker镜像保存下来,到了无网环境预先使用docker load命令载入,再运行docker-compose up -d命令即可无网运行部署程序。所有被部署的集群角色服务器,完全无需连入互联网。

该项目开源,用户可以很方便的fork到自己的git账号结合travis自动构建出任意Kubernetes版本的安装工具。

在我们的实验环境中准备了六台服务器,配置与角色如下(如果需要增加Minion/Worker节点请自行准备即可):

步骤

一、准备部署主机(deploy / 192.168.9.10)

(1)以标准Minimal方式安装CentOS 7.5 (1804) x64之后,登录shell环境,执行以下命令开放防火墙:

  1. setenforce 0

  2.         sed –follow-symlinks -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config

  3.         firewall-cmd –set-default-zone=trusted

  4.         firewall-cmd –complete-reload

(2)安装docker-compose命令

  1.  curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose

(3)安装docker

  1. yum install docker

(4)建立部署主机到其它所有服务器的ssh免密登录途径

a) 生成秘钥,执行:

  1. ssh-keygen

b) 针对目标服务器做ssh免密登录,依次执行:

  1. ssh-copy-id 192.168.9.11ssh-copy-id 192.168.9.12ssh-copy-id 192.168.9.13ssh-copy-id 192.168.9.14ssh-copy-id 192.168.9.20

二、获取针对K8S某个具体版本的Breeze资源文件并启动部署工具,例如此次实验针对刚刚发布的K8S v1.12.1

  1. curl-L

  2. https://raw.githubusercontent.com/wise2ck8s/breeze/v1.12.1/

  3. docker-compose.yml  -o docker-compose.ymldocker-compose up -d

三、访问部署工具的浏览器页面(部署机IP及端口88),开始部署工作

http://192.168.9.10:88

(1)点击开始按钮后,点击+图标开始添加一个集群:

(2)点击该集群图标进入添加主机界面:

点击右上角“添加主机按钮”:

反复依次添加完整个集群的5台服务器:

点击下一步进行服务组件定义

(3)点击右上角“添加组件”按钮添加服务组件,选择docker,因为所有主机都需要安装,因此无需选择服务器:

再添加镜像仓库组件

备注:registry entry point默认就填写Harbor服务器的IP地址,有些环节可能使用域名则填写域名

继续添加etcd组件,这里我们将其合并部署于k8s master节点,也可以挑选单独的主机进行部署:

最后添加k8s组件,这里分为master和minion nodes:

备注:这里kubernetes entry point是为了HA场景,比如此次试验我们在每一个k8s master节点同时各部署了haproxy和keepalived组件,其产生的虚IP是192.168.9.30,端口是6444,那么我们在这里应该填写为192.168.9.30:6444,如果您只安装一个master,那么可以填写为master的入口,例如192.168.9.11:6443

设置完成的界面如下:

如果要实现高可用HA架构,请提前在部署机准备好以下资源包,详情请参阅:

https://github.com/wise2ck8s/haproxy-k8s

https://github.com/wise2ck8s/keepalived-k8s

(1)haproxy-k8s镜像与启动脚本

(2)keepalived-k8s镜像与启动脚本

在部署机上下载两个镜像:

  1. docker pull wise2c/haproxy-k8s

  2. docker pull wise2c/keepalived-k8s

保存镜像包:

  1. docker save wise2c/haproxy-k8s

  2. wise2c/keepalived-k8s -o /root/k8s-ha.tar

拷贝镜像包至所有master节点:

  1. scp /root/k8s-ha.tar 192.168.9.11:/root/

  2. scp /root/k8s-ha.tar 192.168.9.12:/root/

  3. scp /root/k8s-ha.tar 192.168.9.13:/root/

下载启动脚本

  1. curl -L /root/start-haproxy.sh

  2. https://raw.githubusercontent.com/

  3. wise2ck8s/haproxy-k8s/master/start-haproxy.sh

注意修改上述脚本中的IP地址与您实际场景一致:

  1.       MasterIP1=192.168.9.11

  2.       MasterIP2=192.168.9.12

  3.       MasterIP3=192.168.9.13

  4.       curl -L /root/start-keepalived.sh

  5. https://raw.githubusercontent.com/

  6. wise2ck8s/keepalived-k8s/master/start-keepalived.sh

注意修改上述脚本中的VIP地址和网卡名与您实际场景一致:

  1. VIRTUAL_IP=192.168.9.30

  2.       INTERFACE=ens33

拷贝脚本至所有master节点:

  1.       chmod +x /root/start-haproxy.sh /root/start-keepalived.sh

  2.       scp –p /root/start-haproxy.sh 192.168.9.11:/root/

  3.       scp –p /root/start-haproxy.sh 192.168.9.12:/root/

  4.       scp –p /root/start-haproxy.sh 192.168.9.13:/root/

  5.       scp –p /root/start-keepalived.sh 192.168.9.11:/root/

  6.       scp –p /root/start-keepalived.sh 192.168.9.12:/root/

  7.       scp –p /root/start-keepalived.sh 192.168.9.13:/root/

四、点击下一步,执行部署流程:

在接下来的部署过程中,屏幕会有日志及图标颜色的动态变化:

当你看见Docker图标颜色变为绿色的时候,表示所有节点的docker已经能正常运行,此时可以不等后续部署过程结束,立刻去所有k8s master节点进行HA组件的启用:

  1.       docker load -i /root/k8s-ha.tar

  2.       /root/start-haproxy.sh

  3.      /root/start-keepalived.sh

然后耐心等待最后部署界面所有组件颜色变为绿色即可结束K8S高可用集群的部署工作。

验证:

本文由深圳睿云智合投稿,点击阅读原文与作者交流;

使用开源Breeze工具部署Kubernetes 1.12.1高可用集群的更多相关文章

  1. 使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群

    一.Breeze简介 Breeze 项目是深圳睿云智合所开源的Kubernetes 图形化部署工具,大大简化了Kubernetes 部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取 G ...

  2. Breeze 部署 Kubernetes 1.12.1高可用集群

    今天看文章介绍了一个开源部署 K8S 的工具,有空研究下~ Github 地址: https://github.com/wise2c-devops/breeze

  3. kubeadm使用外部etcd部署kubernetes v1.17.3 高可用集群

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483891&idx=1&sn=17dcd7cd ...

  4. kubeadm 使用 Calico CNI 以及外部 etcd 部署 kubernetes v1.23.1 高可用集群

    文章转载自:https://mp.weixin.qq.com/s/2sWHt6SeCf7GGam0LJEkkA 一.环境准备 使用服务器 Centos 8.4 镜像,默认操作系统版本 4.18.0-3 ...

  5. K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群

    0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案 https://github.com/zhangguanzhang/Kubernetes-ansi ...

  6. lvs+keepalived部署k8s v1.16.4高可用集群

    一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...

  7. Centos7.6部署k8s v1.16.4高可用集群(主备模式)

    一.部署环境 主机列表: 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 master01 7.6. ...

  8. kubernetes之手动部署k8s 1.14.1高可用集群

    1. 架构信息 系统版本:CentOS 7.6 内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1 Docker-ce: 18.09.5 推荐硬件配置:4核8G ...

  9. 部署kubernetes1.8.4+contiv高可用集群

    原理和架构图参考上一篇,这里只记录操作步骤.由于东西较多,篇幅也会较长. etcd version: 3.2.11 kube version: 1.8.4 contiv version: 1.1.7 ...

随机推荐

  1. 利用fiddler core api 拦截修改 websocket 数据

    一般的中间人攻击基本都是拦截修改普通的http协议里面的内容,而对于怎么拦截修改websocket协议传输的内容好像都没有多少介绍. talk is cheap show me the code us ...

  2. setBit testBit权限管理

    1.jdk7文档解释 public boolean testBit(int n) Returns true if and only if the designated bit is set. (Com ...

  3. 软件工程第三次作业(One who wants to wear the crown, Bears the crown.)

    最大连续子数组和 题目 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段和 ...

  4. python程序出现No module named '_socket' 解决方法

    首先看一下这个错误,错误显示没有这个_socket这个模块 看一个简单的程序理解这个错误是怎么出现的 这个程序就是像浏览器发起请求发开一个链接然后关闭,一直循环,运行之后产生这个错误,产生这个错误的原 ...

  5. tomcat设置开机自启动和后台运行

    前言:当浏览器页面显示不出来的时候,重启装在服务器上的tomcat可以正常使用,是通过进入tomcat的bin目录,双击startup.bat运行启动的程序,这时会弹出启动窗口(tomcat的运行日志 ...

  6. 利用顺序栈解决括号匹配问题(c++)-- 数据结构

    题目: 7-1 括号匹配 (30 分)   给定一串字符,不超过100个字符,可能包括括号.数字.字母.标点符号.空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配. 输入格式: 输入在一行 ...

  7. PAT甲题题解-1061. Dating (20)-字符串处理,水水

    #include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...

  8. BugPhobia沟通篇章:Solr模式配置与数据导入调研

    0x01 :Scrum Meeting特别说明 特别说明,考虑到编译原理课程考核的时间安排,每天开发时间急剧缩短以至于难以维系正常的Scrum Meeting,因此,将2015/12/13 00:00 ...

  9. [JSP] c:forEach 如何输出序号

    关键在于<c:forEach>的varStatus属性,具体代码如下: <table width="500" border="0" cells ...

  10. 安装VS2013

       安装VS2013, 之前就有VS2010,安装了一个多小时,纠结,下面是截图.   1.安装   2.登录,之前就有账号了       3.这就是VS2013了.     4.测试     5通 ...