跳转到内容
开源

个人使用:在小型服务器上安装

只有自己使用时,用 KubeSolo 在 1.5 GiB 内存的服务器上安装 Kubernetes 和组件,也可以勾选 Zeabur Builder,再在自己的电脑上用 zeaburctl ui 打开 Zeabur。

只有自己使用时,installer 可以改用 KubeSolo。服务器上只有 Kubernetes 和组件,不运行 Zeabur 面板和 Zeabur Identity。要使用 Zeabur,在自己的电脑上运行 zeaburctl ui,用服务器提供的 kubeconfig 连接。

个人使用和团队使用有什么区别

Section titled “个人使用和团队使用有什么区别”
个人使用团队使用
KubernetesKubeSoloK3s 或 RKE2
内存1.5 GiB 起4 GiB 起
如何打开 Zeabur在自己的电脑上运行 zeaburctl ui打开服务器上的 Zeabur 网址,用通行密钥登录
成员和权限没有。拿到 kubeconfig 的人可以控制整个集群Zeabur Identity 账号和项目角色
项目之间的网络不隔离。KubeSolo 不执行网络策略用网络策略隔离
节点只有这一台可以继续添加节点
组件Ingress 和证书,也可以勾选 Zeabur Builder(含 zot)Catalog 的全部组件
数据库有有

个人版默认不安装 Zeabur Builder 和 zot(存放构建结果的镜像仓库),因此只能部署现成的容器镜像。要从 Git 或文件夹构建,安装时勾选 Zeabur Builder,zot 会一并安装。这两个组件需要额外使用约 300 MiB 内存,服务器内存不足 1800 MiB 时,安装程序不允许勾选。

个人版也没有成员和权限。Zeabur Identity 签发的登录凭证,需要 kube-apiserver 用 --authentication-config 加载配置后才能识别,KubeSolo 目前没有开放这项配置(portainer/kubesolo#231)。因此只能用服务器提供的 kubeconfig 连接,拿到这份 kubeconfig 的人可以控制整个集群,不适合多人或多个团队共用。

服务器报告的内存不足 2700 MiB 时,安装程序只接受个人使用。以后要供团队使用,无法直接升级,需要重新安装,服务器报告的内存至少要有:

不装 Zeabur Builder装 Zeabur Builder
K3s2700 MiB3900 MiB
RKE23500 MiB4800 MiB

Zeabur Builder 本身要占内存,还要留出一次构建的空间。内存不够时,安装程序照样安装为团队使用,但不装 Zeabur Builder,VictoriaMetrics 和 VictoriaLogs 也一样。内核为崩溃转储(kdump)保留的内存不计入报告的内存,用不到的话可以关掉,安装程序检查服务器时会给出命令。

  • 使用 systemd 的 Linux,架构为 amd64 或 arm64。
  • 具备 root 权限。
  • 内存至少 1.5 GiB。
  • /var/lib/kubesolo 至少有 10 GiB 可用空间。
  • TCP 端口 80、443、6443、10250、10443 未占用。
  • 未安装 RKE2、K3s、kubeadm、k0s 或 MicroK8s。
  • 未安装 Docker,也没有运行 Docker。Docker 默认会丢弃转发的数据包,导致副本无法连接外部网络,也无法申请证书。installer 检测到 Docker(可执行文件、服务、socket),或防火墙转发策略为 DROP 时会停止,请先停止并移除 Docker 再安装。

自己的电脑需要安装 zeaburctl,并且能连接服务器的 TCP 6443 端口。Windows 请在 WSL 中使用 Linux 版的 zeaburctl。

installer 固定 KubeSolo、helm-controller 和 kubectl 的版本,下载后校验 SHA-256。helm-controller 的镜像用 digest 指定。安装组件的 Job 镜像只能指定标签,Job 运行结束后,installer 会校验 Job 实际使用的 digest,不匹配就停止。

按在一台服务器上安装 Zeabur 的说明打开安装界面。在“检查服务器”的“给谁用”中选择“自己用”,安装流程会省去“连接方式”这一步。

“检查服务器”的“给谁用”选择了“自己用”,上方只剩四个步骤

服务器报告的内存不足 2700 MiB 时,“团队用”不可选,只能选择“自己用”。

内存只有 1.5 GiB 的服务器,“团队用”不可选,并提示这台服务器内存不足

先处理未通过的检查项。如果服务器安装了 Docker,“Docker”会提示需要修正,请先停止并移除 Docker,再点击“重新检查”。检查项未全部通过时,即使进入“确认”也无法点击“安装”。

“检查服务器”显示 Docker 检查未通过,提示需要先停止并移除 Docker

在“选择组件”中,Ingress 和证书默认选中。要从 Git 或文件夹构建,勾选“Zeabur Builder”,zot 会一并安装。

“选择组件”中勾选了 Zeabur Builder,上方显示内存估算

内存不足时,Zeabur Builder 不可选,旁边会注明所需内存。

在内存为 1.5 GiB 的服务器上,Zeabur Builder 不可选,旁边注明至少需要 1,800 MiB

在“确认”中核对内容后,点击“安装”。

以 root 权限创建 /etc/zeabur-installer/config.yaml:

use: personal

先查看安装步骤,再安装:

sudo zeabur-installer plan
sudo zeabur-installer apply

要从 Git 或文件夹构建,添加 enable: [builds],zot 会一并安装。要使用数据库,添加 enable: [databases]。其他字段见 Installer 配置。

安装完成后,网页界面的“集群已就绪”和终端都会列出两行命令。在自己的电脑上运行,将 <服务器> 替换为服务器地址,<名称> 为服务器的主机名:

ssh <你>@<服务器> sudo cat /etc/zeabur-installer/kubeconfig.yaml > ~/.kube/<名称>.yaml
KUBECONFIG=~/.kube/<名称>.yaml zeaburctl ui --context <名称>

“集群已就绪”列出复制 kubeconfig 和打开 Zeabur 的两行命令

kubeconfig 中的 API 地址由服务器自行选择。如果自己的电脑需要用其他地址或域名连接,修改文件中的 server:,并将同一地址或域名添加到配置文件的 host.tlsSan,再运行一次 apply。

安装 Zeabur Builder 后,在自己的电脑上使用同一份 kubeconfig,上传文件夹进行构建:

KUBECONFIG=~/.kube/<名称>.yaml zeaburctl up --context <名称> --project <项目> --service <服务>

文件夹通过端口转发传到服务器上的 zot,构建在服务器上运行,结果存回 zot,节点从 zot 拉取镜像。installer 会将 zot 的证书交给节点的 containerd,并将 zot 的地址和证书写入 kube-public 中的 ConfigMap zeabur-info,zeaburctl 从中读取。未勾选 Zeabur Builder 时,zeaburctl up 会提示集群没有 Builder,不会上传任何内容。

安装完成后,无需再运行 installer。集群中的内容都能用 kubectl 管理:

  • KubeSolo 是 systemd 服务 kubesolo,配置文件位于 /etc/kubesolo/config.yaml,用 journalctl -u kubesolo 查看日志。
  • 每个组件对应 kube-system 中的一个 HelmChart,由 helm-controller 安装。用 kubectl get helmcharts -n kube-system 列出,修改配置时修改对应的 HelmChart。
  • 安装记录保存在 kube-system 的 ConfigMap zeabur-installer 中,仅供 doctor 读取。

installer 完成的操作也可以手动完成:按 KubeSolo 的说明安装 KubeSolo,用 kubectl apply 应用 helm-controller 的 release manifest,再为每个组件创建 HelmChart。手动安装时还需要修改两处,否则 HelmChart 会不断重新安装:

  • KubeSolo 的 webhook 会在 Job 的 nodeSelector 里加上节点,helm-controller 发现 Job 有变动,就会删除并重建。installer 让 systemd 在 KubeSolo 每次启动后运行 /usr/local/libexec/zeabur-kubesolo-webhook,从 MutatingWebhookConfiguration webhook.kubesolo.io 的规则中移除 Job。这个脚本用 kubectl 等待规则出现,并持续监控一分钟;如果 KubeSolo 重写规则,就再次移除,不读取系统日志。副本和卷仍由同一个 webhook 指定节点。
  • helm-controller release manifest 中的 klipper-helm 版本过旧,安装完成后不会标记配置的哈希值,导致 helm-controller 不断升级同一个 chart。installer 将 DEFAULT_JOB_IMAGE 替换为 k3s 搭配同版 helm-controller 使用的 rancher/klipper-helm:v0.13.3-build20261021。
sudo zeabur-installer doctor

这会检查 KubeSolo、每个组件和 Catalog 为组件提供的健康检查,以及默认存储类,也会提醒这台服务器没有隔离。安装了 Zeabur Builder 时,还会检查 Zeabur Builder 是否正在运行,以及 containerd 信任的证书是否为 zot 当前使用的证书。退出码与团队版相同,见检查安装结果。

sudo zeabur-installer uninstall 不会删除任何内容,只会输出移除命令。要连同应用和卷一起删除,依次运行:

sudo systemctl disable --now kubesolo
sudo rm -f /etc/systemd/system/kubesolo.service /usr/local/bin/kubesolo /usr/local/libexec/zeabur-kubesolo-webhook /etc/apparmor.d/cri-containerd.apparmor.d
sudo systemctl daemon-reload
sudo reboot

停止服务后,容器及其挂载点仍然存在,需要重启服务器才能清除。重启后再删除数据:

sudo rm -rf /var/lib/kubesolo /etc/kubesolo /var/lib/zeabur-installer /etc/zeabur-installer