纵观混合云平台及解决方案,无非分两大类。一类是基于Kubernetes构建的;另一类是不基于Kubernetes构建的。不管是多大规模的企业,属于哪种类型的企业,只要你想在本地或者异地基础设施上实现与公有云的连接与集成,就一定绕不开与Kubernetes相关的问题。而在解决这个问题之前,我们先来了解下,Kubernetes和混合云之间到底是怎样一种关系?
Kubernetes和混合云之间的各种关系
作为开源容器编排工具,Kubernetes本身就是一个混合云平台,用户可以按需在本地或者公有云基础设施上进行部署,管理运行在容器中的应用。不仅如此,Kubernetes还在混合云架构中发挥了一个最关键的作用,那就是它提供了一种统一的方式来部署和管理应用,让应用无论在哪个基础设施上,都能拥有一致性体验。不管是公有云、私有云还是托管的数据中心,都能进行统一部署。并且,由于Kubernetes可以同时管理跨多种基础设施类型的应用,可以让用户的公有云、私有云以及托管数据中心实现跨平台管理。
由于Kubernetes能给混合平台管理带来各种好处,所以很多厂商都在以Kubernetes为核心构建混合云解决方案。比如:谷歌的Anthos、VMware的Tanzu、AWS的EKS Anywhere等等。那么,不以Kubernetes作为底层资源管理层的产品有哪些?最具代表性的是AWS Outposts和Azure Stack,他们把许多公有云服务从他们各自的平台扩展到内部基础设施部署,比如基于云计算的虚拟机和数据库,让用户在数据中心使用AWS或Azure云平台上的许多公有云服务成为可能,包括API调用和各种管理工具等。
Kubernetes选型由业务需求决定
那么,从用户应用的角度看,该如何选择呢?到底要不要基于Kubernetes构建混合云平台?非Kubernetes模式能带来更好的用户体验吗?答案是根据你的业务需求来选择!
是否要通过Kubernetes管理工作负载,要看你的应用部署在哪里。如果你选用的是 Anthos、Tanzu等云平台,你可以通过内嵌的Kubernetes来编排一切;但如果你选择的是AWS Outposts和Azure Stack这样的解决方案,可以使用CloudWatch、CloudTrail、CloudFormation等本地化的管理工具来部署和管理应用。当然,如果你只喜欢Kubernetes这种管理方式,而不想使用上述的任何云解决方案,你也可以选择基于Kubernetes的其他混合云平台。
除了应用部署问题,还要考虑应用被容器化的程度,Kubernetes可以像管理容器一样管理虚拟机,这点在 Tanzu和 Anthos中都能实现。但在Kubernetes中管理虚拟机总归有点奇怪,因为Kubernetes的设计初衷是为了编排容器,而虚拟机的启动和停止速度通常不像容器那样快,而且很少有人以容器的方式启动多个VM实例。如果你的工作负载主要由vm组成,那么使用不以Kubernetes为核心的混合云平台可能效果会更好。
另外,还有一个值得重点关注的问题是,我们对于Kubernetes是否能长远投资,必须持怀疑态度。现在,Kubernetes之所以很热,是因为谷歌和VMware都把它纳入到混合云的基础设施层;但毕竟Kubernetes只有7年的发展历程,很有可能会“昙花一现”。就像5、6年前的Docker,当初Kubernetes没出现的时候,几乎所有人把赌注都压在了Docker上。所以,技术创新永无止境,我们不能盲目追热,而是要冷静思考,充分考虑到应用的灵活性。
就目前应用现状来看,基于kubernetes的混合云平台一定比那些只依赖于云供应商提供的专有工具更灵活,比如:如果你使用的是Azure Stack,就很难迁移到AWS Anthos,但从Anthos迁移到Tanzu相对要容易得多。尽管不是无缝的,但两个平台都建立在统一的Kubernetes管理平台上。
小结:综合来看,不管你选不选择kubernetes做混合云管理平台,其实都没有关系,只要能充分考虑到利弊,最终能满足你的业务需求,那就是一次成功的选型。