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

时间:2023-10-13 13:29:13

一、Breeze简介

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

二、环境准备

1.系统环境

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

#主机名称需要符合DNS命名规则,另外Harbor为必须组件,详细信息请参考官方文档

2.操作前准备

.master与master、master与node、breeze与集群所有主机直接需要ssh互信 #如果机器比较多,ssh互信建议使用脚本来分发秘钥
.开放防火墙或者关闭防火墙
.时间同步,配置时间同步服务
.集群内主机名可解析
5.VIP绑定的网卡名称需要一致

秘钥分发脚本

[root@k8s-deploy ~]# cat fenfa_sshkey.sh
#!/bin/bash
. /etc/init.d/functions
for ip in `cat iplist`
do
/usr/bin/expect fenfa_sshkey.exp ~/.ssh/id_rsa.pub $ip > /dev/null >&
if [ $? -eq ]; then
action "$ip" /bin/true
else
action "$ip" /bin/false
fi
done

fenfa_sshkey.sh-检查证书是否存在

[root@k8s-deploy ~]# cat fenfa_sshkey.exp
#!/usr/bin/expect
if { $argc != } {
send_user "usage: expect send_sshkey.exp file host\n"
exit
}
# define var 定义变量
set file [lindex $argv ]
set host [lindex $argv ]
set password "123\$56" #特殊字符需要转义 spawn ssh-copy-id -i $file $host
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof exit -onexit {
send_user "good bye...\n"
}

fenfa_sshkey.exp-确认命令是否存在

三、开始部署

1.安装docker-compose命令和docker(deploy上)

[root@k8s-deploy ~]# wget https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)  #注意版本
[root@k8s-deploy ~]# mv docker-compose-Linux-x86_64 docker-compose
[root@k8s-deploy ~]# chmod +x docker-compose
[root@k8s-deploy ~]# mv docker-compose /usr/bin/
[root@k8s-deploy ~]# yum install docker -y

2.下载breeze对应k8s版本的资源文件,并启动部署工具(项目地址 https://github.com/wise2c-devops/breeze)

[root@k8s-deploy ~]# wget https://raw.githubusercontent.com/wise2c-devops/breeze/v1.12.3/docker-compose.yml  #注意版本号
[root@k8s-deploy ~]# systemctl start docker
[root@k8s-deploy ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@k8s-deploy ~]# docker-compose up -d #启动部署工具,大概会下载1GB左右的文件
[root@k8s-deploy ~]# netstat -tnlp #查看88端口是否启动,没有问题就可以访问该端口,登录到web页面

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

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

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

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

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

点击该集群图标进入添加主机界面使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群
点击右上角“添加主机按钮”

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

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

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

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

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

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

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

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

再添加镜像仓库组件

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

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

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

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

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

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

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

备注:

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

接下来是设置高可用组件(haproxy+keepalived):

vip for k8s master 是指三个 k8s master 服务器的高可用虚拟浮动 IP 地址;网卡请填写实际操作系统下的网卡名,注
意请保证 个节点网卡名一致; router id 和 virtual router id 请确保不同 k8s 集群使用不同的值。

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

设置完成的界面如下:

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

点击下一步,执行部署流程:,在接下来的部署过程中,屏幕会有日志及图标颜色的动态变化, 耐心等待最后部署界面所有组件颜色变为绿色即可
结束 K8S 高可用集群的部署工作。

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

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

四、验证

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

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

五、其他

1.各组件yaml文件路径,其中/etc/kubernetes/manifests/下的组件表示将会被创建为static pod

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

2.influxdb存储问题

[root@k8s-master- kubernetes]# grep volumes: -A    ./influxdb.yaml
volumes:
- name: influxdb-storage
emptyDir: {}
---

influxdb默认使用的存储类型为emptyDir,意味着pod被重建之后数据会丢失,如果需要使用influxdb建议使用持久存储

3.Chrome浏览器无法访问dashboard问题

解决方法:https://www.cnblogs.com/panwenbin-logs/p/10052554.html  ,此文档中有关于相关问题的解决方法

#本文内容完全抄自官方文档