2 个版本
0.1.1 | 2019 年 10 月 3 日 |
---|---|
0.1.0 | 2019 年 10 月 3 日 |
#2366 在 命令行工具
96KB
1.5K SLoC
使用 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