MacOS 系统使用 kubeasz 搭建 k8s 测试集群

Published: 2023-07-29

Tags: k8s

本文总阅读量

我在本地搭建,使用的 Multipass 创建的虚拟机,使用 kubeasz 先 Allinone 后添加节点的方式部署。

选择 kubeasz 是因为其通过了 CNCF 的一致性检验,同时有国内源使用起来更方便,另外中文文档对 k8s 初学者较为友好。

项目地址:https://github.com/easzlab/kubeasz

先行准备

本地需要有虚拟机,MacOS 系统可以通过 Multipass 创建。下载地址:https://github.com/canonical/multipass/releases/

使用可以参考这篇文章:《虚拟机管理工具 multipass 使用笔记》

构建机器

创建一个 2C2G 的虚拟机,用于部署 Master 节点。(focal 指代 20.02 Ubuntu 镜像,首次使用下载镜像较慢)

$ multipass launch --name allinone --memory 2G --cpus 2 --disk 30G --timeout 3600 focal

创建两个 Node 节点

$ multipass launch --name allinone-node1 --memory 2G --cpus 2 --disk 10G --timeout 3600 focal

$ multipass launch --name allinone-node2 --memory 2G --cpus 2 --disk 10G --timeout 3600 focal

创建后,可以使用以下命令登入系统执行命令

$ multipass shell allinone

部署 Master 节点

先使用 sudo -i 切换为 Root 用户

准备脚本

$ mkdir deploy && cd deploy

$ export release=3.6.0
$ wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
$ chmod +x ./ezdown

资源下载

部署前需要下载所需镜像、安装包等。

$ ./ezdown -D

海外环境:./ezdown -D -m standard

下载的内容存储在 /etc/kubeasz 目录

集群安装

# 容器化运行 kubeasz
$ ./ezdown -S

# 使用默认配置安装 aio 集群
$ docker exec -it kubeasz ezctl start-aio

如果安装失败,查看日志排除后,使用如下命令重新安装aio集群:docker exec -it kubeasz ezctl setup default all

测试验证

$ source ~/.bashrc
$ kubectl version         # 验证集群版本    
$ kubectl get node        # 验证节点就绪 (Ready) 状态
$ kubectl get pod -A      # 验证集群pod状态,默认已安装网络插件、coredns、metrics-server等
$ kubectl get svc -A      # 验证集群服务状态

清理及销毁集群

如果需要重新部署集群,可使用以下命令

$ docker exec -it kubeasz ezctl destroy default

添加 Node 节点

参考:https://github.com/easzlab/kubeasz/blob/master/docs/op/op-index.md

在 Master 节点查看路径(/etc/kubeasz/clusters/default/hosts` 可以看到集群名称为 default)

获取 Master 节点的公钥,以下命令均在 Master 节点执行,Master 节点同样是部署脚本运行的节点,确保你已经通过 sudo -i 切换为 root 用户

$ cat ~/.ssh/id_rsa.pub

将内容追加到两台 Node 节点机器的 ~/.ssh/authorized_keys 文件内

而后在 Master 节点运行命令添加节点,注意替换 IP,从节点的 IP 可以通过 multipss list 命令查看

# 新增节点
$ dk ezctl add-node default 192.168.64.13 k8s_nodename=worker-01
$ dk ezctl add-node default 192.168.64.14 k8s_nodename=worker-02

# 删除节点
$ dk ezctl del-node default 192.168.64.13
$ dk ezctl del-node default 192.168.64.14

备注:dk 命令指代 docker exec -it kubeasz

运行后查看节点状态

$ kubectl get node

安装插件

以上的步骤没有安装可选组件,无法看到指标,此处我们安装 Prom 可选插件。

$ vim /etc/kubeasz/clusters/default/config.yml
# 修改 prom_install: "yes"

# 下载镜像
$ /etc/kubeasz/ezdown -X prometheus

# 安装
$ dk ezctl setup default 07

补充:这里的 07 是安装步骤,指代 “setup other useful plugins”, 其它步骤可以通过 dk ezctl setup help 查看。default 指代集群名,默认的 Namespace

安装验证

$ kubectl get pod,svc -n monitor

(注意替换 IP)

访问 Prometheus 的 web 界面:http://192.168.64.12:30901

访问 Alertmanager 的 web 界面:http://192.168.64.12:30902

访问 Grafana 的 web 界面:http://192.168.64.12:30903 (默认用户密码 admin:Admin1234!)

其中,Grafana 已经集成了多项指标的面板

K8S 客户端(可选)

初步尝试,Lens 客户端功能和页面都还不错,且提供有个人免费版本。下载地址:https://k8slens.dev/

添加 Cluster 需要 kubeconfig 文件,可以使用命令获取其内容

cat ~/.kube/config

如果找不到,可以使用命令生成 kubectl config view --flatten > kubeconfig 它们的内容是相同的,将内容粘贴到 Lens 客户端

参考