跳转至

Kubernetes 简介

Kubernetes (简称 k8s) 是一个管理和自动化“集装箱”(容器)的“智能港口系统”

想象一下,你的应用程序和它需要的所有运行环境(代码、库、设置)都被打包进了一个个标准的“集装箱”(也就是 容器,比如 Docker 容器)。这样做的好处是,无论在哪里,这个“集装箱”都能标准、一致地运行。

现在,你可能只有几个“集装箱”,手动管理还行。但如果你的应用非常火爆,需要成百上千个“集装箱”来应对访问量,问题就来了:

  • 这么多“集装箱”,应该放在哪些机器上?
  • 某个“集装箱”坏了(程序崩溃了)怎么办?
  • 访问量突然增大,如何快速增加更多“集装箱”?访问量小了,如何减少以节省成本?
  • 这些“集装箱”之间如何互相通信?

Kubernetes 就是解决这些问题的“大脑”或“总控中心”

它是一个开源的容器编排平台,核心工作就是自动化地处理以上所有问题:

  • 自动化部署 (Automated Scheduling)

    • 你告诉 K8s:“我需要运行 3 个前端应用的容器和 2 个数据库的容器”
    • K8s 会自动在整个机群中找到最合适的服务器,把它们放上去并运行起来,你不用关心具体是哪台机器
  • 自我修复 (Self-Healing)

    • K8s 会像一个不知疲倦的管理员,持续监控着所有容器
    • 如果某个容器崩溃了或者运行它的服务器宕机了,K8s 会立刻发现,并自动启动一个新的容器来替代它,保证你的服务不中断
  • 弹性伸缩 (Auto-scaling)

    • 你可以设定规则,比如“当 CPU 使用率超过 80% 时,就自动增加一个应用容器”
    • 当流量高峰来临时,K8s 会自动扩容;当流量回落时,它又会自动缩减,帮你节省资源成本
  • 服务发现和负载均衡 (Service Discovery & Load Balancing)

    • K8s 会为一组相同的容器提供一个统一的入口(就像一个总机号码),并自动将访问请求智能地分发给后面的某个健康容器
    • 即使容器的 IP 地址变来变去,这个统一入口也不会变

TL;DR: Kubernetes 是一个对云的编排系统, 让开发者可以专注于编写代码, 而不用过多操心底层复杂的部署和运维工作