Kubernetes(K8s)-01-简介

🚀 Kubernetes(K8s)入门概述

整理学习 K8s 基础知识笔记,顺便记录一下踩坑心得 📝


🤔 什么是 K8s

Kubernetes(简称 K8s)这个名字源于希腊语,意为 "舵手""飞行员" ------听着就很有掌控全局的感觉对吧?😎 至于为什么叫 K8s,纯粹是因为 ks 之间正好隔着 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。

每个节点上一般都跑着 kubeletkube-proxy 和容器运行时(比如 Docker)。

🧠 控制平面(大脑)

控制平面是 K8s 的 神经中枢,负责决策和指挥:

  • kube-apiserver :K8s 的"门卫"兼"前台",所有请求都从这过,负责验证和处理。你可以通过 REST、kubectlkubeadm 来访问它 🚪
  • 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 的入门概述就到这里!接下来就是动手实践了,纸上得来终觉浅,绝知此事要躬行。下篇见!👋

相关推荐
暖和_白开水1 小时前
数据分析agent(十三_3):docker mysql容器镜像服务的异常错误
mysql·docker·容器
爱小黄3 小时前
使用docker搭建集群-使用 Docker 搭建 KingbaseES 集群
运维·docker·容器
张gangtie4 小时前
K8s 节点切换容器运行时(Docker -> containerd)排错经历
kubernetes
余—笙5 小时前
Docker安装rabbitmq并安装延迟队列插件
docker·容器·rabbitmq
沉迷学习 日益消瘦6 小时前
10-Gateway API
运维·kubernetes·gateway
心念枕惊6 小时前
Docker--Docker Swarm集群
运维·docker·容器
敖行客 Allthinker7 小时前
docker容器安装Python反推镜像步骤(适用于临时调试用)
python·docker·容器
减瓦7 小时前
深入 Quarkus:云原生时代 Java 的重生之路
java·开发语言·云原生