k0sproject/k0s
GitHub: k0sproject/k0s
k0s 是一个将完整 Kubernetes 打包为单个二进制文件的开源发行版,旨在以极低的系统要求和零主机依赖让任何人都能快速部署和管理生产级集群。
Stars: 6027 | Forks: 498
[](https://www.bestpractices.dev/projects/9994)
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fk0sproject%2Fk0s?ref=badge_shield)
[](https://github.com/k0sproject/k0s/actions/workflows/go.yml?query=branch%3Amain)
[](https://github.com/k0sproject/k0s/actions/workflows/ostests-nightly.yaml)

[](https://github.com/k0sproject/k0s/tags?label=Downloads)

 


## 概述
k0s 是一个开源的一体化 Kubernetes 发行版,它配置了构建 Kubernetes 集群所需的所有功能,并打包为单个二进制文件以易于使用。由于其简单的设计、灵活的部署选项和适度的系统要求,k0s 非常适合
- 任何云
- 裸金属
- 边缘和 IoT
k0s 极大地降低了安装和运行 CNCF 认证的 Kubernetes 发行版的复杂性。使用 k0s,可以在几分钟内引导出新的集群,并将开发者的阻力降至零。这使得任何没有 Kubernetes 特殊技能或专业知识的人都能轻松上手。
k0s 以单个二进制文件的形式发布,除了主机操作系统内核之外,对主机操作系统零依赖。它适用于任何 Linux,无需额外的软件包或配置。任何安全漏洞或性能问题都可以直接在 k0s 发行版中修复,这使得保持集群的最新状态和安全变得极其简单。
## 主要特性
- 100% 认证的上游 Kubernetes
- 多种安装方式:[单节点](docs/install.md)、[多节点](docs/k0sctl-install.md)、[离线](docs/airgap-install.md)和 [Docker](docs/k0s-in-docker.md)
- 使用 k0sctl 进行自动生命周期管理:[升级](docs/upgrade.md)、[备份和恢复](docs/backup.md)
- 适度的[系统要求](docs/system-requirements.md)(1 vCPU,1 GB RAM)
- 以单个二进制文件提供,除内核外无[外部运行时依赖](docs/external-runtime-deps.md)
- 灵活的部署选项,默认开启[控制平面隔离](docs/networking.md#controller-worker-communication)
- 可从单节点扩展到大型[高可用](docs/high-availability.md)集群
- 支持自定义 [Container Network Interface (CNI)](docs/networking.md) 插件(默认为 Kube-Router,提供预配置的 Calico 作为替代方案)
- 支持自定义 [Container Runtime Interface (CRI)](docs/runtime.md) 插件(默认为 containerd)
- 通过 [Container Storage Interface (CSI)](docs/storage.md) 支持所有 Kubernetes 存储选项
- 支持多种[数据存储后端](docs/configuration.md#specstorage):etcd(多节点集群默认)、SQLite(单节点集群默认)、MySQL 和 PostgreSQL
- 支持 x86-64、ARM64、ARMv7 和 RISC-V
- 包含 [Konnectivity 服务](docs/networking.md#controller-worker-communication)、CoreDNS 和 Metrics Server
## 入门指南
如果你想尝试 k0s,请直接查看我们的:
- [快速入门指南](https://docs.k0sproject.io/stable/install/) - 使用单节点创建一个完整的 Kubernetes 集群,包含 controller 和 worker。
- [使用 k0sctl 安装](https://docs.k0sproject.io/stable/k0sctl-install/) - 使用一条命令部署和升级多节点集群。
- [NanoDemo](https://docs.k0sproject.io/stable/#demo) - 观看关于如何创建 k0s 实例的 .gif 录屏。
- [在 Docker 中运行 k0s](https://docs.k0sproject.io/stable/k0s-in-docker/) - 在容器中运行 k0s controller 和 worker。
- 获取更多文档、教程和其他 k0s 资源,请参阅[文档主页](https://docs.k0sproject.io)。
## 加入社区
- [k8s Slack] - 从 k0s 社区获取支持和帮助。
- [GitHub Issues] - 通过 GitHub 提交你的问题和功能需求。
我们欢迎你的帮助来构建 k0s!如果你感兴趣,我们邀请你
查看[贡献指南]和[行为准则]。
### 社区交流时间
我们将定期举行社区交流时间。欢迎社区中的每个人过来提问、谈论项目和聊天。
目前已安排三个会议:
- 社区办公时间 - 东半球(欧盟时区)
- 社区办公时间 - 西半球(美国/美洲时区)
- 维护者会议 - 对所有人开放,但主要供维护者同步计划和工作
所有活动都发布在我们的公开[项目日历]中。
### 采用者
k0s 被用于各种不同的环境中,从小规模的远端边缘部署
到大型数据中心。分享你的用例并将你自己添加到
[采用者]列表中。
## 动机
_我们看到了主机操作系统与其上运行的 Kubernetes 之间存在着差距:如何确保它们在独立升级时能协同工作?谁对源于主机操作系统并影响其上 K8S 的漏洞或性能问题负责?_
**→** k0s 是完全独立的。它以单个二进制文件的形式发布,除了内核之外没有主机操作系统依赖。任何漏洞或性能问题都可能在 k0s Kubernetes 中被修复。
_我们看到 Kubernetes 具有繁琐的生命周期管理、极高的最低系统要求、奇怪的主机操作系统和基础设施限制,和/或需要使用不同的发行版来满足不同的使用场景。_
**→** k0 在设计上以轻量级为核心。它附带了一个用于自动化集群生命周期管理的工具。它适用于任何主机操作系统和基础设施,并且可以扩展以适用于任何使用场景,如边缘、IoT、电信、公有云、私有数据中心以及混合和超融合云应用,而无需牺牲纯正的 Kubernetes 兼容性或出色的开发者体验。
## 状态
k0s 已为生产环境做好准备(从 v1.21.0+k0s.0 开始)。自 k0s 于 2020 年 11 月首次发布以来,我们进行了多次发布,提高了稳定性,增加了新功能,最重要的是,我们倾听用户和社区的意见,致力于打造最现代的 Kubernetes 产品。积极的开发工作仍在继续,以使 k0s 变得更加完善。
## 范围
虽然有些 Kubernetes 发行版打包了所有甚至是不必要的东西,但 k0s 尝试将捆绑的“附加组件”数量降至最低。相反,我们的目标是为在各种设置中运行 Kubernetes 提供一个健壮且通用的“基础”。当然,我们将提供一些方法来轻松控制和设置各种“附加组件”,但我们不会将许多这些组件捆绑到 k0s 本身中。我们认为这是正确的方式,有以下几个原因:
- 许多附加组件(如 ingress、service mesh、存储等)都带有强烈的个人偏好。我们试图以更少的偏好来构建这个基础。:D
- 跟进包含许多外部附加组件的上游发版维护成本极高。附带旧版本也没有太大意义。
如果有足够充分的理由,我们可能会引入新的附加组件,但通常这些应该是 k0s“核心”所必需的东西。
## 构建
从源码构建 k0s 的要求如下:
- GNU Make(v3.81 或更高版本)
- POSIX shell
- coreutils
- findutils
- Docker
所有的编译步骤都在 Docker 容器内执行,无需
安装 Go。
k0s 二进制文件可以通过不同的方式构建:
“k0s”方式,自包含,所有二进制文件均从源码编译,静态
链接,包括内嵌的二进制文件:
```
make
```
“包维护者”方式,不构建和嵌入所需的
二进制文件。这假定必需的二进制文件将在运行时单独提供:
```
make EMBEDDED_BINS_BUILDMODE=none
```
Docker 构建集成默认开启。但是,在没有
Docker 的环境中,你可以使用主机系统上安装的 Go 工具链来构建 k0s,
而无需嵌入二进制文件。请注意,基于 glibc 的工具链无法
进行静态链接:
```
make DOCKER='' EMBEDDED_BINS_BUILDMODE=none BUILD_GO_LDFLAGS_EXTRA=''
```
请注意,k0s 构建系统目前不支持在没有 Docker 的情况下构建内嵌的
二进制文件。但是,可以使用 Docker 独立构建内嵌的
二进制文件:
```
make -C embedded-bins
```
构建可以并行执行:
```
make -j$(nproc)
```
## 冒烟测试
除了构建 k0s 的要求外,冒烟测试确实需要
本地安装 Go。你可以在终端中运行 `./vars.sh go_version`
来查找用于构建 k0s 的版本。它将相应的 Go 版本打印到
stdout。
要在构建后运行基本的冒烟测试:
```
make check-basic
```
标签:EVTX分析, Go语言, Hakrawler, k0s, NIDS, 云计算, 分布式系统, 单二进制文件, 响应大小分析, 子域名突变, 容器化, 容器编排, 开源发行版, 微服务架构, 提示注入, 日志审计, 混合云, 特权提升, 程序破解, 自动化部署, 规则引擎, 请求拦截, 轻量级云原生, 边缘计算, 运维工具, 集群管理, 零摩擦