从开发人员的角度来看,EKS与AKS与GKE
在2019年2月,就在AWS宣布将GA发行版的EKS加入Azure的AKS和GCP的GKE几个月之后,我就将这些服务进行了比较,作为第一版开源Kubernetes书的一部分。 从那时起,Kubernetes的使用激增,所有主要云提供商的托管Kubernetes产品都变得标准化。 根据Cloud Native Computing Foundation(CNCF)于2020年3月发布的最新调查,在AWS和GCP的托管Kubernetes服务中,Kubernetes的生产使用率从58%跃升至78%。
> Container Management Usage from CNCF 2019 Survey
根据我与Kubernetes的亲身经历,从2019年到现在,最显着的不同之处在于云之间的功能均等性。 GKE曾经享有的巨大领先优势已大大减少,在某些情况下已被其他提供商所超越。 由于有很多资源可以比较每种服务的提供和价格差异(例如,learnk8s.io,stackrox.com,parkmycloud.com),因此,在本文中,我将重点介绍在开发和生产中使用这些服务的个人经验。 。
亚马逊EKS
考虑到AWS在云上的主导地位,EKS和kops的大量使用量就不足为奇了。 现有AWS客户的明显优势是,只需对其他服务进行最少的修改即可将工作负载从EC2或ECS迁移到EKS。 但是,就托管Kubernetes功能而言,我通常发现EKS落后于GKE和AKS。 Github上有一个针对所有AWS容器服务(ECS,ECR,Fargate和EKS)的公开路线图,但我从AWS上获得的总体印象是推动更多的无服务器产品(例如Lambda,Fargate),而不是容器使用。
但这并不是说Amazon的支持并不出色,我也不认为EKS并不是Amazon的优先事项。 实际上,EKS提供了有财务支持的SLA来鼓励企业使用(2020年6月15日更新-从5/19/20开始,AKS还提供了有财务支持的SLA)。 由于EKS强制执行RBAC和Pod安全策略,因此在基本级别的安全性方面胜过GKE和AKS。 最后,既然GKE还在每个主节点管理上每小时收取$ 0.10的费用,那么使用预留实例和其他企业协议,这两个云之间的价格差异甚至可以忽略不计。
与许多其他AWS服务一样,EKS在配置集群方面提供了很大的灵活性。 另一方面,这种灵活性也意味着管理负担落在了开发人员身上。 例如,EKS为Calico CNI提供网络策略支持,但要求用户手动安装和升级它们。 Kubernetes日志可以导出到CloudWatch,但默认情况下处于关闭状态,并留给开发人员来部署日志记录代理来收集应用程序日志。 最后,升级也是由用户发起的,负责更新开发者身上的主服务组件(例如CoreDNS,kube-proxy等)。
> Deploying Worker Nodes is a Separate Step than Provisioning a Cluster — Image from AWS
EKS最令人沮丧的部分是创建实验集群的困难。 在生产中,以上大多数问题都可以通过Terraform或CloudFormation解决。 但是,当我只想创建一个小的集群来尝试新事物时,使用CLI或GUI往往要花一些时间,却意识到在此过程的后期我错过了设置或IAM角色。
在我们完善Terraform配置之前,我发现eksctl是创建可用于生产环境的EKS集群的最可靠方法。 eksworkshop网站还为常见的群集设置操作(例如部署Kubernetes仪表板,站立EFK堆栈进行日志记录以及与其他AWS服务(如X-Ray和AppMesh)集成)提供了出色的指南。
> eksctl — cli tool for EKS b WeaveWorks
总体而言,直到EKS在Kubernetes 1.14及更高版本中引入受管节点组之前,我发现EKS的管理负担相当重,尤其是在开始时。 AWS正在迅速赶上竞争者,但是EKS仍然不是新用户的最佳起点。
Azure AKS
出人意料的是,在为较新的Kubernetes版本提供支持方面,AKS超过了GKE(截至2020年6月,AKS的预览版为1.18,而GKE的预览版为1.17)。 同样,AKS仍然是唯一不对控制平面使用收费的服务。 像EKS一样,主节点升级必须由开发人员启动,但是EKS负责基础系统升级。
就个人而言,我没有在生产中使用AKS,因此我无法评论技术或运营方面的挑战。 但是,自2020年5月19日起,AKS不仅提供了财务支持的SLA(99.95%的可用区),而且还使其成为可选功能以允许无限的免费集群(2020年6月15日更新)。
尽管如此,Azure在从CNCF毕业时对Helm(微软收购了创建Helm的Deis的贡献)的贡献就体现了Azure对Kubernetes的持续投资。 随着Azure继续缩小与AWS的差距,我希望随着对社区关注的支持不断增加,AKS的使用量将会增加。
> Packaging Applications — CNCF Survey
Google Cloud GKE
尽管Google决定开始对非Anthos集群的控制平面使用收取费用的决定激起了开发人员社区的挫败感,但GKE在功能,支持和易用性方面无疑仍然是托管Kubernetes的王者。 对于不熟悉Kubernetes的新用户,GUI的创建集群以及通过Stackdriver进行默认日志记录和监视集成的经验使您轻松上手。
GKE还是唯一提供完全自动化的主节点和节点升级过程的服务。 通过引入群集维护窗口,可以在受控环境中以最小的开销进行节点升级。 节点自动修复支持还减轻了开发人员的管理负担。
与许多GCP产品类似,GKE出色的托管环境确实意味着定制可能很困难,甚至有时是不可能的。 例如,GKE默认情况下会安装kube-dns,要使用CoreDNS,您需要修改kube-dns设置。 同样,如果Stackdriver不适合您的日志记录和监视需求,则您必须卸载这些代理并自己管理其他日志记录代理。
尽管如此,我在GKE上的经历总体上还是令人愉快的,即使考虑到价格上涨,我仍然建议将GKE推荐给EKS和AKS。 GKE最令人兴奋的部分是基于托管Istio和Cloud Run的基于服务的服务数量不断增长。 托管服务网格和用于容器的无服务器环境将继续降低向云和微服务架构迁移的门槛。
尽管GCP在整体云市场份额方面落后于AWS和Azure,但它在2020年仍然在Kubernetes方面保持领先地位。
> Google Cloud Service Platform — GCP Blog
资源资源
- CNCF调查2019
- Kubernetes托管服务
- Kubernetes书
- 比较:Amazon,Azure和Google的托管Kubernetes服务
- EKS对GKE对AKS