很多人学 K8s 学不下去,不是因为难,而是第一天就被一堆名词打蒙了。
今天我们不追求全,只讲K8s最核心、最有用的几个概念,讲到你“再也绕不开”。
Kubernetes 是一个开源的容器编排平台,它的设计初衷是让部署和管理大规模容器化应用变得简单。为了理解 K8s,我们可以把它想象成一个操作系统的分布式版本:它管理整个集群中的容器。
以下是 K8s 中最核心的几个概念,按照从底层资源到逻辑控制的顺序排列:
一、最小调度单位:Pod(可以理解为豌豆荚的荚)
在K8s里,你不会直接运行容器,而是运行Pod。
-
定义:Pod 是 K8s 中最小的可部署单元,一个 Pod 可以包含一个或多个紧密相关的容器。
-
特性:同一个 Pod 内的容器共享网络命名空间(IP地址和端口)和存储卷(Volume)。它们可以通过 localhost 互相通信。
Pod ≠ 容器,但容器一定在 Pod 里。一个豌豆荚里有一个或多个豌豆(容器)。
二、集群架构: Nodes(节点)
K8s集群由两类节点组成:
-
Control Plane(Master Node):大脑,负责决策(如调度)、检测和响应集群事件。
-
Worker Node:打工人,负责运行实际的应用容器。每个 Node 上都有 kubelet(负责与master通信)和容器运行时(如Docker 或 containerd)。
三、控制器: Deployment & StatefulSet
你通常不会手动创建 Pod,而是通过控制器来管理它们。以实现“自愈”和“扩缩容”。
-
Deployment:最常用的控制器,适用于无状态应用(如web服务、api服务)。它定义了副本数量,如果某个 Pod 挂了,Deployment 会自动补齐。
-
StatefulSet:适用于有状态应用(如数据库Redis,MySQL),保证 Pod 有固定的网络标识和持久化存储。
四、服务发现:Service
Pod 是有生命周期的,一旦销毁重启,IP就会变。 Service 解决了这个问题。
作用:它为一组 Pod 提供一个固定的虚拟IP。无论后端 Pod 如何变动,客户端只需要访问Service 的 IP 即可。
负载均衡:Service 会自动将流量分发到后端的多个 Pod 实例上。
五、配置管理:ConfigMap & Secret
为了实现代码与配置分离:
-
ConfigMap:存储非敏感配置(如环境变量、配置文件路径)。
-
Secret:存储敏感信息(如密码、Token、密钥),以 Base64 编码存储,安全性更高。
六、存储:Volume & PersistentVolume(PV)
容器内的文件是短暂的,容器重启后数据会丢失。
-
PV(PersistnetVolume):集群中的一块存储资源。
-
PVC(PersistentVolumeClaim):用户对存储的需求申请(比如“我要10G空间”)。K8s 会自动把 PVC 绑定到合适的PV上。
七、K8s的设计哲学
K8s 的核心是声明式 API (Declarative API)。你不需要告诉 K8s “怎么做”(第一步启动容器,第二步检查状态),你只需要告诉它**“最终状态是什么”**(我要 3 个运行中的 Nginx 副本),剩下的事情由 K8s 的控制循环(Control Loop)自动完成。
*源码地址*
1、公众号“Codee君”回复“源码”获取源码
友情链接:加班费计算器(vx小程序搜索“加班计”)
如果您喜欢这篇文章,请您(点赞、分享、亮爱心),万分感谢!