🚀 Kubernetes(K8s)入门概述
整理学习 K8s 基础知识笔记,顺便记录一下踩坑心得 📝
🤔 什么是 K8s
Kubernetes(简称 K8s)这个名字源于希腊语,意为 "舵手" 或 "飞行员" ------听着就很有掌控全局的感觉对吧?😎 至于为什么叫 K8s,纯粹是因为 k 和 s 之间正好隔着 8 个字母,程序员们为了省事儿就这么叫了,毕竟大家都很懒嘛(不是)。
K8s 是 Google 在 2014 年开源 的一个容器编排平台,现由 CNCF(Cloud Native Computing Foundation) 维护。它的主要工作是自动化部署、扩展和管理容器化应用程序。同类工具还有 Docker Swarm、Mesos 等,但 K8s 凭借活跃的社区和强大的生态,已经妥妥地坐上了容器编排界的头把交椅 👑。
K8s 基于容器技术(如 Docker)作为应用程序的"积木块"。容器是一种轻量级的虚拟化技术,把应用程序和它所有的依赖统统打包进一个独立的、可移植的运行环境里。简单说就是:"在哪都能跑,跑起来都一样",妈妈再也不用担心环境不一致的问题啦 🎉
📦 核心概念一览
| 概念 | 一句话解释(人话版) |
|---|---|
| Pod | K8s 最小的调度单位,里面可以住一个或多个容器,共享网络和存储,像合租室友一样互相照应 |
| Deployment | 定义应用的"理想状态",帮你管理 Pod 副本,支持滚动更新、回滚、扩缩容------像给应用请了个管家 |
| Service | 给一群 Pod 配一个"门牌号"和"前台",外界访问统一走这里,还能帮忙负载均衡 |
| Namespace | 把一个集群划分成多个"隔间",不同团队/环境各住各的,互不打扰 |
| Volume | 数据持久化用的"移动硬盘",Pod 挂掉数据还在,支持本地盘、NFS、Ceph 等各种存储 |
除了上面这些核心概念,K8s 还自带自动扩展、配置管理、日志监控等功能。它就像一个"全能管家",能根据应用需求自动调度资源,让容器安安稳稳地运行。
K8s 的设计目标就是 高可扩展、高可用 ,能在超大规模的集群上运行,支持各种云平台和裸机环境。如今,它已经成为容器编排领域 事实上的标准 ,用一句话说就是:"大家都在用,你还不学起来?" 🔥
❓ 为什么要用 K8s
说白了就是:容器多了,管不过来,需要个管家。
- 如果你的应用只跑在一台机器上,Docker + Docker Compose 就够用了,小日子过得挺滋润 🛋️
- 如果扩展到三四台机器,你还可以每台单独配置 + 挂个负载均衡,问题不大 👌
- 但是!当机器涨到 十几台、上百台、上千台 的时候......每次扩容、更新、回滚,都能让人崩溃到想砸键盘 💀
这时候,K8s 就登场了。
K8s 是 基于容器技术的分布式架构领先方案 ,凝结了 Google 十几年大规模容器管理的实战经验。说白了就是:Google 踩过的坑,你不用再踩一遍 🫡
它的核心任务是解决三个问题:
- 🧩 运维部署问题
- 📈 集群扩展问题
- 🎮 容器编排管理问题
如果系统设计遵循 K8s 的理念,那么传统架构中那些和业务无关的底层模块------负载均衡、服务治理、监控告警------全都可以交给 K8s 来管。我们只需要 专注于业务本身 ,据说可以节省 30% 以上的开发成本,还能大幅降低运维难度。省下来的时间摸鱼不香吗?😏
另外,K8s 是一个 开放的开发平台 ,不挑编程语言------Java、Go、C++、Python 统统欢迎,通过标准 TCP 协议就能接入。关键是它对现有代码 零侵入 ,存量系统可以 平滑迁移,不用推倒重来,这波血赚 🩸
IT 行业永远是被新技术驱动的。容器化从单机走向集群是必然趋势,而 K8s 作为目前唯一被广泛认可的容器分布式方案,未来几年会有越来越多的新系统选择它。现在上车,还来得及 🚗💨
📜 项目部署的发展历程
聊 K8s 之前,先回顾一下项目部署是怎么一步步演变的------知道我们从哪来,才更清楚要去哪 🧭
🏠 传统部署时代
早期应用直接跑在物理服务器上,没有任何资源隔离。就像一群人合租一间大仓库,有人占了一大半地方,别人就只能挤着用 😤
如果想让每个应用互不干扰?那就每台物理机只跑一个应用。但这样资源利用率低得可怜,扩展又困难,还得砸大把银子买服务器,成本高到肉疼 💸
💻 虚拟化部署时代
为了解决物理机的弊端,虚拟化技术出现了。它在一台物理机上跑多个 虚拟机(VM),每个 VM 都是完整的计算机,有自己的操作系统和虚拟硬件。
好处是显而易见的:
- ✅ 应用之间相互隔离,安全性提升
- ✅ 资源利用率大大提高
- ✅ 扩展更方便,硬件成本降低
相当于把大仓库隔成了多个独立小房间,各有各的门锁和家具,互不打扰 🏘️
🐳 容器部署时代
容器和 VM 类似,但 更轻量,因为多个容器可以共享同一个操作系统内核。它有自己的文件系统、CPU、内存、进程空间,但启动速度比 VM 快得多,跨平台移植也更方便。
然而!问题来了: 当容器数量爆炸式增长之后,谁来管这些容器?🤯
微服务和容器化解决了资源利用率的问题,但带来了新的烦恼------容器编排。一大堆容器如果全靠人工维护,运维同学怕是会连夜提桶跑路 🏃💨
K8s 正是在这个时候应运而生,在容器之上对服务器资源和容器调度进行统一管理,堪称 "容器的指挥官" 🎖️
✨ K8s 的特点与功能
🎯 三大特点
| 特点 | 说明 |
|---|---|
| 可移植 | 公有云、私有云、混合云、多云,随便换,不挑 |
| 可扩展 | 模块化、插件化,想挂啥挂啥,想组合就组合 |
| 自动化 | 部署、重启、复制、伸缩,统统自动搞定,解放双手 🤖 |
⚙️ 核心功能清单
- 自动装箱:根据资源需求自动把容器安排得明明白白
- 自我修复 :容器挂了自动重启;节点挂了自动迁移;健康检查不过关就屏蔽服务,直到恢复为止------比男朋友还靠谱 💪
- 水平扩展:一条命令或一个界面操作,就能扩大或缩减容器规模,支持手动和自动两种模式
- 服务发现:不用额外装啥组件,K8s 自己就能搞定服务发现和负载均衡
- 滚动更新:支持一次性或批量更新应用,不用停机,用户无感知 ✨
- 版本回退 :更新出问题了?一键回滚到历史版本,后悔药随时吃 💊
- 密钥和配置管理:不用重新构建镜像就能更新配置和密钥,热部署妥妥的
- 存储编排:自动挂载存储系统,本地目录、NFS、Ceph、云存储统统支持,有状态应用的救星 🦸
💎 K8s 的优点
K8s 能成为容器编排界的顶流,不是没有原因的:
- 🤖 自动化管理:调度、伸缩、恢复全自动,省心省力,可靠性拉满
- 📈 弹性扩展:根据负载自动调整副本数,忙时扩容闲时缩容,省钱又高效
- 🛡️ 高可用性:故障自动检测+迁移,服务几乎不中断,堪称"打不死的小强"
- 🧩 灵活部署:微服务、单体、批处理统统支持,滚动更新、蓝绿部署任你选
- ☁️ 跨平台+厂商无关:AWS、Azure、GCP、私有云随便切,不用担心被厂商绑定
- 🌍 强大生态:社区活跃,插件海量,要啥有啥
- 📊 可观测性:自带监控日志,还能集成 Prometheus、Grafana 等第三方工具
一句话总结:K8s 把容器编排这件事做到了极致,你不服不行 👏
🏗️ K8s 设计架构
K8s 集群 = 多个 Master Node(控制节点) + 多个 Work Node(工作节点)
简单说就是:"大脑"负责指挥,"手脚"负责干活 🧠💪
节点可以是物理机,也可以是虚拟机。控制节点里的 控制平面(Control Plane) 管理整个集群,工作节点则运行实际的工作负载 Pod。
每个节点上一般都跑着 kubelet、kube-proxy 和容器运行时(比如 Docker)。
🧠 控制平面(大脑)
控制平面是 K8s 的 神经中枢,负责决策和指挥:
- kube-apiserver :K8s 的"门卫"兼"前台",所有请求都从这过,负责验证和处理。你可以通过 REST、
kubectl或kubeadm来访问它 🚪 - kube-scheduler:调度员,负责给新 Pod 找"工位"。它会综合考虑资源需求和集群健康状况,把 Pod 安排到最合适的节点上 📋
- kube-controller-manager:控制器大本营。确保"实际状态"跟"期望状态"一致------比如副本数对不对、服务能不能连上 Pod 🎮
- etcd :分布式键值数据库,保存所有配置和状态数据,是集群的 "最终事实来源"。挂了的话集群就瞎了,所以一定要高可用 📂
💪 工作节点(手脚)
- Pod:K8s 最小单元,一个 Pod 就是一个应用实例,里面可以住一个或多个容器(关系铁的才住一起 🤝)
- 容器运行时:负责真正跑容器的引擎,Docker 是老大,rkt、CRI-O 也支持
- kubelet:节点上的"小跟班",跟控制平面保持通信,确保 Pod 里的容器正常运行 📡
- kube-proxy:网络代理,负责集群内外的网络通信,相当于"网络交通警察" 🚦
🎯 K8s 使用场景
K8s 能做的事情可太多了,随便列几个:
- 🧩 微服务架构:管理和部署微服务,Service + Ingress 搞定通信和负载均衡,弹性伸缩自动跟上
- 🔄 CI/CD 自动化:和 Jenkins 等 CI/CD 工具集成,代码提交自动构建、测试、部署,爽到飞起
- ⚖️ 弹性扩展+负载均衡:根据负载动态调整副本数,Service 自动分发请求,稳如老狗
- 🏢 多租户+多环境管理:用 Namespace 隔离开发/测试/生产环境,或者隔离不同租户,互不干扰
- ⏰ 批处理+定时任务:CronJob 管理定时任务(报表生成、数据处理等),并行执行+故障恢复,省心
- ☁️ 混合云/多云管理:AWS、Azure、GCP 随便切,私有云也 OK,厂商绑定?不存在的
总之,K8s 的应用场景多到数不过来。功能丰富、配置灵活,让开发者能 安心写代码,放心睡大觉 😴
🎉 好了,K8s 的入门概述就到这里!接下来就是动手实践了,纸上得来终觉浅,绝知此事要躬行。下篇见!👋