k8s是什么?

一句话概括:Kubernetes (k8s) 是一个开源的容器编排系统,它的核心工作是 自动化部署、管理、扩展 你的 容器化 应用程序(docker)。

你可以把它想象成一个 数据中心的 超级管理员 或者 应用程序的 自动驾驶系统


一个完美的比喻:从货运码头到全球物流

为了理解 k8s,我们延续之前 Docker 的集装箱比喻

  1. Docker 创造了 集装箱:它把应用程序(货物)和所有依赖(系统库、环境)打包成一个标准化的、轻量的容器(集装箱)。

  2. 但问题来了:当你有成千上万个集装箱(微服务)需要在全球各地(服务器集群)运输时,谁来负责?

    1. 哪个集装箱该上哪艘货船(服务器)?

    2. 货船坏了怎么办?

    3. 突然来的大量订单,如何快速增加货船和集装箱?

    4. 如何监控所有货物的状态?

Kubernetes 就是为解决这些问题而生的「智能化全球物流系统」!

管理 一个由 无数货船 (服务器)组成的舰队(集群)自动地完成 所有调度、运维和灾难恢复工作

核心功能:它具体能做什么?

k8s 为你自动化处理了以下繁琐的事情:

|-----------|----------------|------------------------------------------------------|
| 功能 | 比喻 | 实际作用 |
| ​服务部署与编排​ | 自动分配 集装箱 到最佳货船 | 将 容器化应用 部署到 集群中最合适的服务器。 |
| ​伸缩​ | 高峰期 自动增加 货船 | 根据 CPU、内存等指标或自定义规则,自动增加或 减少应用实例的数量。 |
| ​负载均衡​ | 智能 分配卸货任务 | 将 外部用户请求 智能地、均匀地分发给 后台多个健康的应用程序实例。 |
| ​自我修复​ | 自动替换 故障货船 | 如果 某个容器或服务器宕机,k8s 会 自动重启 容器或将其 调度 到其他健康服务器上,保证服务不中断。 |
| ​服务发现​ | 自动更新 货物追踪系统 | 自动为 每个服务 创建一个稳定的访问地址 和 域名,让服务之间能轻松找到并调用对方。 |
| ​配置与密钥管理​ | 安全地分发货物清单和钥匙 | 统一管理应用程序的 配置文件 和 敏感信息(如密码、证书),并安全地分发给它们。 |
| ​滚动更新与回滚​ | 不停运 更新舰队 | 可以零停机地 逐步更新应用程序版本。如果出问题,一键回滚到上一个稳定版本。 |


核心架构:它是如何工作的?

Kubernetes 集群通常由两类节点组成:

  1. 控制平面 (Control Plane / Master Node)「大脑」

    1. 这是集群的指挥中心 ,负责 接收 指令 、做出全局决策 (如调度、扩展),并 维护整个集群的期望状态

    2. 你(运维/开发者)通过与大脑对话 (使用 kubectl命令或 API)来下达 指令

  2. 工作节点 (Worker Nodes)「干活的双手」

    1. 这些是真正运行 你应用程序容器(Docker 等)的 服务器

    2. 每个工作节点上都有一个 代理kubelet ),负责与大脑通信并 按照 指令 启动、停止、监控容器


为什么它如此重要?

  • 抽象了基础设施 : 开发者 不再需要关心 应用 具体跑在哪台物理机上k8s 提供了一个统一的、抽象的"平台"来运行应用。

  • 声明式配置 : 你只需要告诉 k8s 你"期望"的应用状态是什么 (例如:我要运行 3 个 Nginx 实例),而不是"如何"一步步做到(命令式)。k8s 的大脑会自动工作,确保现实始终符合你的期望。

  • 云原生基石: 它是现代微服务架构、DevOps、持续交付的基石,让你能高效地构建和运营可扩展、高可用的应用。

总结

所以,Kubernetes (k8s) 不是一个简单的工具,而是一个 强大的容器编排平台 。它接管了 部署 和 管理 分布式应用的 所有运维复杂性,让开发者可以更专注于业务逻辑本身,从而实现了真正的 云原生开发。