探秘 k8e:极简 Kubernetes 发行版

TL;DR
本文介绍并安装体验了极简 Kubernetes 发行版,也顺便分析学习下编译的流程。
背景
k8e 本意为 kuber easy,是一个 Kubernetes 的极简发行版,意图让云原生落地部署 Kubernetes 更轻松。k8e 是基于另一个发行版 k3s ,经过裁剪(去掉了 Edge/IoT 相关功能、traefix 等)、扩展(加入 ingress、sidecar 实现、cilium 等)而来。
k8e 具有以下特性:
单二进制文件,集成了 k8s 的各种组件、containerd、runc、kubectl、nerdctl 等
使用 cilium 作为 cni 的实现,方便 eBPF 的快速落地
支持基于 pipy 的 ingress、sidecar proxy,实现应用流量一站式管理
只维护一个 k8s 版本,目前是 1.21
按照私有云的经验增加、优化代码
得益于这些特性,k8e 非常适合 CI、开发和企业级部署,单机版的集群适合技术验证环境。
安装测试
可以从 GitHub 上下载对应版本的二进制文件,也可以自己手动编译(后面对编译的流程进行了简单的分析)。
因为没有提供默认的 cni 实现,此时 pod 都处于 Pending 状态。需要手动安装 cilium:
通过 k8e check-config 可以找到 builddata 目录:/var/lib/k8e/data/5a7ced03412504a18bf3f49cbee5dafca7187d86ef8fdaa789448d53d7fbb823
cilium 安装成功后 Pod 成功运行,可以查看 cilium 状态:
或者执行 cilium connectivity test 进行检查网络。
上面是作为开发验证环境的部署,若要部署标准 Kubernetes,可以参考官方文档。
编译流程分析
k8e 的编译部署简单的两条命令就能完成:
执行 make generate 下载内置的几个工具:runc、nerdctl、cilium,保存在 bin 目录中。
.DEFAULT_GOAL 是 ci,执行 make 则会执行 target ci 。
Dapper
在 makefile 的第一行是 TARGETS := $(shell ls hack | grep -v \\.sh | grep -v package-airgap| grep -v clean) 定义了变量 TARGETS,然后 $(TARGETS): .dapper 为几个 target 指定前置条件。其中就有 ci,因此在执行 ci 之前会先执行 target .dapper。
target .dapper 用于下载 rancher dapper。dapper 是 Docker 的构建封装器,执行时会使用位于源码根目录 Dockerfile.dapper 构建镜像,并以此作为代码构建环境。
在 Dockerfile.dapper 中,会准备构建环境,以及几个需要关注的设置:
WORKDIR:/go/src/github.com/xiaods/k8e/,也就是容器的工作目录。dapper启动时会将源码内容拷贝到容器中ENTRYPOINT:["./hack/entry.sh"],容器启动的 entrypoint。CMD:["ci"],容器运行时的默认 CMDENVDAPPER_SOURCE:/go/src/github.com/xiaods/k8e/DAPPER_OUTPUT:./bin ./dist ./build/out,构建完成后,会执行docker cp ${DAPPER_SOURCE}/${DAPPER_OUTPUT} .将容器中的内容拷贝到容器外。...
dapper 下载完成后会执行 ci 的命令:./.dapper ci,根据 Dockerfile.dapper 的配置,启动后会执行 ./hack/entry.sh ci。
CI
CI 的流程与 k3s 的流程相比精简了很多。在 ./hack/ci 中,会依次执行:
./hack/validate:代码格式化、校验
./hack/build:代码编译
./hack/package:将前面下载、编译的
bin/目录下的二进制一同打包到同一个二进制文件中(使用 go-bindata)。./hack/binary_size_check.sh:二进制文件大小的检查,是否超过 81 M(k3s 的是 64M,由于加入了 cilium 等 cli,体积会有增加)。
版权声明: 本文为 InfoQ 作者【张晓辉】的原创文章。
原文链接:【http://xie.infoq.cn/article/887bfe51be48d213bb6bf79b5】。文章转载请联系作者。











评论