1 Star 0 Fork 47

weihao/KubeOS

forked from openEuler/KubeOS 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

KubeOS

在云计算场景中,容器和 Kubernetes 的应用日益广泛。然而,当前容器和操作系统(OS)独立管理的方式常常面临功能冗余,以及两套调度系统难以协同的问题。此外,OS 的版本管理也存在诸多挑战:相同版本的 OS 在使用过程中会因安装、更新或删除不同的软件包而逐渐产生差异,导致版本分裂。同时,OS 与业务紧耦合,造成大版本升级难度较高,进一步增加了运维复杂性。

KubeOS 是专为以容器形式运行业务的场景设计的一种轻量级操作系统。通过 Kubernetes 的 CRD(自定义资源定义)与 Operator 扩展机制,KubeOS 将 OS 作为 Kubernetes 的一个组件接入,使 OS 和业务处于同等地位。用户可通过 Kubernetes 集群统一管理节点上的容器和节点的 OS,从而实现一套系统同时管理容器与 OS。

KubeOS 的组件利用 Kubernetes Operator 扩展机制来控制容器 OS 的升级流程,支持对 KubeOS 的整体原子化升级。这种升级方式在升级前会将业务迁移到未升级的节点上,从而最大程度减少升级和配置过程对业务的影响。同时,通过原子化升级保持 OS 始终与预期状态同步,确保集群内 OS 的版本一致性,有效避免版本分裂问题。

架构

以下链接可协助您使用KubeOS:

特性介绍

升级

与传统的包管理器逐一升级软件包不同,KubeOS 在升级时会通过预制的完整根分区文件系统镜像实现全量升级。升级流程包括从 HTTP 服务器或容器镜像仓库下载升级镜像,并将新的根分区文件系统覆盖到备用的 root 分区。随后,节点从备用 root 分区启动,完成操作系统的全量升级。

此外,KubeOS 支持一键回滚至上一版本的操作系统。通过切换至备用分区启动,快速恢复节点的 OS 状态。

  • os-operator: 部署在 Master 节点的 OS 自定义资源控制器,负责管理集群内所有节点 OS 的升级、回滚以及配置请求的下发。
  • os-proxy: 部署在每个节点上的 OS 控制器,将针对该节点的升级、回滚和配置请求转发至 os-agent。
  • os-agent: 部署在每个节点 OS 的 systemd 服务,负责执行具体的升级、回滚和配置任务。

更多详细信息,可见升级指导

配置

KubeOS 通过 Kubernetes 下发 OS 自定义资源,实现对集群内所有容器 OS 的统一配置管理。目前支持以下配置类型:

  • 内核参数(临时/持久化)
  • 内核启动参数
  • pam_limits
  • KubeletConfiguration
  • containerd

更多详细信息,可见配置指导

Admin运维容器

为了保持系统的轻量化,KubeOS 可不安装 SSH 服务(sshd)。在必要情况下,管理员可以通过部署 Admin 容器到目标节点,SSH 登录到容器内,再切换到节点主机命名空间,完成运维操作。

Admin 容器内可以安装丰富的调试工具,从而在主机命名空间下调用容器内的命令完成调试和检测任务。

更多详细信息,可见Admin容器镜像制作部署和使用

dm-verity静态完整性保护

KubeOS当前基于dm-verity+安全启动实现对rootfs的完整性保护,安全启动用于保护roothash完整性。

更多详细信息,可见dm-verity介绍

镜像制作

KubeOS 支持制作多种类型的镜像,包括:

  • 普通虚拟机镜像
  • PXE 物理机镜像
  • 升级容器镜像
  • 启用 dm-verity 特性的虚拟机镜像

目前支持 x86 和 aarch64 架构,默认使用UEFI引导模式,部分支持 legacy 引导模式。

您可以通过以下命令创建 KubeOS 镜像:

make rust-agent
cargo run --package kbimg -- create -f KubeOS-Rust/kbimg/kbimg.toml <IMG-TYPE>

更多详细信息,可见镜像制作指导

Roadmap

即将到来

  • 2025:
    • Pod热迁移:提供用户无感、业务中断时间短的Pod热迁移解决方案

当前进展

  • 2024:

    • 灵活、多维度的运维策略:分组分批次升级,基于时间窗升级的升级策略
    • KubeOS 镜像定制化制作:支持用户根据需求制作定制化镜像
    • 更强安全能力:支持安全启动和dm-verity
    • 更丰富的配置管理:支持统一管理节点containerdkubelet配置
  • 2023:

    • 支持容器镜像(containerd)升级
    • 新增settings配置功能
    • 新增Admin容器功能
    • 内存底噪优化:降低os-proxy和os-agent内存底噪80%
  • 2022:

    • 支持物理机安装、升级
    • 支持容器镜像(docker)升级
  • 2021:

    • KubeOS发布
    • 支持ARM架构

How to Contribute

我们非常欢迎新贡献者加入到项目中来,也非常高兴能为新加入贡献者提供指导和帮助。您可以通过issue或者合入PR来贡献

Licensing

KubeOS 使用 Mulan PSL v2.

空文件

简介

Kubernetes Operating System simplifies OS updating 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/weihao306/KubeOS.git
git@gitee.com:weihao306/KubeOS.git
weihao306
KubeOS
KubeOS
master

搜索帮助