欢迎各位大佬互三学习!
目录
1. 什么是 K8s 的 Namespace?
2. 系统默认创建了哪几个 Namespace?
3. 什么是 Pod?
4. 解释 Pod 的生命周期
核心生命周期阶段
容器详细状态
5. Init 类型容器有什么特点,主要用途?
核心特点
主要用途
6. Sidecar 类型容器和 Init 容器的区别在哪?
7. 什么是静态 Pod?
8. 说明 K8s 控制器的作用?
9. 什么是 ReplicaSet,说明它的主要用途?
核心用途
10. Deployment 控制器是如何工作的,举例说明其常见用途?
工作原理
常见用途
11. 解释 DaemonSet,列举其使用场景
典型使用场景
12. 什么是 StatefulSet,其主要作用是什么?
核心作用
13. 说明 Job 与 CronJob 的功能
Job 功能
CronJob 功能
本文整理 K8s 入门核心基础概念,涵盖命名空间、Pod、各类控制器等高频知识点,内容简洁易懂,适合快速梳理和复习,也可作为入门笔记参考。
1. 什么是 K8s 的 Namespace?
Kubernetes 支持基于同一个物理集群创建多个虚拟集群,这些虚拟集群即为Namespace(命名空间)。所有命名空间共享物理集群的节点、CPU、内存等底层硬件资源,但在资源管理、权限控制、资源命名等层面相互独立,实现集群内的资源隔离与分组管理。
2. 系统默认创建了哪几个 Namespace?
K8s 集群初始化后会默认创建 4 个核心命名空间,各有专属用途:
- default:默认工作命名空间,无需手动创建即可直接部署 Pod,适用于测试或临时业务部署。
- kube-node-lease:存储与节点关联的 Lease(租约)对象,kubelet 通过该命名空间向控制面发送心跳(默认 10 秒 / 次),控制面据此检测节点故障。
- kube-public:所有客户端(含未认证客户端)均可读取,为集群级公共资源预留,存放集群初始化 ConfigMap、版本信息、公共证书等公共配置(公共属性为约定而非强制)。
- kube-system:存放 K8s 所有核心系统组件和必备插件,包括 kube-apiserver、kube-controller-manager 等控制面组件,以及 Calico/Flannel(网络)、CoreDNS(域名解析)、Metrics-server(监控)等插件,优先级极高,禁止随意修改该命名空间内资源。
3. 什么是 Pod?
Pod 是 Kubernetes 中最小的部署和工作单元,由一个或多个紧密耦合的容器组成。Pod 内的所有容器共享网络命名空间、存储卷、主机名等资源,且会被统一调度到同一个节点,实现一起启动、一起停止、一起销毁,解决容器间的紧密协作问题。
4. 解释 Pod 的生命周期
Pod 从创建到销毁会经历多个核心生命周期阶段,核心状态由 K8s 控制面维护,同时容器自身也有细分状态:
核心生命周期阶段
容器详细状态
- Waiting(等待):容器处于启动前的准备阶段(如拉取镜像、等待依赖)。
- Running(运行):容器正常运行中。
- Terminated(终止):容器已停止运行,包含正常 / 非正常终止两种情况。
5. Init 类型容器有什么特点,主要用途?
Init 容器是 Pod 内的特殊前置容器,专为业务容器做初始化准备,核心特点和用途如下:
核心特点
主要用途
为业务容器提供初始化能力,解决业务容器启动前的依赖问题,常见场景:
- 检查后端服务(如数据库、Redis)是否可用;
- 拉取业务配置、初始化存储目录;
- 执行预启动脚本、配置环境变量。
6. Sidecar 类型容器和 Init 容器的区别在哪?
Sidecar 容器与 Init 容器均为 Pod 内的辅助容器,但执行时机、生命周期、核心作用完全不同,核心区别如下:
| 执行时机 | 业务容器启动前运行 | 与业务容器并行启动 |
| 生命周期 | 一次性执行,完成后退出 | 长期运行,与业务容器生命周期绑定(业务容器销毁则 Sidecar 也销毁) |
| 核心作用 | 初始化、依赖检查、环境准备 | 增强业务容器能力,提供持续辅助服务 |
| 运行次数 | 仅运行一次(失败则重启) | 全程运行,随业务容器持续工作 |
典型示例:Init 容器检查数据库连通性,Sidecar 容器做日志收集、流量代理、服务监控。
7. 什么是静态 Pod?
静态 Pod 是由节点上的 kubelet 守护进程直接管理的 Pod,无需 K8s APIServer 监管,是一种特殊的 Pod 部署方式,核心特性:
8. 说明 K8s 控制器的作用?
K8s 控制器(Controller)是集群的核心管理组件,基于声明式 API工作,核心作用:持续监控集群的当前状态,与用户定义的期望状态进行对比,若存在差异,自动执行调谐操作(如创建、删除、更新 Pod),将集群状态逐步调整为期望状态,实现集群资源的自动化管理,无需人工干预。
简单来说:控制器的核心是保证 “实际状态”=“期望状态”。
9. 什么是 ReplicaSet,说明它的主要用途?
ReplicaSet 是 K8s 中用于管理 Pod 副本数量的核心控制器,是传统 ReplicationController 的升级版,功能更强大、语法更灵活。
核心用途
维护集群中指定数量的 Pod 副本始终处于运行状态,确保应用的高可用性:
注意:ReplicaSet 仅负责 Pod 副本数量的维护,不支持应用的版本更新、回滚等高级功能,通常不会单独使用,而是作为Deployment 的底层组件被调用。
10. Deployment 控制器是如何工作的,举例说明其常见用途?
Deployment 是 K8s 中最常用的无状态应用管理控制器,基于分层管理思想工作,是 ReplicaSet 的上层封装,解决了 ReplicaSet 无法做版本管理的问题。
工作原理
Deployment 通过 Deployment → ReplicaSet → Pod 三层级关系实现应用的全生命周期管理:
常见用途
示例:将应用镜像从v1.0更新为v2.0,Deployment 会创建新 ReplicaSet(对应 v2.0),逐步将 Pod 数从 0 扩容到 3,同时将旧 ReplicaSet(对应 v1.0)的 Pod 数从 3 缩容到 0,整个过程中始终有 3 个 Pod 运行,服务不中断。
11. 解释 DaemonSet,列举其使用场景
DaemonSet 是 K8s 中用于在节点上部署守护进程的控制器,核心特性:确保集群中全部节点或符合标签选择器的部分节点上,各运行一个且仅一个 Pod 副本。
- 当有新节点加入集群时,DaemonSet 会自动为该节点创建对应的 Pod;
- 当有节点从集群移除时,该节点上的 DaemonSet Pod 会被自动回收;
- 删除 DaemonSet 时,其创建的所有 Pod 会被一并删除。
典型使用场景
12. 什么是 StatefulSet,其主要作用是什么?
StatefulSet 是 K8s 中专门用于管理有状态应用的控制器,针对需要稳定标识、持久存储、有序操作的应用设计,与 Deployment(管理无状态应用)形成互补。
StatefulSet 管理的 Pod 基于相同的容器规约创建,但为每个 Pod 维护一个粘性的、永久不变的唯一 ID,Pod 的名称、网络标识、存储卷均与该 ID 绑定,即使 Pod 被重建、调度到其他节点,其 ID 和相关资源也不会改变。
核心作用
解决有状态应用的部署、管理难题,满足有状态应用的核心需求,适用于需要以下一个或多个特性的应用:
13. 说明 Job 与 CronJob 的功能
Job 和 CronJob 均为 K8s 中用于管理一次性 / 周期性任务的控制器,适用于非长期运行的批处理任务,与管理常驻服务的 Deployment、DaemonSet 形成互补。
Job 功能
用于管理一次性批处理作业,核心关注任务是否成功结束(容器退出码为 0),不要求容器长期运行。
- 当 Job 创建的 Pod 全部正常终止(Succeeded),则 Job 完成;
- 若 Pod 执行失败,可通过配置backoffLimit设置重试次数;
- 支持并行执行多个 Pod(通过parallelism配置并行数)。
典型使用场景:海量日志分析 / 清理、集群初始化操作、数据批量导入 / 导出、一次性计算任务。
CronJob 功能
基于时间调度规则的 Job 升级版,用于管理周期性、定时执行的批处理作业,本质是按时间规则自动创建并执行 Job。
- 通过Cron 表达式定义调度规则(分时日月周),如每天凌晨 1 点执行、每小时执行一次;
- 支持配置任务的超时时间、并发策略(是否允许任务并行执行)、历史任务保留数;
- 若某次调度的任务未执行(如节点故障),可配置是否补执行。
典型使用场景:数据库定时备份、日志定时清理、业务报表定时生成、集群定时运维检查、跨集群数据定时同步。
结语:以上 13 个概念是 K8s 入门的核心基础,理解这些概念能为后续学习服务发现、持久化存储、集群调度、监控运维等内容打下坚实基础。后续会持续更新 K8s 进阶知识点,欢迎关注~




