使用开源Breeze工具部署Kubernetes 1.12.1高可用集群

2023年 7月 9日 25.0k 0

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

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工具部署Kubernetes 1.12.1高可用集群-1

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

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

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

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

    主机名 IP地址 角色 OS 组件
    deploy 192.168.9.10 Breeze Deploy CentOS 7.5 x64 docker / docker-compose / Breeze
    k8s01 192.168.9.11 K8S Master CentOS 7.5 x64 K8S Master / etcd / HAProxy / Keepalived
    k8s02 192.168.9.12 K8S Master CentOS 7.5 x64 K8S Master / etcd / HAProxy / Keepalived
    k8s03 192.168.9.13 K8S Master CentOS 7.5 x64 K8S Master / etcd / HAProxy / Keepalived
    k8s04 192.168.9.14 K8S Minion Node CentOS 7.5 x64 K8S Worker
    registry 192.168.9.20 Harbor CentOS 7.5 x64 Harbor 1.6.0
    192.168.9.30 VIP HA虚IP地址在3台K8S Master浮动

    步骤:

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

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

             setenforce 0

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

             firewall-cmd –set-default-zone=trusted

             firewall-cmd –complete-reload

    (2)安装docker-compose命令

             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

            yum install docker

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

  • a) 生成秘钥,执行:
  •                       ssh-keygen

  • b) 针对目标服务器做ssh免密登录,依次执行:
  •                       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

           curl -L https://raw.githubusercontent.com/wise2ck8s/breeze/v1.12.1/docker-compose.yml -o docker-compose.ymldocker-compose up -d

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

    http://192.168.9.10:88

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-2

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-3

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-4

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

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-5

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-6

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-7

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-8

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-9

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-10

    再添加镜像仓库组件

    Alt

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-11

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

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-12

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-13

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-14

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-15

    备注:这里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

    设置完成的界面如下:

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-16

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

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

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

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

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

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

            docker pull wise2c/haproxy-k8s

            docker pull wise2c/keepalived-k8s

    保存镜像包:

            docker save wise2c/haproxy-k8s wise2c/keepalived-k8s -o /root/k8s-ha.tar

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

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

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

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

    下载启动脚本

           curl -L /root/start-haproxy.sh https://raw.githubusercontent.com/wise2ck8s/haproxy-k8s/master/start-haproxy.sh

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

           MasterIP1=192.168.9.11

           MasterIP2=192.168.9.12

           MasterIP3=192.168.9.13

           curl -L /root/start-keepalived.sh https://raw.githubusercontent.com/wise2ck8s/keepalived-k8s/master/start-keepalived.sh

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

           VIRTUAL_IP=192.168.9.30

           INTERFACE=ens33

    拷贝脚本至所有master节点:

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

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

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

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

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

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

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

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-17

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-18

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-19

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

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

           /root/start-haproxy.sh

          /root/start-keepalived.sh

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

    使用开源Breeze工具部署Kubernetes 1.12.1高可用集群-20

    验证:

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    在此感谢为此项目付出辛勤劳动的同事华相、Ann、Alan。我们将持续为此项目做出改进贡献给社区。

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论