Docker3个开源项目,使Kubernetes更容易

Posted Charles杂谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker3个开源项目,使Kubernetes更容易相关的知识,希望对你有一定的参考价值。


如上图的文字,Everyone's excited about Kubernetes,每个人都对Kubernetes表示出了极大的兴趣,而且很多公司也都在试水Kubernetes,但是Kubernetes的实施也没有那么的一帆丰顺,其本身的实施和管理比较复杂,对很多技术人员来讲还是有一定的门槛,所以出现了Heptio,Kubed和Kubicorn这样的开源配套工具,填补Kubernetes的空白,如集群状态管理,快照,灾备方面的功能。

正文

Kubernetes是一个重要而且优雅的容器解决方案。 Kubernetes允许我们弹性的运行容器化应用程序,而不需要陷入到技术细节中,如负载均衡(Load Balance),网络化,应用程序的高可用性保证,或管理更新和回滚。如此多复杂的问题被Kubernetes隐藏起来,无需用户关注。

但是使用Kubernetes也并不是没有挑战,开始使用Kubernetes还是有不少工作要做的,而且Kubernetes的很多管理和维护任务也会有很大的困难。

Kubernetes的发展非常快速和活跃,我们不能指望主干项目能立即解决每个问题。由于某种原因,Kubernetes团队没有对其中的一些问题足够关注,幸运的是,Kubernetes周围的社区正在寻找解决这些问题的方法。

这里有三个新的Kubernetes的周边项目出现了,这些新项目旨在使容器编排更容易部署,维护,协作,监控。

Heptio

Kubernetes的两位创建者从谷歌离职创办了Heptio公司,该公司的使命就是让Kubernetes更易于使用。Heptio没有发行自己的Kubernetes版本,而是更愿意像这个领域的其他厂商一样,致力于提供开源工具来加强与原版和上游版本的Kubernetes的体验。

本月初,Heptio发布了其首个项目,Heptio Ark和Heptio Sonobuoy。Ark是Kubernetes集群的灾难恢复系统,一种能生成快照,备份和恢复基于容器的应用程序的方法。Ark记录了Kubernetes API对象和持久卷(PV)磁盘的状态。默认示例是使用的S3兼容存储服务(“Minio”),Ark还可以利用所有主要的云提供商(Amazon Web Services,Google Cloud Platform和Microsoft Azure)上的存储空间。

Ark还没有提供一个完整的解决方案来在已有的多个环境之间迁移Kubernetes集群。为此,Heptio表示,Ark以后将需要支持在云提供商之间迁移持久卷快照,这一功能现在还没有完成。

另一个项目是Sonobuoy,Sonobuoy会检查给定的Kubernetes安装任务,看看是否可以通过Kubernetes发行版本的测试。

Kubernetes部署通常由供应商或用户进行大量修改,可能会使它们与官方的更新不兼容,Sonobuoy的工作是发现这些变化是否造成不兼容。集群的状态也可以被转储并用于诊断报告,Sonobuoy运行的测试的类型可以通过插件的方式进行丰富扩展。

尽管如此,Sonobuoy还处于发展的早期阶段,因为它还没有对在Kubernetes自己的一致性测试中识别出来的所有问题进行检查,Sonobuoy的长期计划是与核心的Kubernetes团队创建的测试套件保持紧密的同步。

Kubed

AppsCode是容器化应用协作编码平台的制造商,最近发布了一个项目,帮助填补了管理Kubernetes集群的许多空白。

Kubed(发音“Cube-dee”,是“Kubernetes守护进程”的简称),将一大堆有用的功能集成到一个守护进程中。 Kubed可以执行定期集群快照,为已删除的对象提供临时存储(以防需要再次使用),执行自动事件转发,通过各种渠道发送通知,等等。

Kubernetes还可以在Elasticsearch或InfluxDB的实例中存储日志数据,但清理旧数据是用户的责任。还有一个Kubed的功能是janitors,用于自动执行这个清理旧数据的过程,可以自动的在指定的时间之后清除日志数据。 Kubed还不支持执行这种清理的预执行(dry run)功能,但是已经开了一个issue任务来添加这个功能。

Kubed项目目前处于alpha版本,还是一个不稳定的版本,未来计划有许多突破性的变化。其中一项功能是支持Kubernetes最近推出的自定义资源定义(CRD),并通过Kubernetes用户API服务提供Kubed API(Kubernetes提供允许合作伙伴的应用扩展它的API集)。

https://github.com/appscode/kubed

Kubicorn

Kubicorn项目旨在帮助用户在各种云服务中构建和管理Kubernetes的基础设施。 Kubicorn喜欢Puppet和其他用于管理基础设施的现代化工具,它采用了声明性的理念:用户描述了他们想要在其集群中看到的状态,Kubicorn确保集群的状态与该目标保持同步。

Kubicorn旨在作为一个独立工具和作为其他工具可以调用的库。同样的道理,Kubicorn利用了Kubernetes的现有工具,例如kubeadm工具。因此,Kubicorn旨在补充现有的工作流程,而不是替代它们。

Kubicorn的主要实现方法是使用快照技术。 Kubicorn的运行方式是允许用户定义其集群的状态,以原子方式应用该状态(如果操作失败则进行回滚操作),并将该状态捕获为快照。那些快照也可以用于新的部署。

请注意,Kubicorn不是官方的Kubernetes项目,它仍然被认为是实验性的,不应该用于生产环境。

https://github.com/kris-nova/kubicorn

尾声

当然,体验Kubernetes的时机已经成熟了,你是不是想带上Kubicorn,Kubed和Heptio一起完成Kubernetes之旅呢。

Serdar Yegulalp 是 InfoWorld的高级编辑, 专注于 InfoWorld技术新闻分析博客撰写和定期评论.




以上是关于Docker3个开源项目,使Kubernetes更容易的主要内容,如果未能解决你的问题,请参考以下文章

开源对于云原生至关重要的5个原因

golang有没有好的开源游戏框架

Kubernetes in Action 3 pod:运行于Kubernetes中的容器

Kubernetes in Action 3 pod:运行于Kubernetes中的容器

Kubernetes in Action 3 pod:运行于Kubernetes中的容器

云原生是什么?重要吗?