Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何为 Kubernetes 构建合适的平台

如何为 Kubernetes 构建合适的平台

作者头像
云云众生s
发布于 2024-03-27 10:19:36
发布于 2024-03-27 10:19:36
1510
举报
文章被收录于专栏:云云众生s云云众生s

如何为 Kubernetes 构建合适的平台

本文翻译自 How to Build The Right Platform for Kubernetes

无论您是与云提供商合作还是单独行动,您都需要为您的 Kubernetes 基础架构规划正确的架构。

Kubernetes 是一种编排工具。它可以帮助你部署、网络、负载均衡以及缩放容器化应用程序,并且每个工作负载都有它自己的架构,无论是有状态还是无状态,或者是你容器化的巨型服务,还是使用服务网格的微服务,批处理作业或者 serverless 函数。

但您还需要考虑 Kubernetes 基础架构本身的架构:如何构建 Kubernetes 运行的平台。

Kubernetes 既可以部署几乎所有类型的应用程序,又可以在几乎所有类型的硬件上、云端或其他地方运行,具有非常强大的灵活性。为了达到通用性和强大性,它具有非常高的可配置性和可扩展性。这给你的架构选择提供了很多可能性。

这些选项包括你是否自己做出所有的配置选择,是否遵循 VMware Tanzu 或 Azure Arc 等工具中的默认选项,这些工具提供了一种更集成的方法来部署和管理基础设施,或者使用托管云 Kubernetes 服务,它仍然为你提供关于你所部署的资源的选项,但会有快速启动参考架构和为常见应用工作负载设计的蓝图

规划 Kubernetes 资源

您的 Kubernetes 基础设施架构是 Kubernetes 用来运行容器化应用程序(及其自己的服务)的一组物理或虚拟资源,以及您在指定和配置它们时所做的选择。

您需要确定控制平面服务器、集群服务、附加组件、集群、数据存储和网络组件所需的虚拟机(或裸机硬件),集群上需要多少节点,以及基于 pod 和服务的工作负载和资源需求确定需要的内存和 vCPU。

自动缩放让您可以动态地向上或向下调整容量,但您需要有可用的基础容量。您需要考虑托管 Kubernetes 集群的最佳平台:在您自己的数据中心、边缘、托管提供商或公共、私有或混合云中的基础设施。

其中一些将由您的工作负载的需求决定:如果它们主要是无状态的(或者如果很容易在外部存储该状态),您立刻可以通过使用部署打折但也可能被中断的 spot 实例来降低云成本。您需要了解您计划运行的应用程序的大小、复杂性和可扩展性以及您需要的控制和定制量,以及您将使用的资源的性能、可用​​性和成本因素.

最初,Kubernetes 的构建假设其运行的所有硬件在本质上都是相似的并且可以有效互换,因为它的开发是为了利用云基础设施即服务 (IaaS) 中常见的商用服务器。

但即使在云端,不同的工作负载仍然需要非常不同的资源,而 Kubernetes 已经发展到支持更多异构基础设施:不仅是 Windows 节点和 Linux,还有 GPU 和 CPU、Arm 处理器和 x86。甚至可以选择使用某些类别的 Linux 设备作为节点。

如果您为 Kubernetes 虚拟机使用云 IaaS 或托管云 Kubernetes 服务(如 AKS 或 EKS),则可以为您的虚拟机选择合适的实例。如果您要在边缘构建自己的 Kubernetes 基础设施,您可能会选择 Arm 硬件或消费级英特尔 NUC 来运行要求较低的 Kubernetes 发行版,例如餐厅或零售店中的 k3s,您没有中心级硬件的数据设施。

根据您选择的 Kubernetes 发行版,您可能还需要考虑您想要的主机操作系统以及您将使用的容器运行时。您会运行自己的容器注册表还是只从公共注册表中拉取镜像?你将在哪里存储秘密?使用 HashiCorp Vault 或来自您的云提供商的托管密钥存储意味着您不会在可能泄漏的部署管道中拥有凭据。

多集群 K8s 基础架构

您还需要考虑可能的故障:您是否需要运行关键控制平面组件的多个副本的高可用性集群,或者您将运行多集群架构?

对于较小的 Kubernetes 基础设施,您可以使用命名空间分隔不同的工作负载:逻辑分区让您可以在一个集群上隔离和管理不同的应用程序、环境和项目。但您也可以使用单个 Kubernetes 控制平面来管理多个节点集群,将工作负载放在不同的集群上以获得更好的安全性和性能。

如果您对可接受的延迟有监管要求或严格限制,需要执行不同的策略和权限,或者想要避免需要零停机时间的应用程序出现单点故障,这使您可以在不同位置编排应用程序 - 包括不同的云提供商——但仍然有一个地方可以访问该基础设施。这简化了将应用程序从一个集群迁移到另一个集群,无论是用于扩展还是灾难恢复,尽管它也引入了显着的复杂性。

将您的 Kubernetes 基础设施联网

您还需要规划服务发现选项和网络拓扑,包括防火墙VPN 连接,以及集群的网络插件、DNS 设置、负载均衡器和 ingress 控制器。

想想访问管理:您需要部署基于角色的访问控制 (RBAC) 来为您的用户和资源实施细粒度的权限和策略,并确保您保护管理员访问权限。但您还需要为需要访问现有数据存储的工作负载管理机器身份。

本机 Kubernetes 用户身份验证使用证书:如果您需要对用户访问进行集中控制和治理,您可能希望使用现有的身份提供程序进行身份验证。

管理 Kubernetes 的架构师

由于 Kubernetes 旨在简化应用程序的扩展,虽然您可以手动更改活动和就绪探针等个别设置,但它实际上是为声明式配置管理而设计的。您在 YAML 中编写配置文件(或使用为您发出这些文件的工具)来告诉 Kubernetes 应用程序应该如何运行,而 Kubernetes 会处理实现这一点。

您不应调整设置,而应专注于使用基础设施即代码实现可重复性的自动化:将配置设置为版本控制的、可审计的代码,并根据需要经常应用它(或在出现问题时重新启动它),每次获得相同的系统。

Kubernetes 的设计目标是可重复、不可变的基础设施,在这种基础设施中,您将集群视为牛(而不是您命名、拥抱和关心的宠物)。为此做好准备的方式便是减少持续管理和实际在生产中操作容器的工作量。

您可以使用带有 Flux 或 Argo CD 的 GitOps 工作流将其扩展到策略管理和治理以及应用程序交付,部署应用程序更新并使集群在从引导到配置更新的整个过程中一直处于所需状态。您需要收集指标并跟踪性能:大多数工作负载都会发出 Prometheus metrics ,但您还需要考虑监控仪表板以及要启用的日志记录。

您需要监控容器基础架构中的威胁和安全风险,并确保您的 VM 主机得到适当强化。同样,在规划 Kubernetes 基础设施架构时,考虑一下您将为此使用的工具和流程,可以更轻松地确保您不会遗漏任何东西。

理解 Kubernetes 架构

将所有这些放在一起并非易事,您可以从其他 Kubernetes 用户如何构建其基础设施架构中学到很多东西。

“你试图获得 8 年的 Kubernetes 开发经验,然后才能高效地使用它。这要求太多了。你需要一本年鉴来帮助你导航和避开冰山,”前 Kubernetes 发布负责人和指导委员会成员 Lachlan Evenson 警告说。 Evenson 与 Kubernetes 联合创始人布伦丹·伯恩斯 (Brendan Burns) 合著了《Kubernetes 最佳实践》,试图提供一个配套指南来提供其中的一些内容。

但是您仍然应该期望花时间弄清楚哪种基础设施架构最适合您的特定工作负载并获得运行它的专业知识。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
开源Kubernetes GitOps平台构建:第一部分
Kubernetes 最近迎来了十周年庆典,其流行的开源产品领域已经发展成熟,无论您的平台必须使用什么,都已准备好可靠的开源产品来提供帮助。
云云众生s
2025/01/16
1080
开源Kubernetes GitOps平台构建:第一部分
选择开源Kubernetes GitOps平台构建:第二部分
我们之前描述了常用 IDP 的组件以及如何加快平台构建流程。现在让我们创建您的 GitOps 平台
云云众生s
2025/01/23
1170
选择开源Kubernetes GitOps平台构建:第二部分
Kubernetes并非无状态,您需要备份工具
现在一切都变成了“Gitops”,所有的工作负载都变成了“无状态”,我还需要 Kubernetes 备份工具吗?我想向您展示,这是一个初学者经常会犯的严重误解......
云云众生s
2024/03/28
1600
Cluster out:一种构建现代应用程序的设计方法
我们正在将单体架构转换为微服务,采用服务网格,并从“分布式和解耦优先”的角度接近世界。我不太喜欢引入新术语,但是企业内部不断出现一个概念:“Cluster Out”。意思就是:清晰的愿景,新鲜的代码,对开源的新承诺。
用户5166556
2023/03/18
5170
Cluster out:一种构建现代应用程序的设计方法
使用Kubernetes进行AI推理的5个理由
Kubernetes 的关键特性如何自然地满足 AI 推理的需求,以及它们如何使推理工作负载受益。
云云众生s
2024/07/24
1870
云vs本地:哪个更适合您的Kubernetes集群?
了解 Kubernetes 托管选项的优势和挑战,以便做出明智的决策,选择适合您的环境。
云云众生s
2025/02/03
1010
使用K0smotron简化Kubernetes托管控制平面
将 Kubernetes 控制平面作为 Pod 托管可以为多集群和边缘用例启用(并简化)操作。但是,会带来一些新的要求和问题。而且标准可能来得比较慢。
云云众生s
2024/03/28
1670
使用K0smotron简化Kubernetes托管控制平面
关于如何正确使用Kubernetes的5个技巧
为了有效地使用云计算,您必须使用Kubernetes来协调您的工作负载。以下是正确执行此操作的5个提示。
February
2018/12/06
1.3K0
【可扩展性】谷歌可扩展和弹性应用的模式
本文档介绍了一些用于创建具有弹性和可扩展性的应用程序的模式和实践,这是许多现代架构练习的两个基本目标。设计良好的应用程序会随着需求的增加和减少而上下扩展,并且具有足够的弹性以承受服务中断。构建和运行满足这些要求的应用程序需要仔细规划和设计。
架构师研究会
2022/09/26
2K0
Kubernetes太香了!我的两年使用经验总结
大约两年前,我们决定放弃在 EC2 平台中基于 Ansible 配置管理工具部署应用程序,并转向容器化和 Kubernetes 技术栈,使用 Kubernetes 进行应用程序编排。现在我们已将大部分基础架构迁移到 Kubernetes。这是一项艰巨的任务,也有它自己的挑战——从迁移进行之时运行混合基础设施的技术挑战,再到用全新的操作范式培训整个团队等等,不一而足。
深度学习与Python
2020/12/18
8080
Kubernetes太香了!我的两年使用经验总结
在 Kubernetes 上使用 Spinnaker 构建部署流水线
Spinnaker 是一种持续交付平台,最初由 Netflix 开发,用于快速、可靠地发布软件更改。Spinnaker 使开发人员可以更轻松地专注于编写代码,而无需担心底层的云基础设施。它与 Jenkins 以及其他流行的构建工具无缝集成。
我是阳明
2021/06/25
3.3K0
在 Kubernetes 上使用 Spinnaker 构建部署流水线
云原生之旅的最佳 Kubernetes 工具
嗨,在当今动态的环境中,在 450 多家经过 Kubernetes 认证的服务提供商和众多经过 Kubernetes 认证的发行版中进行导航可能是一项艰巨的挑战。本博客旨在通过展示精心整理的2023 年最常用和最流行的 Kubernetes 工具列表来简化此过程。
云云众生s
2024/03/28
3120
如何设置混合云环境
评估组织需求,选择统一控制平面并解决合规性问题,以便做出明智的决策并实施最佳实践。
云云众生s
2024/06/18
2830
基于Kubernetes优先的方法扩展数据平台
Kubernetes 运算符——管理有状态应用程序的特定于应用程序的控制器——可以使数据库管理成为一种可行甚至更优的选择。
云云众生s
2024/12/14
1330
需要尽早知道的Kubernetes最佳实践
我希望能早点知道的Kubernetes最佳实践。从我在生产环境中使用Kubernetes的经验中学习,并避免常见的陷阱。
云云众生s
2025/01/23
1970
需要尽早知道的Kubernetes最佳实践
现代化Kubernetes的应用程序
现代无状态应用程序的构建和设计可在Docker等软件容器中运行,并由Kubernetes等容器集群管理。它们使用Cloud Native和Twelve Factor原则和模式开发,以最大限度地减少人工干预并最大限度地提高可移植性和冗余性。将基于虚拟机或基于裸机的应用程序迁移到容器(称为“容器化”)并在集群内部署这些应用程序通常会导致这些应用程序的构建,打包和交付方式发生重大变化。
独木桥先生
2018/11/20
2.2K0
Kubernetes生产环境的16条建议
Kubernetes是用于构建高度可扩展系统的强大工具。结果,许多公司已经开始或正在计划使用它来协调生产服务。不幸的是,像大多数强大的技术一样,Kubernetes也很复杂。我们整理了以下清单,以帮助你生产环境最佳实践Kubernetes。
java进阶架构师
2020/06/16
7870
Kubernetes生产环境的16条建议
Cycle.io:认识致力于取代Kubernetes的团队
Kubernetes是由谷歌设计的,用于运营其庞大的业务属性,而我们中的许多人不需要那种规模。
云云众生s
2024/03/28
1310
高性能 MySQL 第四版(GPT 重译)(四)
在个人项目中运行 MySQL,甚至在年轻公司中运行 MySQL,与在市��已经建立并且“呈现指数增长”业务中运行 MySQL 大不相同。在高速业务环境中,流量可能每年增长数倍,环境变得更加复杂,伴随的数据需求迅速增加。扩展 MySQL 与其他类型的服务器大不相同,主要是因为数据的有状态性质。将其与 Web 服务器进行比较,后者的广泛接受的模型是在负载均衡器后面添加更多服务器通常是您需要做的全部。
ApacheCN_飞龙
2024/03/20
2370
高性能 MySQL 第四版(GPT 重译)(四)
构建Kubernetes集群 - 合理选择工作节点数量和大小
本文从多个维度分别阐述了使用更少的大节点与使用更多的小节点来组建 Kubernetes 集群各自的优劣,并结合实践经验给出了选择工作节点数量和大小的通用方法。
CNCF
2019/12/05
1.8K0
构建Kubernetes集群 - 合理选择工作节点数量和大小
推荐阅读
相关推荐
开源Kubernetes GitOps平台构建:第一部分
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档