#kubernetes #nix #kube #nix-shell #crio

bin+lib kubernix

使用 Nix 包启动 Kubernetes 开发集群

2 个版本

0.1.1 2019 年 10 月 3 日
0.1.0 2019 年 10 月 3 日

#2366命令行工具

MIT 许可证

96KB
1.5K SLoC

CircleCI Docs master Docs release Coverage Dependencies Crates.io License MIT

使用 Nix 包启动 Kubernetes 开发集群

本项目旨在为您提供用于本地测试、实验和开发的单依赖项、单节点 Kubernetes 集群。

关于

你是否听说过 Nix,这个函数式包管理器?不用担心你没有听说过,你所需要知道的是,它为该项目提供了所有第三方依赖,并固定到特定的可重复版本。

KuberNix 本身是一个 Rust 助手程序,负责启动 Kubernetes 集群,传递正确的配置参数并跟踪运行中的进程。

包含内容

当前使用以下技术栈

应用程序  用途 版本
Kubernetes 集群编排 v1.15.4
CRI-O 容器运行时 v1.15.2
runc 容器运行时 v1.0.0-rc8
cri-tools CRI 操作工具 v1.15.0
CNI 插件 容器网络 v0.8.2
etcd 数据库后端 v3.3.13
CoreDNS Kubernetes DNS 支持 v1.6.4

还有一些其他工具没有在这里明确提到,例如用于证书生成的 CFSSL

单依赖项

如前所述,运行此项目只需要一个单依赖项:Nix。要设置 Nix,只需运行

$ curl https://nixos.org/nix/install | sh

请确保遵循脚本输出的说明。

入门指南

集群启动

要启动您的第一个集群,下载最新的发布二进制文件或通过以下方式构建应用程序

$ make build-release

现在,二进制文件应该位于项目的 target/release/kubernix 目录中。

成功检索二进制文件后,通过以 root 运行来启动 KuberNix

$ sudo kubernix

KuberNix 将负责设置 Nix 环境,下载所需的二进制文件并启动集群。默认情况下,它将在当前路径下创建一个名为 kubernix 的目录,其中包含集群所需的所有数据。

Shell 环境

如果一切顺利,您应该会进入一个新的 bash-shell 会话,如下所示

[INFO  kubernix] Everything is up and running
[INFO  kubernix] Spawning interactive shell
[INFO  kubernix] Please be aware that the cluster gets destroyed if you exit the shell
>

现在您可以通过 kubectl 等工具访问您的集群

> kubectl get pods --all-namespaces
NAMESPACE     NAME                       READY   STATUS    RESTARTS   AGE
kube-system   coredns-85d84dd694-xz997   1/1     Running   0          102s

不同运行组件的日志文件现在也保存在当前工作目录中。

> ls -1
crio.log
etcd.log
kube-apiserver.log
kube-controller-manager.log
kubelet.log
kube-proxy.log
kube-scheduler.log

如果您想要启动一个额外的shell会话,只需在初始引导相同的目录下运行 kubernix shell

$ sudo kubernix shell
[INFO  kubernix] Spawning new kubernix shell in 'kubernix-run'
> kubectl run --generator=run-pod/v1 --image=alpine -it alpine sh
If you don't see a command prompt, try pressing enter.
/ #

这意味着您可以启动任意数量的shell。

清理

如果您从初始进程的bash会话中退出,整个集群将被自动销毁。

> exit
[INFO  kubernix] Cleaning up

请注意,在KuberNix退出后,存储所有数据的目录不会被删除。这意味着您仍然可以访问日志和配置文件以进行进一步处理。

配置

KuberNix有一些配置选项,目前有

CLI参数 描述 默认
-r, --root 所有运行时数据存储的路径 kubernix-run
-l, --log-日志级别 日志详细程度 info
-c, --crio-cidr CRI-O CNI网络使用的CIDR 10.100.0.0/16
-u, --cluster-cidr 整个集群网络使用的CIDR 10.200.0.0/16
-s, --service-cidr 服务网络使用的CIDR 10.50.0.0/24

请确保CIDR不会与现有的本地网络冲突,并且您的设置可以访问互联网。

贡献

您想为这个项目做贡献吗?哇,谢谢!所以请先将其fork,并发送pull request给我。

依赖

~10–20MB
~276K SLoC