Coursera 笔记

Module 02 · Kubernetes Basics

Kubernetes Objects - Part 1Kubernetes 对象(Part 1)详解

Coursera ↗


学习目标

观看完本视频后,你将能够:

  • ✅ 定义 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 通过对象模型定义系统的期望状态,并通过控制机制自动维持这一状态,从而实现高效、自动化的容器化管理。 🚀