查看原文
其他

当前 Kubernetes 发行版比较

在本文中,我们讨论了 Kubernetes 发行版的众多选项中的一些选项,以帮助您为您的场景中选择正确的选项。
对于原生 Kubernetes 构建和部署,我们有很多选择,例如 Google Kubernetes Engine (GKE)、AWS Elastic Kubernetes Services (EKS)Azure Kubernetes Service (AKS),或者第三方服务,例如 SpinnakerJenkins。大型企业依靠云优先战略进行数字化转型,选择与云无关的架构是理想的选择。在本文中,我们讨论了 Kubernetes 发行版的众多选项中的一些,但这并不是一个详尽的列表。本文主要深入了解采用云原生架构、各种 K8s 发行版,并为您的场景提供正确的选项。
在设计与云无关的架构时要牢记的一些最佳实践:
  • 将容器用于微服务(Docker 或 Kubernetes)——例如 GKE、EKS 或 AKS。
  • 使用 Terraform 模板等云中立解决方案在 GKE、EKS 或 AKS 中配置容器编排,而不是使用 ARM、CloudFormation 或 Deployment Manager 等本机解决方案,以便它足够灵活,适用于多云场景。
  • 尽可能自动化容器打包和部署。
  • 避免依赖单个供应商。
  • 使用在 AWS、Azure 或 GCP 云存储中加载的 Spring Boot 微服务。
  • 自动化配置(基础设施即代码)以减少云服务提供商对网络、存储和 API 配置的依赖。
  • 集成云原生目录和身份验证服务(例如,Cognito、Google Directory、Azure AD)。
  • 为微服务、构建、测试和部署模板化应用程序设置。
  • 使用本机 API 网关服务灵活地与任何 API 平台集成。

1、Docker Kubernetes 服务、OpenShift Kubernetes 引擎和 Pivotal Cloud Foundry 容器服务

将现有应用程序引入云环境容器化的过程中,将 Docker、Kubernetes 和 OpenShift 捆绑在一起提供了强大的架构选项。Docker 是轻量级的,易于设置,并且直接在应用程序节点上工作,而 Kubernetes 则在集群实例上工作,并被抽象为节点和 Pod 以部署多个运行时服务。
Docker Kubernetes 服务
DKS 使用经过认证的 Kubernetes 发行版和 Docker Enterprise 3.0,加速 Kubernetes 应用程序开发。您可以使用版本包构建 Kubernetes 应用程序,这些版本包在 Kubernetes 开发人员环境中运行并且可以与生产环境同步。
构建 Docker 实例的阶段
OpenShift 和 Pivotal Cloud Foundry 在私有云环境中很受欢迎,为灵活开发和部署可移植到公共云的容器化应用程序提供服务。OpenShift Kubernetes 集群有一个控制工作节点或应用程序节点的主节点。主节点包含集中功能,例如缓存、批处理作业调度、pod 配置和网关访问身份验证。同时,应用程序或工作节点将容纳应用程序工作负载,例如 Web 应用程序或数据库实例。每个应用程序节点可以有多个 pod。
OpenShift Kubernetes 服务
由于 Master 节点控制整个容器操作并帮助构建高可用性集群,因此它被称为 OpenShift Kubernetes Engine 的控制平面。每个节点都包含一个称为 a 的小型代理kubelet,它监视和管理在配置脚本确定的 pod 中运行的容器。每个 Kubernetes 实例都连接到一个 Web GUI 或仪表板,以帮助管理、监控集群中运行的应用程序节点并对其进行故障排除。OpenShift 容器架构还包括原生监控和日志服务。
至于 Pivotal Cloud Foundry,当大型企业规划云采用路线图时,他们往往会考虑快速失败或有多个短期目标。银行业企业尤其希望在云迁移过程中采取两种方法——首先,在从单体应用程序过渡到微服务时采用架构升级,或者采用具有容器化微服务解决方案的私有云,然后针对选定的应用程序迁移到公有云。使用 Pivotal Cloud Foundry 和 OpenShift 可降低迁移复杂性,并有助于创建精益、经济高效的基础实施。
Pivotal Cloud Foundry 容器服务的技术组件
Pivotal Cloud Foundry 具有多层架构,以运行时平台的服务组作为基础平台集成服务;应用程序框架服务,用户应用程序所在的位置;和公有云服务,它跨越多个应用程序。它还像任何其他公共云提供商一样支持存储服务。
它还为基于角色的访问、组件授权、应用程序网关身份验证和应用程序级安全过滤器的混合云解决方案和安全服务提供 API 集成灵活性。使用 Cloud Foundry 构建包的容器化很方便,可以用作不可知的服务,可以在以后轻松迁移到公有云作为提升和转移的解决方案。

2、谷歌 Kubernetes 引擎

当您必须使用 Kubernetes 部署 Dockerized 应用程序时,或者当您必须将增强的本机安全功能与容器编排或自愈容器快速混合以在运行状况检查和集群监控期间进行节点自动修复时,GKE 是容器化的首选选项。使用 GKE,您有两种操作模式。标准模式是手动管理 Kubernetes 配置和基础设施使用的经典方式,而新的 Auto-pilot模式有助于设置完全托管的控制平面的操作活动,以减少节点管理操作并提高集群效率。
通过 Auto-pilot 管理的 GKE 设置,您可以根据工作负载规范自动配置集群基础设施,并根据行业最佳实践管理节点基础设施。Auto-pilot 模式通过只为 GKE 优化的资源使用付费来帮助降低成本,同时提高容器实例和集群节点的性能,同时通过自愈容器基础设施节点确保高可用性和自动可扩展性。

3、Rancher Kubernetes 服务

Rancher 是一种流行的开源容器编排和构建服务,支持 Docker 和 Kubernetes 使用预定义模板构建容器。使用 Rancher,无需从头开始构建完整的节点实例。当您希望使用预定义的模板快速构建与网络和存储服务集成的容器时,Rancher 是理想的选择,而无需为高度健壮的工作负载(例如数据库或中间件应用程序)手动配置 Kubernetes 集群和节点而感到困惑。

4、Apache Mesos Kubernetes 引擎

Mesos 是使用名为 Vamp 的原生工具构建和部署的,Vamp 是一种部署和工作流工具,能够在代理节点中部署 Mesos 和 Marathon 等容器编排服务。它是一种可自动扩展和自我修复的服务,可通过 Web CLI 或 REST API 与如下所示的云原生管道集成访问。
Mesos 容器部署阶段
Mesos 框架的核心是主节点,它是守护进程并管理代理节点。代理节点在集群节点上运行,集群节点在这些代理上执行 Mesos 任务。主节点支持跨代理节点对 CPU、内存等细粒度资源进行切片以运行任务。调度程序和执行程序是主节点之上的两个重要组件。调度器向主节点注册任务并触发起点,执行器从那里运行任务。主节点决定在代理节点中运行的每个框架所需的资源,调度程序决定任务执行的资源使用情况。
Mesos 编排的参考架构
由于 Apache Mesos 使用分布式资源调度作为其引擎的一部分,因此它更适合容器化流处理和批处理工作负载。Netflix 是 Apache Mesos 容器的流行实现,它经常因其在媒体再利用活动中的流分析和批处理操作而出名。

5、微软 Azure

如果您有一个在 Microsoft 技术堆栈上运行的应用程序资产(例如,.NET、Windows 运行时应用程序),它会很容易适应 Azure 容器,但不限于此。Azure 容器非常灵活,可以在公有云平台以及 Azure Stack Hub 中的私有云平台上运行。Azure 提供了多种容器服务——有两种本机容器服务:Azure Kubernetes Service 和 Azure Service Fabric。它支持 OpenShift 等第三方容器化解决方案,可以部署在 Azure 上以创建容器环境。使用 Pivotal Container Service 构建的服务可以部署在 Azure 上以创建容器环境,并用于公共和私有 Azure 云平台。
Azure Kubernetes 服务中的功能
Azure 提供本机服务,通过分析不同应用程序容器中的应用程序使用/消耗情况来帮助监视和管理应用程序。从策略上讲,我们可以配置原生 Azure 监控服务,以根据需要监视和调整应用程序组。作为适用于多云管理的战略解决方案,可以扩展 Cisco AppDynamics 等工具来监控 Azure 上的不同服务。

6、亚马逊网络服务 (AWS)

AWS 提供了多种容器化选择,例如 Elastic Container Service (ECS)、EKS 和新的 EC2 Fargate。ECS 和 EKS 主要用于容器编排。ECS 是纯 AWS 原生云托管服务,EKS 是基于 Kubernetes 的原生实现。Fargate 比 ECS 和 EKS 更先进。它提供了一个无服务器计算引擎,用于在 ECS 服务上构建和部署容器。用户不必担心配置底层基础设施,因此可以加快上云速度。Fargate 也更便宜,因为您只需为计算时间而不是底层 EC2 资源和实例付费。
如果您熟悉 Docker 容器处理,请选择基于 ECS 的架构。如果您对 Kubernetes 比较熟悉,请选择基于 EKS 的架构。如果您不熟悉原生容器编程,您可以选择 Fargate。EKS 更适合与云无关的解决方案,因为它使用其他云服务提供商的底层服务(服务级别的中断/变化较少或没有变化)。但是,如果您正在寻找具有无缝自动容器资源管理的“装箱”解决方案,那么 ECS 有助于自动化部署、扩展服务和自我管理容器化应用程序。

7、Oracle Kubernetes 引擎

Oracle 云基础设施 (OCI) 提供了数十种云服务和基础设施设施来运行流行的数据库应用程序(如 Oracle DB)和应用程序服务器(如用于 Web 应用程序的 Weblogic 服务器)。OCI 拥有通过其 Oracle Kubernetes Engine (OKE) 运行 Kubernetes 服务的原生设施,该引擎包含在 OCI 平台上运行容器工作负载的多节点架构。OKE 有 etcd 之类的组件,它是用于存储集群数据的键值对存储,它在单独的资源上运行以处理工作负载数据。
甲骨文 Kubernetes 引擎
OKE 已经通过 Kubernetes API Server 公开了 API,以与节点实例及其接口进行交互。总体而言,OKE 的管理由 Kubernetes Controller 管理,以处理节点故障、节点创建和节点管理活动。单个应用程序工作负载在 Kubernetes 节点上运行,也称为 Kubernetes 工作人员,因为 VM 和调度的 Pod/节点实例是通过 Kubernetes 调度程序创建的。OKE 可以部署在多区域并通过负载均衡器进行均衡,以实现高可用性和更好的应用程序调用请求管理。通过 OAuth2 或 SSH 密钥或身份验证服务,使用 OKE 架构可以很好地管理安全服务。

8、结论

得益于强大的社区支持,Kubernetes 一直在改进其功能和架构。例如,当我们设计容器解决方案时,我们考虑的一个重要方面是可扩展性和可靠性,以便应用程序可以适应流量变化。同时,我们希望限制导致“现收现付”方法的控制成本。一开始,Kubernetes 集群需要调度程序组件,云管理员可以配置该组件以根据预见的情况安排扩展和缩减 - 例如在一天结束时扩展节点以进行批处理,并在空闲时缩减节点使用时间。
现在,许多流行的 Kubernetes 平台(如上所述)都包含一个自动扩缩器工具,可以同时处理集群自动扩缩器和 pod 自动扩缩器,这极大地简化了 Kubernetes 架构和实现。
当我们谈论容器时,我们通常关心应用程序容器或数据容器在容器化期间处理服务层。但是对于事务型应用来说,应用状态起着重要的作用,默认架构是无状态容器。这包括 Kubernetes 功能,例如 PetSet,最近被引入来管理有状态的集群。此外,Kubernetes 支持 StatefulSet 等原生特性,它在容器架构中处理上述状态机制。这在具有灵活配置的 AKS for Azure、EKS for AWS 和 GKE for Google Cloud 中得到支持。

推荐

A Big Picture of Kubernetes

Kubernetes入门培训(内含PPT)



随手关注或者”在看“,诚挚感谢!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存