资讯动态

90DaysOfDevOps Day 50:如何选择你的 Kubernetes 平台——裸金属、虚拟化、本地开发与托管服务全解析

发布时间:2026/10/3 13:36:35 来源:尧图企业网站定制
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载在 90DaysOfDevOps 的 Kubernetes 学习阶段第 50 天首先回答一个最现实的问题把 Kubernetes 集群跑在哪里本文以 Day 50西班牙语版 2022/es/Days/day50.md为骨架系统拆解裸金属Bare-Metal、虚拟化、本地桌面开发环境与云托管服务四大部署形态并结合仓库中真实可用的 Vagrantfile 与 kubeadm 脚本给出从零成本学习环境到生产级架构的完整选型思路与上手路径。读完后你将能根据预算、运维能力与团队规模独立判断该用 minikube、Kind、自建虚拟化集群还是 EKS/AKS/GKE并知道如何在工作负载不变的前提下自由迁移。选择平台的本质消除 Kubernetes 的复杂度Kubernetes 世界长期面临一个挑战——复杂度。一方面Kubernetes the hard way式的手工搭建可以让你从零构建一个功能完整的集群理解每一个底层细节但这种方式极其极端要求你亲手完成控制平面初始化、证书签发、网络插件安装等全部环节。另一方面越来越多的人希望去掉这种复杂度直接运行一个托管式managedKubernetes 集群。托管的代价是金钱但收益同样明确当使用托管服务时你通常不需要操心底层节点架构也无需了解控制平面Control Plane节点的内部运作——因为正常情况下你根本访问不到它们。在这两极之间还有本地开发发行版local development distributions利用我们手头的笔记本或台式机运行一个本地版 Kubernetes让开发人员在真正目标平台上拥有完整的工作环境来运行他们的应用。无论选择哪种形态其共同基础是它们都是 Kubernetes 的一种口味a flavour of Kubernetes。这意味着我们应该能够自由地把工作负载迁移到任何需要的地方去适配自己的需求。因此平台选择很大程度取决于已经做出的投资也取决于对开发者体验的重视程度——那些跑在笔记本电脑上的本地 Kubernetes 环境是零成本上手这项技术的绝佳途径。四大部署形态逐一拆解1. 裸金属集群Bare-Metal Clusters从物理服务器起步裸金属方案是指把 Linux 操作系统直接安装到若干台物理服务器上由这些服务器组成集群理论上也可以是 Windows但在 Windows 环境下的容器与 Kubernetes 采用率并不高更多是零星个例。如果你的企业已经做出CAPEX 决策资本性支出采购了物理服务器那么裸金属可能正是你构建集群的方式。需要清醒认识的是在管理与运维层面这意味着你必须从零开始自己构建、自己管理一切——操作系统、容器运行时、kubeadm、网络插件、存储、监控、升级全部亲力亲为。它把最多的控制权留给你同时也把最多的责任留给你。2. 虚拟化Virtualisation测试、学习与企业级的平衡点无论目标是测试学习环境还是企业就绪enterprise-ready的 Kubernetes 集群虚拟化都是绝佳路线。它的典型做法是快速创建若干虚拟机VM作为集群节点再把它们组合成集群。你同时获得虚拟化的底层架构、效率与速度还能充分利用企业已有的虚拟化投入。以 VMware 为例它同时为虚拟机和多种形态的 Kubernetes 提供了成熟解决方案。仓库中 90DaysOfDevOps 的实际实践也印证了这条路线作者自己搭建的第一个 Kubernetes 集群就是基于Microsoft Hyper-V在一台旧服务器上运行的几台 VM 组成的。而仓库的 Kubernetes 目录 更给出了一个完整的虚拟化落地样本详见下文第三节。3. 本地桌面选项Local Desktop Options开发者的零成本环境在桌面或笔记本上运行本地 Kubernetes 集群是当下最流行的开发方式之一。正如前文所说它让开发者无需维护多个昂贵或复杂的集群就能直观看到自己的应用在 Kubernetes 上长什么样。在众多本地工具中作者个人使用最多的是minikube。它拥有出色的功能与插件add-ons体系能彻底改变你把东西跑起来的方式。这也是作者目前最推荐的入门选择。4. 托管 Kubernetes 服务Managed Services把控制平面交出去虚拟化既可以通过本地 Hypervisor 实现也可以借助公有云上的 VM 充当节点。而这里讨论的托管 Kubernetes 服务指的是来自大型云厂商hyperscalers以及 MSP托管服务提供商的现成产品——它们把一层层的管理与控制从终端用户手中抽离最典型的就是移除控制平面的管理负担这正是Amazon EKS、Microsoft AKS 与 Google Kubernetes EngineGKE在做的事。选择托管服务意味着你不用再关心控制平面的高可用、etcd 备份、apiserver 升级等底层运维代价是费用更高且对底层节点的可观测性受限。仓库实战佐证虚拟化路线的完整落地样本仓库 2022/Days/Kubernetes 目录为虚拟化 kubeadm路线提供了可直接复用的完整工程与 Day 50 论述的虚拟化形态一一对应。Vagrantfile一主两从的虚拟机编排Vagrantfile 定义了基于 VirtualBox 的一主master两从worker集群拓扑NUM_WORKER_NODES2 IP_NW10.0.0. IP_START10 Vagrant.configure(2) do |config| config.vm.provision shell, inline: -SHELL apt-get update -y echo $IP_NW$((IP_START)) master-node /etc/hosts echo $IP_NW$((IP_START1)) worker-node01 /etc/hosts echo $IP_NW$((IP_START2)) worker-node02 /etc/hosts SHELL config.vm.box bento/ubuntu-21.10 ...关键参数一览配置项值说明NUM_WORKER_NODES2工作节点数量config.vm.boxbento/ubuntu-21.10节点基础镜像Ubuntu 21.10master 节点内存 4048 MB、2 CPU承载控制平面worker 节点内存 2048 MB、1 CPU每个工作节点各一份私有网络10.0.0.10/11/12节点间通信网段这个 Vagrantfile 正体现了 Day 50 所说的把虚拟机作为节点、再把它们聚合成集群——虚拟机VM即节点Node。master.sh / node.sh控制平面与工作节点的分工scripts/master.sh 展示了控制平面初始化的核心调用链MASTER_IP10.0.0.10 NODENAME$(hostname -s) POD_CIDR192.168.0.0/16 sudo kubeadm config images pull sudo kubeadm init --apiserver-advertise-address$MASTER_IP \ --apiserver-cert-extra-sans$MASTER_IP \ --pod-network-cidr$POD_CIDR --node-name $NODENAME \ --ignore-preflight-errors Swap随后脚本把admin.conf复制为本地kubeconfig、生成工作节点的kubeadm join命令kubeadm token create --print-join-command并安装Calico 网络插件kubectl apply -f calico.yaml、Metrics Server 与 Kubernetes Dashboard。工作节点侧 scripts/node.sh 则执行/bin/bash /vagrant/configs/join.sh -v加入集群并通过kubectl label node ... node-role.kubernetes.io/workerworker-new标记角色。而 scripts/common.sh 负责所有节点的共性准备禁用 swap、加载br_netfilter与overlay内核模块、配置 sysctlnet.bridge.bridge-nf-call-iptables 1等、安装 containerd 与 Docker Engine并以apt-mark hold kubelet kubeadm kubectl锁定 Kubernetes 1.23.3 版本。这正是Kubernetes the hard way之外的另一种自建路径用 kubeadm 把复杂度控制在可管理范围同时保留对控制平面的完全可见性——这是托管服务无法提供的能力也正是 Day 50 讨论裸金属/虚拟化 vs 托管时的关键权衡点。本地开发首选minikube 与 Kind对于学习视角作者的建议非常明确首选 minikube其次 KindKubernetes in Docker。为什么 minikube 更受青睐因为它几乎把复杂度抽象掉了只需使用add-ons 插件就能快速搭建所需环境用完即可吹掉blow it away支持运行多个集群几乎可以在任何地方运行跨平台、与硬件无关hardware agnostic。紧随其后的第 51 天2022/Days/day51.md正是这一建议的直接实践通过minikube start一键在本机拉起首个集群。其默认 Docker Driver 会在本机运行一个嵌套虚拟化的单节点容器——控制平面节点与工作节点合二为一与生产环境控制平面与工作节点分离的架构形成对照。minikube 还支持用--apiserver-port6433固定 API 端口、--container-runtimecontainerdDocker 为默认、CRI-O 亦可用以及--kubernetes-version指定版本等配置项且可用minikube addons enable一键启用 CSI 主机路径驱动、卷快照等插件替代繁琐的 Helm 部署流程。对于仍想保留一点自建感、又不想管理虚拟机的开发者Kind 则把每个节点建模为 Docker 容器同样适合 CI 与本地多节点拓扑测试。不容忽视的选项OpenShift 与云平台在以上所有类别之上还有一个重要选项Red Hat 的 OpenShift。它的特点是可以在上述所有主要云提供商上运行无论集群部署在哪里如今大概都能为管理员提供最好的整体易用性。同样值得跟踪的云平台实践还包括Amazon EKS、Microsoft AKS含 Azure PowerShell 版、Google GKE、AWS Bottlerocket EKS 组合以及 Civo Cloud 等新兴服务。这些选项共同构成了托管服务光谱——按需选择控制平面抽象程度与厂商绑定程度核心工作负载Deployment、Service、Ingress、StatefulSet 等 Kubernetes 原生资源理论上均可跨平台迁移。从学习到生产你的第一台集群该怎么选作者回顾自身学习旅程后给出的结论是不必一开始就追求生产级架构先低成本地把技术跑通。完整的选择逻辑可以概括为零成本起步用 minikube首选或 Kind在本机迅速搭建、练习、销毁熟悉 kubectl 与 Kubernetes 原生资源接近生产的学习用仓库的 Vagrantfile kubeadm 在 VirtualBox 中搭建多节点集群理解控制平面与工作节点分工、网络插件、Dashboard 等生产要素企业生产依据 CAPEX/OPEX 决策选择裸金属、虚拟化或 EKS/AKS/GKE 托管服务并评估 OpenShift 作为统一管理面的可能性。无论最终落在哪一层都可以在这套选择之上继续 90DaysOfDevOps 的 Kubernetes 主题学习架构Architecture、kubectl 命令、Kubernetes YAML、Ingress、Services、Helm 包管理器、持久化存储Persistent Storage与有状态应用Stateful Apps。仓库中 nginx-stateless-demo.yamlNamespace Deployment Service 的无状态示例与 statefulset.yaml含 PVC 挂载、Secret 注入、readinessProbe 的 MongoDB 有状态示例恰好为后续章节提供了可运行的实战素材。平台选择只是起点关键在于理解所有这些都是 Kubernetes 的变体工作负载的可移植性才是最终目标——选择一种形态把它跑起来然后继续前进。资源Kubernetes 官方文档入门与概念权威来源90DaysOfDevOps 系列第 49 天《The Big Picture: Kubernetes》2022/Days/day49.md容器编排与 Kubernetes 定位的全局视图第 51 天《Deploying your first Kubernetes Cluster》2022/Days/day51.mdminikube 实战上手仓库 2022/Days/Kubernetes 目录Vagrantfile、kubeadm 脚本与全套示例 YAML下一站见第 51 天——用 minikube 部署你的第一个 Kubernetes 集群。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐90DaysOfDevOps 第 50 天如何选择你的 Kubernetes 平台与发行版90DaysOfDevOps 第 50 天如何选择你的 Kubernetes 平台与发行版 本文是 90DaysOfDevOps 挑战中 Kubernetes文档/教程开源裸金属服务器管理平台 RackShift 项目推荐开源裸金属服务器管理平台 RackShift 项目推荐 RackShift 是一个开源的裸金属服务器管理平台它使用现代的编程语言和技术构建而成致力于简化裸金DeepTutor 部署与知识库实战4 步从启动到本地模型配置DeepTutor 部署与知识库实战4 步从启动到本地模型配置 装完 DeepTutor 打开浏览器左侧一排功能按钮不知道先点哪个。DeepTutor 是人工智能AI 应用AI Agent多智能体RAG教育后端前端上一篇如何5分钟搞定Windows系统配置专业高效的开源系统管理工具使用指南下一篇碧蓝航线自动化全面指南从零开始掌握Alas脚本的高效使用方法创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑