作为容器集群管理技术的最流行的技术,kubernetes,自从2014在github上开源后,已经通过多个项目形成了一个生态,以下是从用户角度对这些项目做一个基本的认知
kubernetes
主项目,实现了容器集群的调度管理,并以restful接口的形式暴露出来,可以认为是云操作系统的的内核
apimachinery
客户端和主项目共同依赖的一个库,开发者使用
dashboard
官方Web界面,降低用户使用难度
test-infra
测试工具
frakti
用于驱动hyper启动独立内核的虚拟机 容器,达到内核级别隔离,比docker方式更安全,代价是资源消耗更多外加操控不方便
minikube
单机上快速启动kubernetes,之所以有这个项目是因为kubernete本身的安装部署是针对大型系统的,在单机上没有docker那么方便
helm
helm可以认为是kubernete上解决安装容器之间互相依赖的工具
charts
charts是helm包的服务端定义
client-go
客户端SDK
ingress
用于动态连接外部LB并提供服务
kubeadm
这是文档项目,kubeadm是用来在各种异构IaaS上安装kubernetes的
dns
在容器集群上提供dns服务
release
用于在各个操作系统上发布安装包
node-problem-detector
节点问题探测器,本身是kubernetes的一个应用
kube-state-metrics
对集群监控数据状态的加工并再次处理
heapster
监控数据转发项目
kops
又一个kubernete在云上的安装工具,看来安装果然是一大痛点
简单点评
目前整个社区明显是采用了集市方式而非大教堂的方式来开发,主项目内部概念内聚,外部各种项目蓬勃发展,外围项目中又以kubernetes系统的IaaS部署、监控、图形化、应用依赖管理这四者的项目关注度和贡献度最高,也是用户的痛点所在,目前社区获得的关注度很高,但在端到端的用户体验上还有很长的路要走。