Appearance
Kuboard-Spary
基于 kubespray (opens new window)提供图形化的 K8S 集群离线安装、维护工具。
官网
KuboardSpray | https://kuboard-spray.cn/
兼容性
操作系统的兼容性取决于 资源包,最新资源包 支持的操作系统有: Ubuntu、Anolis、CentOS、RedHat、OracleLinux、Rocky Linux、Kylin Linux Advanced Server、openSUSE Leap 等
安装Kuboard-Spray
找一台不低于1核2G,不少于10G剩余磁盘空间,已经安装好 docker 的服务器,执行如下指令,即可完成 KuboardSpray 的安装:
离线安装时,在可以联网的机子上拉取对应镜像
bash
[root@manage ~]# docker load -i kuboard-spray-v1.2.4-amd64.tar
0eba131dffd0: Loading layer [==================================================>] 75.16MB/75.16MB
6bf5922392b8: Loading layer [==================================================>] 3.584kB/3.584kB
b7ec1bdadac9: Loading layer [==================================================>] 376.1MB/376.1MB
a1116a8b0eba: Loading layer [==================================================>] 164.5MB/164.5MB
63e1f35eb2b6: Loading layer [==================================================>] 2.048kB/2.048kB
57ad3256d2a2: Loading layer [==================================================>] 2.56kB/2.56kB
befa9dce28ec: Loading layer [==================================================>] 479.2MB/479.2MB
ed17f8e2e740: Loading layer [==================================================>] 86.53kB/86.53kB
06d40503cfc3: Loading layer [==================================================>] 24.06kB/24.06kB
eefc133193fd: Loading layer [==================================================>] 23.55kB/23.55kB
2d2497260679: Loading layer [==================================================>] 7.68kB/7.68kB
0f14582253f2: Loading layer [==================================================>] 7.517MB/7.517MB
c0d05ade22b8: Loading layer [==================================================>] 258.6kB/258.6kB
b5f895fc864b: Loading layer [==================================================>] 18.94kB/18.94kB
c2d721dd7251: Loading layer [==================================================>] 17.19MB/17.19MB
5b5b9f1e937e: Loading layer [==================================================>] 16.38MB/16.38MB
de00719b1631: Loading layer [==================================================>] 4.096kB/4.096kB
3462c7be3056: Loading layer [==================================================>] 24.7MB/24.7MB
Loaded image: eipwork/kuboard-spray:v1.2.4-amd64启动kuboard-spray容器
bash
docker run -d \
--privileged \
--restart=unless-stopped \
--name=kuboard-spray \
-p 80:80/tcp \
-e TZ=Asia/Shanghai \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/kuboard-spray-data:/data \
eipwork/kuboard-spray:latest-amd64
# 如果是 arm64 环境,请将标签里的 amd64 修改为 arm64,例如 eipwork/kuboard-spray:latest-arm64
# 如果抓不到这个镜像,可以尝试一下这个备用地址:
# swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-spray:latest-amd64常见问题
- KuboardSpray 的信息保存在容器的
/data路径,请将其映射到一个安全的地方,上面的命令中,将其映射到了~/kuboard-spray-data路径;- 只要此路径的内容不受损坏,重启、升级、重新安装 Kuboard-Spray,或者将数据及 Kuboard-Spray 迁移到另外一台机器上,都可以找回到原来的信息
登录kuboard-spray
在浏览器地址栏中输入 http://这台机器的IP地址,输入用户名 admin,默认密码 Kuboard123,即可登录 kuboard-spray 界面
正常可以访问到此页面,输入用户名 admin,默认密码 Kuboard123

加载资源包
离线资源的拉取
点击资源包列表,点击离线导入

在弹出的框框内点击离线导入,选择对应的镜像源,按照步骤二的第1点拉取镜像并保存,上传到目标机器,在目标机器执行步骤二的第3点,记录步骤三的yaml信息

加载资源包
点击添加集群安装计划

新环境点击添加资源包—>确定(添加资源包)

在线安装直接选择导入
离线安装在其他有网的机子,拉取对应离线镜像包/自己制作对应镜像包,然后点击离线导入

权限问题:
- 导入资源包时,可能会碰到
no such file or directory或者permission denied之类的错误提示,通常是因为开启了 SELinux,导致 kuboard-spray 不能读取映射到容器/data的路径离线导入:
- 如果处在内网环境,上图中的列表默认将是空的,请注意其中的
离线加载资源包按钮,它可以引导轻松完成资源包的离线加载过程。- 离线导入所需的yaml信息,记得随离线资源一起带走
将离线包导入【离线需操作】
bash
[root@manage ~]# docker load -i kuboard-spray-resource-spray-v2.21.0c_k8s-v1.26.4_v4.4-amd64.tar
8d3ac3489996: Loading layer [==================================================>] 5.866MB/5.866MB
5623aeba2121: Loading layer [==================================================>] 456.2MB/456.2MB
d623e0c8461d: Loading layer [==================================================>] 195.5MB/195.5MB
3447235ba453: Loading layer [==================================================>] 397.5MB/397.5MB
bd33c99c3d79: Loading layer [==================================================>] 496.2MB/496.2MB
f3dc33297d56: Loading layer [==================================================>] 6.788MB/6.788MB
da94e024bd20: Loading layer [==================================================>] 48.84MB/48.84MB
fe2bac659d0c: Loading layer [==================================================>] 7.168kB/7.168kB
35bf8d78d459: Loading layer [==================================================>] 7.168kB/7.168kB
a25e06ce9733: Loading layer [==================================================>] 114.7kB/114.7kB
Loaded image: eipwork/kuboard-spray-resource:spray-v2.21.0c_k8s-v1.26.4_v4.4-amd64将步骤三的yaml信息填到离线资源包的框框中


点击确认

等待完成,完成后离线包已导入

然后回到上一个页面点击任务已结束

顶上会提示已导入成功,这个页面也可以关闭了

安装集群
添加计划
回到最初的页面/回到首页,点击添加集群安装计划按钮,填写集群名称、选择资源包,点击确认
集群名称:这个名称保存后不可修改
资源包:选择已经导入的资源包,如果没有可尝试刷新,若刷新也没有可能是未导入成功

集群规划
点击添加节点
注意:
kuboard-spray 所在机器不能当做 K8S 集群的一个节点,因为安装过程中会重启集群节点的容器引擎,这会导致 kuboard-spray 被重启掉。

输入节点名称、选择节点角色,点击确认
注意点:
- 最少的节点数量是 1 个
- ETCD 节点、控制节点的总数量必须为奇数
- 在
全局设置标签页,可以设置节点的通用连接参数,例如所有的节点都使用相同的 ssh 端口、用户名、密码,则共同的参数只在此处设置即可- 在节点标签页,如果该节点的角色包含
etcd则必须填写ETCD 成员名称这个字段- 如果 KuboardSpray 所在节点不能直接访问到 Kubernetes 集群的节点,可以设置跳板机参数,使 KuboardSpray 可以通过 ssh 访问集群节点
- 集群安装过程中,除了已经导入的资源包以外,还需要使用 yum 或 apt 指令安装一些系统软件,例如 curl, rsync, ipvadm, ipset, ethtool 等,此时要用到操作系统的 apt 软件源或者 yum 软件源。
全局设置标签页中,可以引导完成 apt / yum 软件源的设置,可以:
- 使用节点操作系统已经事先配置的 apt / yum 源
- 在安装过程中自动配置节点的操作系统使用指定的软件源
- 如果使用 docker 作为集群的容器引擎,还需要在
全局设置标签页指定安装 docker 用的 apt / yum 源- 如果使用 containerd 作为容器引擎,则无需配置 docker 的 apt / yum 源,containerd 的安装包已经包含在 KuboardSpray 离线资源包中

在右侧输入对应信息,选择组件等,点击验证连接会测试与主机的连接性,成功会给出 对应的信息


保存信息
填写完后,点击保存

安装集群
点击安装/设置集群

默认即可,点击确认

会新开一个窗口输出安装日志

安装完成/失败后底下会有提示,右上角也会有结束的标志

回到原来的页面点击任务已结束

安装完后

在master节点,可查看节点信息
bash
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 4m24s v1.26.4
node1 Ready <none> 3m16s v1.26.4
可选组件取消了kuboard,可以按照自己的习惯,安装其k8s WEB管理工具,如dashboard、kuboard,如果需要kuboard完全可以在可选组件选择kuboard进行安装
当前安装方式,证书是一年的证书,每个月的第一个星期会进行滚动更新,至于滚动更新是依赖于
kuboard-spary,还是依赖于kuboard,暂时不确认
其他
查看污点
bash
# kubectl describe nodes <node-name> | grep Taints
# 如master节点
kubectl describe nodes master |grep Taints删除污点
bash
gameble-
# gameble就是污点名,后加减号就删掉了
kubectl taint nodes <node-name> <taint-name>:<effect>-
# 如master
kubectl taint nodes master gameble-