kubernetes在容器编排大战中由于应用的可移植性以及支持混合云/多云部署方式上的灵活性。加上开放可扩展的理念,使得周边社区非常活跃。从既有调研结果看,kubernetes已成为容器编排领域的标准。但是它并不成熟,很多方面都大有可为,下面就是列举了一些方面:
1.集群联邦
kubernetes是一个集中式容器管理工具。横向上来说,集群管理工具还有分布式和共享式等。代表性的分布式容器管理工具如yarn与kubernetes的区别是yarn的一台宿主机作为一个master来进行容器管理。分配速度很快。kubernetes以集群为单位,资源分配更好一些。共享式管理谷歌内部的borg在用,据说是一种更先进的分配方式。
kubernetes作为目前最受欢迎的容器管理工具,因为存储等方面的瓶颈,在集群规模大时需要拆分成多个集群分开管理。为了更达到在多个集群时能和一个集群一样统一管理,业界又出来了一个集群联邦的概念。就是让底层的多个集群对外像一个集群一样工作。目前这个技术还不是很成熟,在这方面是大有可为的。
2.scheduler
kubernetes的scheduler模块做的并不是很好,所以有意愿给kubernetes提patch的同学从这部分入手,提的patch很容易被采纳,成为贡献者之一。
在实际大公司使用的使用。往往自己造轮子会重写这一部分。
3.etcd
kubernetes采用etcd做存储,直接造成了kubernets的容量瓶颈。所以很多公司都在这上面做了优化。阿里在etcd上加了一层tair缓存来使用。京东将etcd替换成了mysql。
4.dns
kubernetes的DNS大公司使用的也很少。因为一般大公司都有自己服务注册发现机制和命名规范。
5.VPA
kubernetes的pod级别自动扩容分成两个层次:横向扩容HPA和纵向扩容VPA,来扩容容器可使用的资源量。横向扩容HPA很好办,就是将容器缩掉,用更大配置再扩出来。纵向扩容VPA又称作原地升级,这个会麻烦。因为k8s容器本身就是一个docker进程。VPA就是进程不重启实现升级。
6.插件
kubernetes核心功能并不多,很多功能都是以插件的形式提供,并且用户可以实现接口来做成自己的插件。
7.容器编排
等上面这些都成熟了以后,kubernetes还有最大的问题。它为解决资源利用率而生。所以需要通过算法和AI层面进一步提高资源利用率。所以对go语言的学习、算法的学习是作为kubernetes相关的开发人员的必需技能。