Olares 安装流程详解
本文档从四个主要阶段详细说明 Olares 的安装流程,包括各阶段的底层命令、配置和逻辑。文档适用于希望深入了解安装过程的开发者和系统管理员。
四个安装阶段
Olares 的安装可分为以下四个阶段:
- 预检(Precheck):验证系统环境是否满足 Olares 安装的所有前置条件。
- 下载(Download):获取安装所需的所有文件、依赖项和容器镜像。
- 准备(Prepare):配置操作系统和系统服务,为 Kubernetes 和 Olares 组件创建运行环境。
- 安装(Install):部署 Kubernetes,集成 KubeSphere,并安装 Olares 的核心服务和应用程序。
预检阶段
预检阶段的重点是验证系统是否满足安装 Olares 的必要条件。通过运行 olares-cli olares precheck
命令执行一系列验证检查。若在此阶段发现任何问题,需在继续安装前解决。
关键预检项目包括:
- 检查操作系统类型、版本号以及处理器架构是否兼容
- 确保系统使用
Systemd
作为初始化进程 - 验证 Olares 需要暴露的多个网络端口是否可用
- 系统里是否存在与 Olares 冲突的容器运行时
下图是一个预检失败的示例:
在此示例中,有两项检查失败:
- Olares 所需的端口
9100
已被占用。 - 系统中检测到已有容器运行时。
继续安装前必须解决这些问题。
下载阶段
下载阶段会下载 Olares 安装所需的 Wizard 文件、系统依赖组件和容器镜像。
下载 Wizard 文件
Wizard 文件是一个元数据包,包含所有 Olares 组件的下载链接和配置信息。Wizard 文件是此阶段首个被获取的文件,为后续的下载提供了关键信息。
Wizard 文件会被默认解压存储至 $HOME/.olares/versions/<version>
目录。
其中:
$HOME/.olares
是 Olares 的基础安装目录,<version>
是 Olares 版本号,如示例中的1.12.0-20241215
。
脚本输出示例
➜ ~ ./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
这种存储结构支持在多个版本之间复用稳定组件,避免重复下载。
脚本输出示例
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)。
脚本输出示例
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
脚本输出示例
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,用于监控系统并自动执行维护任务。
脚本输出示例
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 系统的核心调度组件。在此步骤中,安装脚本会执行以下操作:
- 启动 etcd 数据库。
- 启动并配置 K3s。
- 安装用于集群网络通信的容器网络界面(CNI) 插件。
- 将
kubeconfig
文件复制到当前用户目录,以便通过kubectl
与集群进行交互。
由于 K3s 轻量且易用,Olares 默认使用它作为 Kubernetes 的发行版。如果你有高级或自定义的配置需求,也可以选择安装完整的 Kubernetes。
在 macOS 环境下,脚本会使用 minikube 部署集群,并跳过上述步骤。
脚本输出示例
[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.com
和olares.cn
。如果你已将自定义域名添加到 Olares Space,也可以在此步骤中输入自定义域名。 - Olares ID: 输入 Olares ID 中的用户名部分。
完成此步骤后,系统会为你创建一个用于登录 Olares 的账户,并完成相关的访问和权限配置。
脚本输出示例
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 资源安装成功。
脚本输出示例
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 的汇总信息:
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
此时,执行以下操作以完成安装:
- 打开浏览器并输入提供的 URL。
- 使用初始密码登录激活向导。
- 按照屏幕提示完成激活流程。
完成激活后,你就可以开始使用 Olares 了。