1. 平台管理
到目前为止,我们已经看到,讨论的每个类别都解决了一个特定领域的问题。仅存储并不能提供管理应用程序所需的全部功能。您需要一个编排工具、容器运行时、服务发现、网络、API网关等。平台将不同层的不同工具捆绑在一起,以系统性的解决更大的问题。
这些平台本身没有什么新的东西。他们所做的一切都可以通过这些层中的一个工具或可观察性和分析栏来完成。您当然可以构建自己的平台,事实上,许多组织都可以这样做。然而,可靠、安全地配置和微调不同的模块,同时确保所有技术始终保持最新,修补漏洞并不是一件容易的事情,您需要一个专门的团队来构建和维护它。如果你没有必要的资源或专业知识,你的团队选择一个成熟的平台会是一个更好的选择。对于一些组织,特别是那些拥有小型工程团队的组织,采用平台是云原生实践的唯一途径。
你可能会注意到,所有平台都围绕着 Kubernetes。这是因为它是云原生技术栈的核心。
1.1. 通过一致性认证的 Kubernetes 发行版供应商(Certified Kubernetes - Distribution)
1.1.1. 是什么?
发行版(distro)是指供应商获取核心 Kubernetes(即未经修改的开放源码代码,尽管有些人对其进行了修改),并将其打包以供重新发布。通常这需要查找和验证 Kubernetes 软件,并提供一种处理集群安装和升级的机制。许多Kubernetes发行版包括其他专有或开源应用程序。
1.1.2. 解决什么问题?
开源 Kubernetes 没有指定特定的安装工具,并将许多设置配置选项留给用户。此外,当通过社区论坛、StackOverflow 或 Slack 等社区资源提出问题时,社区对问题的支持有限的(不能很好的支持)。
虽然随着时间的推移,Kubernetes 的使用变得越来越容易,但寻找和使用开源安装程序可能会很困难。用户需要了解要使用的版本、从何处获得这些版本,以及某个特定组件是否与另一个组件兼容。他们还需要决定将向集群部署什么软件,以及使用什么设置来确保其平台安全、稳定和高效。所有这些都需要 Kubernetes 深厚的专业知识,而这些知识在内部可能并不容易获得。
1.1.3. 有什么作用?
Kubernetes 发行版提供了一种可靠可靠的安装 Kubernete 的方法,并提供了固定的默认值,从而创建了一个更好、更安全的操作环境。Kubernetes 分发版为供应商和项目提供了所需的控制和可预测性,以便在客户部署、维护和升级其 Kubernete 群集的生命周期中为其提供支持。
这种可预测性使供应商能够在用户遇到生产问题时为他们提供支持。发行版还经常提供一个经过测试和支持的升级路径,允许用户保持其Kubernetes 集群最新。此外,发行版通常提供部署在 Kubernetes 之上的软件,使其更易于使用。
发行版大大简化并加快了 Kubernetes 的采用。由于配置和微调集群所需的专业知识已编码到平台中,因此组织可以使用云原生工具启动和运行,而无需雇佣其他具有专业知识的工程师。
1.1.4. 技术101
如果您已经安装了 Kubernetes,您可能已经使用了类似 kubeadm 的东西来启动和运行集群。即便如此,您可能也必须决定 CNI,安装并配置它。然后,您可能已经添加了一些 StorageClass、一个处理日志消息的工具,或者一个入 Ingress-controller,并且需要安装配置的内容还在持续增加。Kubernetes 发行版将自动执行部分或全部设置。它还将根据自己对最佳实践的解释或智能默认值提供配置设置。此外,大多数发行版都会附带一些捆绑和测试的扩展或附加组件,以确保您可以尽快使用新集群。
这个类别有很多选项。k3s 就是该类别中的 CNCF 项目。有很多优秀的开源和商业选项可用。我们鼓励您在开始评估分发时仔细考虑您的需求。
流行词 | CNCF 项目 |
---|---|
<li>Buzzwords</li> | <li>CNCF Projects</li><li>k3s (sandbox)</li> |
1.2. 通过一致性认证的 Kubernetes 托管平台供应商(Certified Kubernetes - Hosted)
1.2.1. 是什么?
托管 Kubernetes 是由AWS、Digital Ocean、Azure 和 Google 等基础设施提供商提供的服务,允许客户按需启动Kubernete 集群。云提供商负责管理 Kubernetes 集群的一部分,通常称为控制平面。它们类似于发行版,但由云提供商在其基础设施上进行管理。
1.2.2. 解决什么问题?
托管 Kubernetes允 许团队开始使用 Kubernete,而无需知道或做任何事情,只需与云供应商建立帐户即可。它解决了Kubernetes 入门的五个W中的四个。Who(管理者):您的云提供商;What(内容):他们托管的 Kubernetes 产品;Wehn(时间):现在;以及 Where(位置):在云提供商基础设施上。原因由你决定。
1.2.3. 有什么作用?
由于提供商负责所有管理细节,托管 Kubernetes 是开始使用云原生的最简单方法。用户所要做的就是开发他们的应用程序并将其部署到托管的 Kubernetes 服务上 -- 这非常方便。托管 Kubernetes 允许用户启动集群并立即开始(AWS 的 EKS 除外,它还要求用户采取一些额外步骤来准备集群),同时对集群可用性承担一些责任。值得注意的是,随着这些服务的额外便利,灵活性也有所降低。该产品绑定到云提供商,Kubernetes 用户无法访问控制平面。
1.2.4. 技术101
托管 Kubernetes 是由供应商(通常是基础设施托管提供商)提供的按需 Kubernete 集群。供应商负责提供集群和管理Kubernetes 控制平面。同样,值得注意的例外是 EKS,在 EKS 中,单个节点的供应由客户机完成。
托管 Kubernetes 允许一个组织通过将基础设施组件管理外包给另一个组织来快速调配新集群并降低其运营风险。主要的折衷是,您可能会因控制平面管理而收费,并且您的能力会受到限制。与 DIY Kubernetes 集群相比,托管集群在配置 Kubernete 集群方面提供了更严格的限制。
流行词 | CNCF 项目 |
---|---|
<li>Hosted</li> |
1.3. 通过一致性认证的 Kubernetes 安装工具供应商(Certified Kubernetes - Installer)
1.3.1. 是什么?
Kubernetes 安装程序帮助在计算机上安装 Kubernete。它们自动化了 Kubernetes 的安装和配置过程,甚至可能有助于升级。Kubernetes 安装程序通常与 Kuberneties 发行版或托管的 Kubernete 产品结合使用。
1.3.2. 解决什么问题?
与 Kubernetes 发行版类似,Kuberneties 安装程序简化了 Kubernete 的入门。开源 Kubernetes 依赖于 kubeadm 等安装程序,在撰写本文时,kubeadm 是认证 KubernetesAdministrator 认证考试的一部分,用于启动和运行 Kubernete 集群。
1.3.3. 有什么作用?
Kubernetes 安装程序简化了 Kubernete 的安装过程。与发行版一样,它们为源代码和版本提供了经过审查的源代码。他们还经常提供默认的 Kubernetes 环境配置。类似于 kind 的 Kubernetes 安装程序(Docker 中的 Kubernet)允许您通过一个命令获得 Kubernete 集群。
1.3.4. 技术101
无论您是在 Docker 上本地安装 Kubernetes,启动并配置新的虚拟机,还是准备新的物理服务器,您都需要一个工具来处理各种 Kubernete 组件的所有准备工作(除非您希望以艰苦的方式完成)。
Kubernetes 安装程序简化了这一过程。一些处理 node 节点,而其他仅配置您已经配置的节点。它们都提供了不同级别的自动化,每种自动化都适合不同的用例。当开始使用安装程序时,首先要了解您的需求,然后选择一个满足这些需求的安装程序。在撰写本文时,kubeadm 被认为是 Kubernetes 生态系统的基础,因此它被纳入了 CKA 认证的 Kubernete 管理员考试。Minikube、kind、kops 和 kubespray 都是 CNCF 拥有的 Kubernetes 安装程序项目。
流行词 | CNCF 项目 |
---|---|
<li>Installer</li> |
1.4. PaaS/容器服务提供商(PaaS/Container Service)
1.4.1. 是什么?
平台即服务(PaaS)是一种允许用户运行应用程序而不必关心底层计算资源细节的环境。此类别中的 PaaS 和容器服务是为开发人员托管 PaaS 或托管他们可以使用的服务的机制。
1.4.2. 解决什么问题?
我们已经讨论了很多关于云原生的工具和技术。PaaS 试图以一种为开发人员提供直接价值的方式连接此领域中的许多技术。它回答了以下问题:我将如何在各种环境中运行应用程序?而且,一旦运行,我的团队和用户将如何与他们互动?
1.4.3. 有什么作用?
PaaS 提供了关于如何将运行应用程序所需的各种开放和封闭源代码工具组合在一起的意见和选择。许多产品包括处理 PaaS 安装和升级的工具,以及将应用程序代码转换为运行应用程序的机制。此外,PaaS 还处理应用程序实例的运行时需求,包括按需扩展各个组件以及查看各个应用程序的性能和日志消息。
1.4.4. 技术101
组织正在采用原生地技术来实现特定的业务或组织目标。与构建定制应用程序平台相比,PaaS提供了更快的价值实现途径。Cloud Foundry Application Runtime 等工具可帮助组织快速启动并运行新的应用程序。他们擅长提供运行 12-factor 或云原生应用程序所需的工具。
任何 PaaS 都有自己的权衡和限制。大多数只使用语言或应用程序类型的子集,这些平台中的意见和决策可能适合也可能不适合您的需要。无状态应用程序往往在PaaS中表现很好,但有状态应用程序(如数据库)通常不会。目前,该领域没有 CNCF 项目,但大多数产品都是开源的,Cloud Foundry 由 Cloud Foundry Foundation 基金会管理。
1.5. 总结:平台
正如我们所看到的,有多种工具可以帮助简化 Kubernetes 的采用。从 Kubernetes 发行版和托管的 Kubernetes 到更基本的安装程序或 PaaS,它们都承担着各种安装和配置负担,并为您预打包。每个解决方案都有自己的“特色”。供应商对什么是重要的和合适的意见都内置于解决方案中。
在采用这些方法之前,您需要进行一些研究,以确定特定用例的最佳解决方案。您可能会遇到需要控制控制飞机的高级 Kubernetes 场景吗?如果是这样,托管解决方案可能并不适合。您是否有一个管理“标准”工作负载并需要尽可能多地卸载操作任务的小型团队?有多个方面需要考虑。虽然没有一个最佳工具可以满足所有用例,但肯定会有一个适合您需求的最佳工具。
1.6. 经验推荐
平台部分主要是为了帮助用户快速或更好的使用 Kubernetes。
对于 Kubernetes 发行版本除了使用开源标准的 Kubernetes 外,还可以选择通过 Kubernetes 一致性认证的发型版本,如 k3s。
使用 Kubernetes 供应商(一般称为容器云平台)提供的平台,可以忽略 Kubernetes 的安装和准备过程,快速的使用 Kubernetes。这通常是一些云厂商,如果 AWS、阿里云、腾讯云等。
对于安装 Kuberentes 的工具,可以选择 kubeadmin 。对于开发测试环境可以使用 minikube。Rancher 也是不错的 Kubernetes 安装工具。