Skip to content

Olares 安装流程详解

本文档从四个主要阶段详细说明 Olares 的安装流程,包括各阶段的底层命令、配置和逻辑。文档适用于希望深入了解安装过程的开发者和系统管理员。

四个安装阶段

Olares 的安装可分为以下四个阶段:

  • 预检(Precheck):验证系统环境是否满足 Olares 安装的所有前置条件。
  • 下载(Download):获取安装所需的所有文件、依赖项和容器镜像。
  • 准备(Prepare):配置操作系统和系统服务,为 Kubernetes 和 Olares 组件创建运行环境。
  • 安装(Install):部署 Kubernetes,集成 KubeSphere,并安装 Olares 的核心服务和应用程序。

预检阶段

预检阶段的重点是验证系统是否满足安装 Olares 的必要条件。通过运行 olares-cli olares precheck 命令执行一系列验证检查。若在此阶段发现任何问题,需在继续安装前解决。

关键预检项目包括:

  • 检查操作系统类型、版本号以及处理器架构是否兼容
  • 确保系统使用 Systemd 作为初始化进程
  • 验证 Olares 需要暴露的多个网络端口是否可用
  • 系统里是否存在与 Olares 冲突的容器运行时

下图是一个预检失败的示例:

Precheck

在此示例中,有两项检查失败:

  • Olares 所需的端口 9100 已被占用。
  • 系统中检测到已有容器运行时。

继续安装前必须解决这些问题。

下载阶段

下载阶段会下载 Olares 安装所需的 Wizard 文件、系统依赖组件和容器镜像。

下载 Wizard 文件

Wizard 文件是一个元数据包,包含所有 Olares 组件的下载链接和配置信息。Wizard 文件是此阶段首个被获取的文件,为后续的下载提供了关键信息。

Wizard 文件会被默认解压存储至 $HOME/.olares/versions/<version> 目录。

其中:

  • $HOME/.olares 是 Olares 的基础安装目录,
  • <version> 是 Olares 版本号,如示例中的 1.12.0-20241215
脚本输出示例
bash
  ~ ./install.sh
the KUBE_TYPE env var is not set, defaulting to "k3s"
olares-cli already installed and is the expected version

downloading installation wizard...

current: root
2024-12-17T18:01:19.501+0800        [Job] [Download Installation Wizard] start ...
2024-12-17T18:01:19.501+0800        [Module] GreetingsModule
Greetings, Olares
2024-12-17T18:01:19.502+0800        [A] ubuntu: Greetings success (611.77µs)
2024-12-17T18:01:19.502+0800        [Module] DownloadInstallWizard
/home/keven/.olares/versions/v1.12.0-20241215/.env
/home/keven/.olares/versions/v1.12.0-20241215/wizard/config/account/Chart.yaml

下载安装所需组件与容器镜像

Wizard 下载完成后,脚本会下载 Olares 所需的所有依赖组件和容器镜像。保存路径如下:

  • 依赖包:$HOME/.olares/pkg
  • 容器镜像:$HOME/.olares/image

这种存储结构支持在多个版本之间复用稳定组件,避免重复下载。

脚本输出示例
bash
downloading installation packages...

current: root
2024-12-17T19:41:36.847+0800        [Job] [Download Installation Package] start ...
2024-12-17T19:41:36.847+0800        [Module] GreetingsModule
Greetings, Olares
2024-12-17T19:41:36.848+0800        [A] ubuntu: Greetings success (512.711µs)
2024-12-17T19:41:36.848+0800        [Module] GenerateOlaresUninstallScript
2024-12-17T19:41:36.879+0800        [A] LocalHost: GenerateOlaresUninstallScript success (31.279866ms)
2024-12-17T19:41:36.879+0800        [Module] PackageDownloadModule
2024-12-17T19:41:36.879+0800        checking local cache ...
2024-12-17T19:41:44.614+0800        5 out of 177 files need to be downloaded
2024-12-17T19:41:44.615+0800        (1/5) downloading package olaresd, file: olaresd-v0.0.50.tar.gz
2024-12-17T19:41:51.814+0800        (2/5) downloading image calico/kube-controllers:v3.23.2, file: 521564c4b60ae73c78899b7b40ae655e.tar.gz
...

准备阶段

准备阶段配置操作系统环境,以支持 Kubernetes、容器镜像和 Olares 系统服务。

此阶段包括以下主要任务:

  • 配置系统
  • 配置容器运行时
  • 安装系统守护进程

配置系统

安装脚本会配置 Linux 环境以满足 Olares 的要求,这些配置包括:

  • 调整 DNS、NTP 和 SSH 服务,确保网络功能和时间同步正常。
  • 通过 apt 安装基本依赖(如 curl、net-tools、gcc、make)。
脚本输出示例
bash
preparing installation environment...

current: root
2024-12-17T19:46:39.517+0800        [Job] [Prepare the System Environment] start ...
2024-12-17T19:46:39.517+0800        [Module] PreCheckOs
2024-12-17T19:46:39.517+0800        [A] LocalHost: PreCheckSupport success (29.999µs)
2024-12-17T19:46:39.517+0800        [A] LocalHost: PreCheckPortsBindable success (144.035µs)
2024-12-17T19:46:39.517+0800        [A] LocalHost: PreCheckNoConflictingContainerd success (31.009µs)
2024-12-17T19:46:39.517+0800        [A] ubuntu: PatchAppArmor skipped (7.677µs)
2024-12-17T19:46:39.517+0800        [A] ubuntu: RaspbianCheck success (5.796µs)
2024-12-17T19:46:39.517+0800        [A] ubuntu: CorrectHostname success (5.363µs)
nameserver
nameserver
2024-12-17T19:46:41.921+0800        [A] ubuntu: DisableLocalDNS success (2.40336625s)
2024-12-17T19:46:41.921+0800        [INFO] installing and configuring OS dependencies ...
2024-12-17T19:46:41.921+0800        [Module] InstallDeps
Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 http://hk.archive.ubuntu.com/ubuntu jammy InRelease
...

配置容器运行时

容器运行时是运行容器化应用程序的关键组件。在这一步中,安装脚本将:

  • 安装并启动之前下载的依赖组件
  • 在系统上安装 containerd 并启动服务
  • 将下载好的容器镜像导入至 containerd
脚本输出示例
bash
2024-12-17T19:47:37.510+0800        [Module] InstallContainerModule(k3s)
2024-12-17T19:47:37.518+0800        [A] ubuntu: ZfsMountReset skipped (7.321811ms)
2024-12-17T19:47:37.525+0800        [A] ubuntu: CreateZfsMount skipped (7.322591ms)
2024-12-17T19:47:38.188+0800        [A] ubuntu: SyncContainerd success (662.643982ms)
2024-12-17T19:47:38.368+0800        [A] ubuntu: SyncCrictlBinaries success (179.758334ms)
2024-12-17T19:47:38.399+0800        [A] ubuntu: GenerateContainerdService success (31.410118ms)
2024-12-17T19:47:38.451+0800        [A] ubuntu: GenerateContainerdConfig success (52.047108ms)
2024-12-17T19:47:38.505+0800        [A] ubuntu: GenerateCrictlConfig success (53.760209ms)
2024-12-17T19:47:38.857+0800        [A] ubuntu: EnableContainerd success (352.128078ms)
2024-12-17T19:47:38.857+0800        [Module] PreloadImages
2024-12-17T19:47:41.665+0800        (1/145) imported image: rancher/mirrored-pause:3.6, time: 194.363948ms
...

安装系统守护进程

接着是安装并启动 Olares 系统守护进程 olaresd,用于监控系统并自动执行维护任务。

脚本输出示例
bash
024-12-17T19:52:31.862+0800        [A] ubuntu: GenerateOlaresdEnv success (23.829684ms)
2024-12-17T19:52:31.862+0800        template OlaresdService result: [Unit]
Description=olaresd
After=network.target
StartLimitIntervalSec=0

[Service]
User=root
EnvironmentFile=/etc/systemd/system/olaresd.service.env
ExecStart=/usr/local/bin/olaresd
RestartSec=10s
LimitNOFILE=40000
Restart=always

[Install]
WantedBy=multi-user.target

2024-12-17T19:52:31.885+0800        [A] ubuntu: GenerateOlaresdService success (23.050958ms)
2024-12-17T19:52:32.033+0800        [A] ubuntu: EnableOlaresdService success (147.987242ms)
...

安装阶段

安装阶段将所有组件整合起来,并完成最终环境配置。

在此阶段,脚本会执行以下关键任务:

  • 部署 Kubernetes。
  • 集成 KubeSphere,实现云原生管理与可观测性。
  • 配置 Olares 账户。
  • 部署并启动内置应用和服务。

部署 Kubernetes

Kubernetes 是 Olares 系统的核心调度组件。在此步骤中,安装脚本会执行以下操作:

  1. 启动 etcd 数据库。
  2. 启动并配置 K3s。
  3. 安装用于集群网络通信的容器网络界面(CNI) 插件。
  4. kubeconfig 文件复制到当前用户目录,以便通过 kubectl 与集群进行交互。

由于 K3s 轻量且易用,Olares 默认使用它作为 Kubernetes 的发行版。如果你有高级或自定义的配置需求,也可以选择安装完整的 Kubernetes。

在 macOS 环境下,脚本会使用 minikube 部署集群,并跳过上述步骤。

脚本输出示例
bash
[certs] Generating "ca" certificate and key
[certs] admin-ubuntu serving cert is signed for DNS names [etcd etcd.kube-system etcd.kube-system.svc etcd.kube-system.svc.cluster.local lb.kubesphere.local localhost ubuntu] and IPs [127.0.0.1 ::1 192.168.1.16]
[certs] member-ubuntu serving cert is signed for DNS names [etcd etcd.kube-system etcd.kube-system.svc etcd.kube-system.svc.cluster.local lb.kubesphere.local localhost ubuntu] and IPs [127.0.0.1 ::1 192.168.1.16]
[certs] node-ubuntu serving cert is signed for DNS names [etcd etcd.kube-system etcd.kube-system.svc etcd.kube-system.svc.cluster.local lb.kubesphere.local localhost ubuntu] and IPs [127.0.0.1 ::1 192.168.1.16]
2024-12-17T19:52:36.957+0800        [A] LocalHost: GenerateETCDCerts success (263.237575ms)
2024-12-17T19:52:37.263+0800        [A] ubuntu: SyncCertsFile success (306.213676ms)
2024-12-17T19:52:37.264+0800        [A] ubuntu: SyncCertsFileToMaster skipped (20.351µs)
2024-12-17T19:52:37.264+0800        [Module] InstallETCDBinaryModule
2024-12-17T19:52:37.698+0800        [A] ubuntu: InstallETCDBinary success (434.014395ms)
2024-12-17T19:52:37.728+0800        [A] ubuntu: GenerateETCDService success (30.732882ms)
2024-12-17T19:52:37.728+0800        [A] ubuntu: GenerateAccessAddress success (23.491µs)
2024-12-17T19:52:37.728+0800        [Module] ETCDConfigureModule
2024-12-17T19:52:37.728+0800        [A] ubuntu: ExistETCDHealthCheck skipped (9.903µs)
2024-12-17T19:52:37.753+0800        [A] ubuntu: GenerateETCDConfig success (24.125665ms)
2024-12-17T19:52:37.773+0800        [A] ubuntu: AllRefreshETCDConfig success (20.321235ms)
2024-12-17T19:52:40.048+0800        [A] ubuntu: RestartETCD success (2.274541565s)
2024-12-17T19:52:40.068+0800        [A] ubuntu: AllETCDNodeHealthCheck success (20.251062ms)
2024-12-17T19:52:40.094+0800        [A] ubuntu: RefreshETCDConfigToExist success (26.207599ms)
2024-12-17T19:52:40.129+0800        [A] ubuntu: AllETCDNodeHealthCheck success (34.462881ms)
2024-12-17T19:52:40.129+0800        [Module] ETCDBackupModule
2024-12-17T19:52:40.185+0800        [A] ubuntu: BackupETCD success (56.639923ms)
2024-12-17T19:52:40.230+0800        [A] ubuntu: GenerateBackupETCDService success (44.727929ms)
2024-12-17T19:52:40.273+0800        [A] ubuntu: GenerateBackupETCDTimer success (42.839457ms)
2024-12-17T19:52:40.396+0800        [A] ubuntu: EnableBackupETCDService success (122.621074ms)
2024-12-17T19:52:40.396+0800        [Module] InstallKubeBinariesModule
2024-12-17T19:52:41.188+0800        [A] ubuntu: SyncKubeBinary(k3s) success (791.866964ms)
2024-12-17T19:52:41.218+0800        [A] ubuntu: GenerateK3sKillAllScript success (30.442837ms)
2024-12-17T19:52:41.253+0800        [A] ubuntu: GenerateK3sUninstallScript success (34.802683ms)
2024-12-17T19:52:41.268+0800        [A] ubuntu: ChmodScript(k3s) success (14.640733ms)
2024-12-17T19:52:41.268+0800        [Module] K3sInitClusterModule
2024-12-17T19:52:41.334+0800        [A] ubuntu: GenerateK3sService success (66.556896ms)
2024-12-17T19:52:41.379+0800        [A] ubuntu: GenerateK3sServiceEnv success (44.492752ms)
2024-12-17T19:52:41.414+0800        [A] ubuntu: GenerateK3sRegistryConfig success (34.814475ms)
2024-12-17T19:52:46.511+0800        [A] ubuntu: EnableK3sService success (5.097800474s)
2024-12-17T19:52:46.572+0800        [A] ubuntu: CopyKubeConfig success (60.33887ms)
...

集成 KubeSphere

Olares 会基于 Kubernetes 安装 KubeSphere,以增强系统的管理和可观测性。主要特性包括:

  • 系统监控与告警
  • 资源和工作区管理
  • 命名空间和自定义资源定义(CRD)管理

配置账户

Olares ID 在 LarePass 应用中创建。在这一步中,安装脚本会提示输入以下信息,以便后续使用 LarePass 激活 Olares:

  • Olares 域名: Olares 提供默认域名 olares.comolares.cn 。如果你已将自定义域名添加到 Olares Space,也可以在此步骤中输入自定义域名。
  • Olares ID: 输入 Olares ID 中的用户名部分。

完成此步骤后,系统会为你创建一个用于登录 Olares 的账户,并完成相关的访问和权限配置。

脚本输出示例
bash
Enter the domain name ( olares.cn by default ):
2024-12-17T20:58:15.690+0800        using Domain Name: olares.cn

Enter the Olares ID (which you registered in the LarePass app): marvin113
2024-12-17T20:58:52.584+0800        using Olares Local Name: marvin113
2024-12-17T20:58:52.584+0800        using Olares ID: marvin113@olares.com
2024-12-17T20:58:52.584+0800        using password: 2uO5PZ2X

安装系统应用

安装的最后一步会通过 Helm 部署 Olares 系统的核心服务与用户应用:

  • 核心系统服务(在 os-system 命名空间中):包含备份(Velero)、存储(OpenEBS)、Redis、Nats、MinIO 等关键组件。
  • 用户应用(在user-space-xxx 命名空间中):包含文件管理器、桌面、设置等系统应用。

安装过程中,日志中会显示如 [helm] app installed success 以及一系列 xxx created 的提示,表示对应的 Helm Chart 或 Kubernetes 资源安装成功。

脚本输出示例
bash
2024-12-17T19:53:18.382+0800        [A] ubuntu: InitKsNamespace success (2.678362348s)
2024-12-17T19:53:18.382+0800        [Module] DeploySnapshotController
customresourcedefinition.apiextensions.k8s.io/volumesnapshotclasses.snapshot.storage.k8s.io created
customresourcedefinition.apiextensions.k8s.io/volumesnapshotcontents.snapshot.storage.k8s.io created
customresourcedefinition.apiextensions.k8s.io/volumesnapshots.snapshot.storage.k8s.io created
2024-12-17T19:53:18.924+0800        [helm] app installed success        {"NAME": "snapshot-controller", "LAST DEPLOYED": "Tue Dec 17 19:53:18 2024", "NAMESPACE": "kube-system", "STATUS": "deployed", "REVISION": 1}
2024-12-17T19:53:18.924+0800        [A] ubuntu: CreateSnapshotController success (541.656132ms)
2024-12-17T19:53:18.924+0800        [Module] DeployRedis
secret/redis-secret created
2024-12-17T19:53:19.057+0800        [A] ubuntu: CreateRedisSecret success (133.123121ms)
2024-12-17T19:53:19.189+0800        [A] ubuntu: BackupRedisManifests success (132.045425ms)
2024-12-17T19:53:19.339+0800        [A] ubuntu: DeployRedisHA success (149.251633ms)
local (default)   openebs.io/local   Delete          WaitForFirstConsumer   false                  31s
local (default)   openebs.io/local   Delete   WaitForFirstConsumer   false   31s
2024-12-17T19:53:19.971+0800        [helm] app installed success        {"NAME": "redis", "LAST DEPLOYED": "Tue Dec 17 19:53:19 2024", "NAMESPACE": "kubesphere-system", "STATUS": "deployed", "REVISION": 1}
...

完成安装

待所有组件部署成功后,脚本会输出包含激活向导页面 URL 的汇总信息:

bash
2024-12-17T21:00:58.086+0800        [INFO] Installation wizard is complete
2024-12-17T21:00:58.086+0800        [INFO] All done

------------------------------------------------

2024-12-17T21:00:58.086+0800        Olares is running at:
2024-12-17T21:00:58.086+0800        http://192.168.1.16:30180

2024-12-17T21:00:58.086+0800        Open your browser and visit the above address
2024-12-17T21:00:58.086+0800        with the following credentials:

2024-12-17T21:00:58.086+0800        Username: marvin113
2024-12-17T21:00:58.086+0800        Password: 2uO5PZ2X

此时,执行以下操作以完成安装:

  1. 打开浏览器并输入提供的 URL。
  2. 使用初始密码登录激活向导。
  3. 按照屏幕提示完成激活流程。

完成激活后,你就可以开始使用 Olares 了。

了解更多