13_kubernetes_concepts/13.1_intro.md
如图 13-1 所示,Kubernetes 使用舵手图标作为项目标识。
图 13-1:Kubernetes 项目标识
Kubernetes (常简称为 K8s) 是 Google 开源的容器编排引擎。如果说 Docker 解决了 “如何打包和运送集装箱” 的问题,那么 Kubernetes 解决的就是 “如何管理海量集装箱的调度、运行和维护” 的问题。
它不仅仅是一个编排系统,更是一个 云原生应用操作系统。
名字由来:Kubernetes 在希腊语中意为 “舵手” 或 “飞行员”。K8s 是因为 k 和 s 之间有 8 个字母。
当我们在单机运行几个容器时,Docker Compose 就足够了。但在生产环境中,我们需要面对:
Kubernetes 完美解决了这些问题。
Kubernetes 的核心概念包括 Pod、Node、Deployment、Service 和 Namespace 等,这些是学习和使用 Kubernetes 的基础。
Kubernetes 的最小调度单位。一个 Pod 可以包含一个或多个紧密协作的容器 (共享网络和存储)。就像豌豆荚里的豌豆一样。
运行 Pod 的物理机或虚拟机。
定义应用的期望状态 (如:需要 3 个副本,镜像版本为 v1)。K8s 会持续确保当前状态符合期望状态。
定义一组 Pod 的访问策略。提供稳定的 Cluster IP 和 DNS 名称,负责负载均衡。
用于多租户资源隔离。
如果你已经熟悉 Docker,学习 K8s 会很容易:
| Docker 概念 | Kubernetes 概念 | 说明 |
|---|---|---|
| Container | Pod | K8s 增加了一层 Pod 包装 |
| Volume | PersistentVolume | K8s 的存储更加抽象和强大 |
| Network | Service/Ingress | K8s 的网络模型更扁平 |
| Compose | Deployment + Service | 声明式配置的理念是一致的 |
Kubernetes 也是 C/S 架构,由 Control Plane (控制平面) 和 Worker Node (工作节点) 组成:
Kubernetes 的学习曲线较陡峭。建议的学习路径: