本文章介绍通过Breeze(睿云智合Wise2c项目)Kubernetes图形化集群部署工具,来部署一套包括master节点、worker节点、etcd数据库、harbor镜像库、haproxy高可用、prometheus监控完整的K8S高可用集群。


适用的操作系统:

RHEL/CENTOS:7.4-7.8

Ubuntu 16/18


注意事项:

1. 请不要把Breeze所在的部署主机加入部署集群主机列表;

2. 为了避免包冲突,请使用纯净的CentOS Minimal版安装出来的OS或未经升级过的Ubuntu来部署集群;

3. 对于最小化安装的Ubuntu系统,默认python版本为3,没有安装python2,因此需要对所有Ubuntu被部署节点执行一条命令:

# ln -s /usr/bin/python3 /usr/bin/python   //创建软链接


实验拓扑图:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第1张图片

本次实验均使用Centos 7.8 2003 Minimal版部署


一. 实验环境准备:

6台虚拟机,需要注意每台虚机至少需要4G内存,配置如下:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第2张图片


1. Breeze delpoy部署机设置:

⑴ firewalld防火墙,设置为允许所有端口:

# firewall-cmd --set-default-zone=trusted
# firewall-cmd --reload
# firewall-cmd --list-all

⑵ 永久关闭selinux:

# sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
# init 6     //重启
# getenforce

⑶ 关闭SWAP:

# sed -i '/swap/s/UUID/#UUID/g' /etc/fstab
# swapoff -a
# swapon -s
# free -m  //swap各项状态为0,即为关闭

⑷ HOSTS:

# vim /etc/hosts
192.168.50.10	deploy
192.168.50.11	master01
192.168.50.12	master02
192.168.50.13	master03
192.168.50.14	worker01	
192.168.50.15	harbor

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第3张图片

⑸ SSH免密登录:

# ssh-keygen
# ssh-copy-id master01
# ssh-copy-id master02
# ssh-copy-id master03
# ssh-copy-id worker01
# ssh-copy-id harbor

⑹ scp hosts:

# scp /etc/hosts master01:/etc
# scp /etc/hosts master02:/etc
# scp /etc/hosts master03:/etc
# scp /etc/hosts worker01:/etc
# scp /etc/hosts harbor:/etc

⑺ 安装NTP服务器,服务端:

# yum install -y chrony
# vim /etc/chrony.conf

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第4张图片

# systemctl restart chronyd
# systemctl enable chronyd
# chronyc sources

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第5张图片

⑻ 安装docker:

# yum install -y docker
# systemctl restart docker ; systemctl enable docker

⑼ 安装docker-compose:

# yum install -y python3-pip
# pip3 install docker-compose

⑽ 下载breeze部署所需文件:

去github breeze项目下载所需部署文件:

https://github.com/wise2c-devops/breeze/releases

我这里部署是1.19.0,就下载所需相关附件,选择zip或tar.gz都可以:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第6张图片

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第7张图片

这里我下载tar.gz,并查看所需下载的镜像,选择阿里云yml源:

# tar -zxvf breeze-1.19.0.tar.gz
# cd breeze-1.19.0
# ls
# grep image docker-compose-aliyun.yml

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第8张图片

# docker pull registry.cn-shenzhen.aliyuncs.com/breeze-project/pagoda:v1.2.0
# docker pull registry.cn-shenzhen.aliyuncs.com/breeze-project/deploy-ui:v1.8
# docker pull registry.cn-shenzhen.aliyuncs.com/breeze-project/playbook:v1.19.0
# docker pull registry.cn-shenzhen.aliyuncs.com/breeze-project/yum-repo:v1.19.0
# docker pull registry.cn-shenzhen.aliyuncs.com/breeze-project/apt-source:v1.19.0
# docker images

9.png

为了方便以后可以离线部署,可以将下载好的镜像进行打包:

# docker save e4faab552b1e ed3d3fa98018 66abd7d1ea9e 3c88689c61a3 9e277012e2b5 > breeze-1.19.0_img.tar      //依次输入image id
# ls -lh breeze-1.19.0_img.tar     //查看打包好的镜像文件

10.png

如果需要离线导入镜像:

# docker load -i breeze-1.19.0_img.tar

⑾ 启动compose:

# cd breeze-1.19.0
# docker-compose -f docker-compose-aliyun.yml up -d
# docker ps -a   //查看部署的容器

11.png

至此,部署机已经完成配置。


2. 其他节点配置:

# firewall-cmd --set-default-zone=trusted
# firewall-cmd --reload
# firewall-cmd --list-all
# sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
# init 6
# getenforce
# sed -i '/swap/s/UUID/#UUID/g' /etc/fstab
# swapoff -a
# swapon -s

NTP客户端设置:

# yum install -y chrony
# vim /etc/chrony.conf      //将breeze deploy部署机ip作为服务器节点

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第9张图片

# systemctl restart chronyd ; systemctl enable chronyd
# chronyc sources

13.png

确保以上配置无误后,再进行yum源清理:

# rm -rf /etc/yum.repos.d/*



二. 通过Breeze图形化工具部署k8s集群:

在浏览器输入部署机ip地址+88端口:

192.168.50.10:88

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第10张图片


添加集群:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第11张图片


添加主机:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第12张图片


添加组件:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第13张图片

请按照图中顺序部署,不再赘述。


Breeze1.19.0部署Kubernetes1.19.0高可用集群_第14张图片


完成后,到master节点上,测试一下kubelet服务命令:

# kubectl get nodes
# kubectl get pods -n kube-system

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第15张图片

至此,完成所有部署。



三. 图形化工具登录方法:

  1. Kubernetes Dashboard:

https://任意服务器IP:30300

登录到master任意主机上获取token:

# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第16张图片

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第17张图片


2. Prometheus:

Grafana:

http://任意服务器IP:30902

默认用户:admin     默认密码:admin

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第18张图片

Prometheus:

http://任意服务器IP:30900

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第19张图片

Alertmanager:

http://任意服务器IP:30903

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第20张图片


3. Harbor镜像库:

http://192.168.50.15

默认用户:admin     默认密码:Harbor12345

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第21张图片

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第22张图片



四. 向集群增加worker nodes节点:

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第23张图片

Breeze1.19.0部署Kubernetes1.19.0高可用集群_第24张图片