Module 02 · Kubernetes Basics
Kubernetes Objects - Part 1Kubernetes 对象(Part 1)详解
学习目标
观看完本视频后,你将能够:
- ✅ 定义 Kubernetes 对象及其属性
- ✅ 描述 基本 Kubernetes 对象及其特性
- ✅ 展示 Kubernetes 对象之间的关系
一、Kubernetes 对象的基本概念
现实世界中的“对象”
对象(Object)是具有 标识(Identity)、状态(State) 和 行为(Behavior) 的实体。
📦 现实例子:
- 窗口(Window)
- 购物车(Shopping Cart)
💻 软件对象(Software Object):
- 是一组数据的集合,包含标识、状态与行为。
- 示例:变量、数据结构、函数等。
🏦 实体(Entity)示例:
- 银行系统中的“客户账户”就是一个具有标识和数据的实体。
🧱 持久性(Persistent):
指即使服务器故障或网络攻击发生,仍能保持存在。
例如:持久化存储(Persistent Storage)。
二、Kubernetes 对象(Kubernetes Objects)
Kubernetes 对象是 持久化的实体(Persistent Entities),用于表示系统中要创建的各种资源。
📘 常见对象示例:
- Pods
- Namespaces
- ReplicaSets
- Deployments 等
对象结构
每个 Kubernetes 对象由两个主要字段组成:
| 字段 | 说明 |
|---|---|
| spec(规格) | 由用户提供,定义对象的“期望状态(desired state)”。 |
| status(状态) | 由 Kubernetes 提供,描述对象的“当前状态(current state)”。 |
💡 Kubernetes 的核心逻辑:
系统不断努力使当前状态(status)匹配用户定义的期望状态(spec)。
与对象交互的方式
- 通过 Kubernetes API 直接操作
- 使用 客户端库(Client Libraries)
- 使用命令行工具 kubectl
- 或两者结合
三、标签(Labels)与选择器(Selectors)
Labels
- 是附加在对象上的 键值对(Key-Value Pairs)。
- 用于标识、组织和分类对象。
- 一个标签不能唯一标识单个对象,多个对象可共享相同标签。
Label Selectors
是 Kubernetes 的核心分组机制,用于通过标签匹配找到一组对象。
四、命名空间(Namespaces)
作用
- 用于在同一个集群中隔离资源组。
- 有助于团队共享集群、节约成本或维护多个独立项目。
适用场景
- 多团队、多项目或用户众多的环境。
- 小型团队或单项目场景可使用单一命名空间。
示例
- kube-system:系统组件使用。
- default:默认命名空间,用于用户应用。
命名规则
每个对象在所属命名空间中必须具有唯一名称。
五、Pod —— 最基本的计算单元
定义
- Kubernetes 中最简单的可部署单位。
- 表示集群中一个运行中的进程或应用实例。
- 通常封装一个或多个容器。
扩展
- 通过复制 Pod(Replica)实现 水平扩展(Horizontal Scaling)。
YAML 定义示例
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
🔹 关键字段解释:
kind: 对象类型(此处为 Pod)spec: 定义容器运行的配置containers: 至少包含一个容器image: 指定运行镜像ports: 容器暴露的端口
六、ReplicaSet —— 控制 Pod 的副本数
概念
ReplicaSet 是一组运行中的 Pod 副本,用于实现 应用的水平扩展与高可用性。
核心字段
- replicas:期望的副本数量。
- selector:匹配 Pod 的标签,用于选中管理的 Pod。
- template:定义要创建的 Pod 模板。
💡 当副本数被更新时,ReplicaSet 会自动创建或删除 Pod 以匹配期望状态。
注意
不推荐直接创建 ReplicaSet,建议通过 Deployment 管理。
七、Deployment —— 高级对象
定义
Deployment 是一个更高层级的对象,用于:
- 管理 ReplicaSet;
- 控制 Pod 更新;
- 实现版本回滚与滚动更新。
特点
- 适合 无状态应用(Stateless Applications)。
- 有状态应用应使用 StatefulSet。
YAML 示例
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
滚动更新(Rolling Update)
- 自动扩展新版本到指定副本数;
- 同时将旧版本逐步缩减至零;
- 保证平滑升级,无需停机。
🧩 关系链条:
Deployment → ReplicaSet → Pod → Container
八、总结
| 对象类型 | 定义与作用 | 特点 |
|---|---|---|
| Kubernetes 对象 | 系统中持久存在的实体 | 具有 spec 与 status 两个核心字段 |
| Namespace | 集群内的资源隔离机制 | 用于多用户或多项目环境 |
| Pod | 最小部署单元 | 封装容器,支持水平扩展 |
| ReplicaSet | 控制 Pod 副本数 | 自动匹配期望状态 |
| Deployment | 管理 ReplicaSet 与 Pod | 支持滚动更新与版本控制 |
课程回顾
- Kubernetes 对象是 持久化实体,核心字段为
spec与status。 - Namespaces 用于在单个集群中隔离资源组。
- Pods 表示应用的运行实例。
- ReplicaSets 用于保持指定数量的 Pod 副本。
- Deployments 管理 ReplicaSets 和 Pods,提供高级功能(如滚动更新与回滚)。
✨ 一句话总结:
Kubernetes 通过对象模型定义系统的期望状态,并通过控制机制自动维持这一状态,从而实现高效、自动化的容器化管理。 🚀