Table of Contents
- 前言
- 项目总览
- kubernetes-reading-notes
- Eagle
- velero-volume-controller
- gin-apiserver
- cluster-coredns-controller
- sample-container-runtime
- registry-notification-server
- DemoOs
- registry-sync-tools
- crds-code-generation-tools
- registry-pressure-measurement-tools
- GSEAsyncServer
- Conclusion
前言
本文对自研的github项目进行了一个概括性的介绍,包括功能和使用场景,希望项目能更多地被认识和推广
项目总览
项目名称 | 语言 | 功能 | 使用场景 |
---|---|---|---|
kubernetes-reading-notes | go | 云原生阅读笔记 | 帮助学习以Kubernetes为核心的云原生技术栈 |
Eagle | go | 自研P2P镜像分发解决方案 | P2P镜像分发 |
velero-volume-controller | go | 云原生备份还原工具Velero Restic Integration控制器 | 帮助自动给Pod打annotation,协助velero restic的工作 |
gin-apiserver | go | 基于gin的apiserver开发框架 | 根据此框架可以快速开发云原生apiserver |
cluster-coredns-controller | go | 基于coredns的分布式域名解决方案 | 自动同步tkestack中的所有集群,并构建coredns域名,实现流量分布式访问 |
sample-container-runtime | go | 自研云原生容器运行时 | 试图构建一个云原生时代的容器运行时范例 |
registry-notification-server | go | 基于docker distribution event notification protocol实现的endpoint server | 完成了镜像Repository&Tag查询,日志查询以及镜像迁移功能,适合与上层平台集成 |
DemoOs | Assembly | 多任务demo os | 提供了一个多任务的demo os范例,是内核入门的不二选择 |
registry-sync-tools | shell | 云原生镜像迁移工具 | helm chart部署,实现从github上拉取镜像列表,并定期同步镜像的功能 |
crds-code-generation-tools | go | CRDs template以及clientset生成工具 | 提供了一个简单易用的工具(在原生codegen基础上包装了一层),用于生成CRDs template以及相关代码 |
registry-pressure-measurement-tools | python | 镜像仓库压测工具 | 基于openstack压测方案二次定制的镜像压测工具,适用于用少数机器压测docker distribution的场景 |
GSEAsyncServer | go | 自研轻量级异步任务处理框架 | 提供一个简单且高效的轻量级异步任务处理框架,可以单独使用,也可以简单改造作为一个子模块进行集成 |
还有一些其它的项目,这里不一一列举了。本文主要对上述项目展开介绍
kubernetes-reading-notes
kubernetes-reading-notes主要以源码分析为主,实践总结为辅:
- 源码:分析了Kubernetes核心组件:kube-apiserver,kube-scheduler,kube-controller,kubelet以及kube-proxy。另外会展开分析与kubernetes核心组件密切关联的其它项目,例如:etcd,container-runtime以及golang等
- 实践:会不定期上传云原生实践的一些文档,例如:K8s&云原生技术开放日(深圳站)- harbor企业级方案设计与落地实践,腾讯云十年乘风破浪直播 - Kubernetes集群高可用&备份还原概述,自研镜像P2P分发系统-Eagle分享
通过本项目可以更加深层次的理解以Kubernetes为核心的云原生技术栈
Eagle
镜像P2P主要用于解决大规模容器分发场景下的镜像拉取性能问题,目前主流的开源解决方案有Dragonfly(Alibaba)以及Kraken(Uber), 这两种解决方案各有优缺点,设计模式也各有不同:
- Dragonfly:采用supernode中心控制设计模式,所有的peer数据传输任务都由supernode负责调度,整个集群将管理集中在supernode组件
- Kraken:采用随机分散设计模式,Tracker组件只负责管理所有peer的连接信息(包括各个peer拥有的数据),而实际的数据传输流程则交由各个peer自行协商决定
Eagle充分参考了Dragonfly,Kraken以及FID的原理和特性。 在上述项目基础上去掉了一些不必要特性,保留了最核心的组件和功能,精简而实用
目前Eagle
支持如下特性: