🌟 三分钟带你搞懂Kubernetes(K8S):从入门到搭建集群

你是否曾好奇,像谷歌、阿里这样的大型互联网公司是如何管理成千上万个服务,并能保证它们不宕机、能自动扩容的?答案就是 ​​Kubernetes​​(简称 ​​K8S​​,因为K和S之间有8个字母)。今天,我们就用大白话来聊聊这个强大的容器“大管家”。


一、K8S是什么?为什么需要它?

​一句话概括:K8S是一个自动化运维管理容器化应用(比如Docker应用)的集群系统。​

想象一下传统的应用部署:你把程序包扔到服务器上,运行脚本启动。如果用户量暴增,服务器扛不住了,你就得手动加机器、部署、配置负载均衡……非常麻烦。

​K8S就是为了解决这个痛点而生的​​,它能帮你自动完成以下事情:

  • ​弹性伸缩​​:访问量大了,自动增加服务实例;访问量小了,自动减少,帮你省钱。

  • ​自我修复​​:万一某个服务实例挂了,K8S能立马发现并重新拉起来一个,保证服务不中断。

  • ​服务发现与负载均衡​​:你不用关心每个服务实例的具体IP地址,K8S会提供一个统一的访问入口,并自动把流量分发给后端的健康实例。

  • ​滚动更新与回滚​​:更新应用时,它会逐个替换旧实例,如果新版本有问题,能一键回滚到旧版本。

​简单来说,用了K8S,你只需要告诉它“我想要一个什么样的应用状态”,它就会自动帮你实现并维持这个状态,无需人工干预。​


二、K8S集群的“大脑”和“手脚”:核心架构

K8S集群采用​​主从(Master-Worker)架构​​。

​1. 控制平面(Master节点)—— 集群的“大脑”​

  • ​API Server​​:​​唯一入口​​。所有指令(无论是命令行还是UI操作)都必须通过它。相当于公司的总前台。

  • ​Controller Manager​​:​​运维总监​​。负责监控集群状态,确保一切符合预期。比如发现某个节点宕机,就自动在别的节点上重建服务。

  • ​Scheduler​​:​​调度专员​​。当你要部署服务时,它负责根据资源需求(比如需要多少CPU/内存)和调度策略,选择一个最合适的节点来运行。

  • ​etcd​​:​​集群配置数据库​​。所有重要的配置和数据都保存在这里,相当于集群的“记忆中枢”。

​2. 工作节点(Worker Node)—— 干活的“手脚”​

  • ​Kubelet​​:​​节点代理​​。Master节点安插在每个Worker上的“监工”,负责与Master通讯,并确保本节点上的容器按照指令运行。

  • ​Kube-proxy​​:​​网络代理​​。负责维护网络规则,实现服务的负载均衡,让外部能访问到集群内部的服务。

  • ​容器运行时​​:如 ​​containerd​​。真正负责启动和停止容器的“引擎”。(​​注意:从K8S 1.24版本开始,官方不再直接支持Docker,推荐使用containerd或CRI-O​​)。


三、必须懂的K8S核心概念
  • ​Pod​​:K8S管理的最小单位。一个Pod可以包含一个或多个紧密关联的容器(比如一个Web应用容器和一个日志收集容器),它们共享网络和存储。

  • ​Controller(控制器)​​:Pod的“模板”和“管家”。你一般不直接创建Pod,而是通过控制器来定义Pod的部署方式。常见的有:

    • ​Deployment​​:用于部署​​无状态应用​​(如Web服务),可以轻松实现滚动更新和扩缩容。

    • ​StatefulSet​​:用于部署​​有状态应用​​(如数据库),能保证Pod的唯一性和持久化存储。

  • ​Service​​:Pod的​​稳定访问入口​​。Pod的IP地址是会变化的,Service会提供一个固定的虚拟IP(Cluster IP)和域名,屏蔽后端Pod的变化,实现服务发现。

  • ​Namespace​​:​​命名空间​​。用于在物理集群内部实现逻辑隔离,将资源划分成不同的“项目组”或“环境”(如开发环境、生产环境)。


四、如何快速搭建一个K8S集群?

对于学习和测试,推荐使用 ​​kubeadm​​ 工具,它能帮你快速部署一个集群。主要步骤包括:

  1. ​环境准备​​:准备至少两台Linux机器(一台Master,一台Worker),配置主机名、关闭防火墙和Swap分区、优化内核参数。

  2. ​安装容器运行时​​:安装并配置 ​​containerd​​。

  3. ​安装K8S组件​​:在三台机器上安装 kubeadm, kubelet, kubectl这三个核心命令。

  4. ​初始化Master节点​​:在Master节点上执行 kubeadm init命令,这会自动拉取镜像并启动集群控制平面。

  5. ​安装网络插件(CNI)​​:比如 ​​Calico​​ 或 ​​Flannel​​。没有网络插件,Pod之间无法通信,节点状态会一直是 NotReady

  6. ​加入Worker节点​​:将Worker节点执行 kubeadm join命令,将其加入到集群中。

完成以上步骤后,使用 kubectl get nodes命令,如果看到所有节点状态都是 Ready,恭喜你,一个基础的K8S集群就搭建成功了!


总结

K8S已经成为云原生时代的基石技术。它通过强大的自动化能力,让应用的部署、管理和运维变得前所未有的简单和高效。虽然初期概念较多,但一旦理解了其核心思想和工作原理,你就能真正体会到它带来的巨大价值。

希望这篇“大白话”博客能帮你迈出理解K8S的第一步!如果想体验,不妨按照文档中的安装步骤,亲手搭建一个属于自己的K8S集群吧!

更多推荐