Kubernetes API 资源详解:一文读懂 Kubernetes 所有资源对象¶
文章摘要¶
很多人学习 Kubernetes 时会接触大量资源对象:
- Pod
- Deployment
- Service
- Ingress
- ConfigMap
- Secret
- PVC
- StatefulSet
但往往学到后面越来越混乱。
实际上 Kubernetes 本质上是一个以 API 资源为核心的声明式管理平台。
本文将从整体视角讲解 Kubernetes 资源体系,帮助你建立完整的 Kubernetes 资源认知框架。
学习目标¶
阅读完本文后,你将掌握:
- 什么是 Kubernetes API
- 什么是资源对象(Resource)
- Kubernetes 资源分类
- API Group 机制
- Namespace 作用
- 常见资源关系图
- Kubernetes 资源生命周期
适用人群¶
本文适合:
- Kubernetes 初学者
- 运维工程师
- DevOps 工程师
- 云原生学习者
- Kubernetes 面试准备人员
Kubernetes 到底是什么?¶
很多人认为:
这句话没有错。
但从架构角度来看:
实际上:
Kubernetes 所有功能最终都表现为:
例如:
本质上:
什么是 Kubernetes API?¶
API 可以理解为:
例如:
创建 Pod:
实际上:
所有资源最终都会经过:
管理。
什么是 Resource(资源对象)?¶
资源对象可以理解为:
例如:
工作负载¶
网络资源¶
存储资源¶
配置资源¶
集群资源¶
这些都是 API 资源。
Kubernetes 资源统一结构¶
几乎所有资源都长这样:
主要包含四部分:
apiVersion¶
资源版本。
例如:
kind¶
资源类型。
例如:
metadata¶
资源元数据。
例如:
spec¶
期望状态。
例如:
Kubernetes 的核心思想¶
Kubernetes 采用:
模式。
例如:
表示:
而不是:
区别很大。
用户负责:
Controller 负责:
Kubernetes 资源分类¶
为了便于理解,可以分成六大类。
第一类:工作负载资源¶
负责:
主要包括:
| 资源 | 作用 |
|---|---|
| Pod | 最小运行单元 |
| Deployment | 无状态应用 |
| StatefulSet | 有状态应用 |
| DaemonSet | 每节点运行 |
| Job | 一次性任务 |
| CronJob | 定时任务 |
第二类:服务发现资源¶
负责:
包括:
| 资源 | 作用 |
|---|---|
| Service | 服务发现 |
| Ingress | 流量入口 |
| EndpointSlice | 后端地址管理 |
第三类:存储资源¶
负责:
包括:
| 资源 | 作用 |
|---|---|
| PV | 存储卷 |
| PVC | 存储申请 |
| StorageClass | 存储模板 |
第四类:配置资源¶
负责:
包括:
| 资源 | 作用 |
|---|---|
| ConfigMap | 普通配置 |
| Secret | 敏感配置 |
第五类:安全资源¶
负责:
包括:
| 资源 | 作用 |
|---|---|
| ServiceAccount | 服务身份 |
| Role | 权限 |
| RoleBinding | 权限绑定 |
| ClusterRole | 集群权限 |
第六类:集群资源¶
负责:
包括:
| 资源 | 作用 |
|---|---|
| Node | 节点 |
| Namespace | 命名空间 |
| ResourceQuota | 资源配额 |
Kubernetes 资源关系图¶
一个典型业务:
再加上存储:
这就是 Kubernetes 最常见的资源关系链路。
什么是 API Group?¶
随着 Kubernetes 资源越来越多。
出现了:
这就是:
机制。
例如:
apps¶
batch¶
networking¶
用于资源分类管理。
Namespace 的作用¶
Namespace 可以理解为:
例如:
同一个资源名称:
可以同时存在于:
和:
中。
查看所有 API 资源¶
查看支持资源:
查看 API 版本:
查看资源详情:
查看字段:
常见资源生命周期¶
以 Deployment 为例:
创建:
提交:
保存:
控制器处理:
生成:
最终创建:
流程:
生产环境最佳实践¶
尽量使用声明式管理¶
推荐:
避免:
长期维护。
使用 Namespace 隔离环境¶
例如:
使用 Labels 管理资源¶
方便筛选。
资源统一 Git 管理¶
实现 GitOps。
常见故障排查¶
查看资源:
查看详细信息:
查看 YAML:
查看事件:
面试常见问题¶
Kubernetes 中什么是资源对象?¶
Kubernetes 管理的基本单位。
Pod 是资源吗?¶
是。
Deployment 是资源吗?¶
是。
Kubernetes 核心管理对象是什么?¶
API Resource。
Namespace 的作用是什么?¶
资源隔离。
Deployment 和 Pod 的关系?¶
Deployment 管理 Pod。
FAQ¶
Kubernetes 有多少资源对象?¶
内置资源超过 60 种。
安装 CRD 后更多。
为什么所有资源都有 YAML?¶
因为 Kubernetes 采用声明式管理。
API Version 为什么会变化?¶
用于兼容新旧版本。
总结¶
Kubernetes 本质上是一个资源驱动的平台。
无论是:
- Pod
- Deployment
- Service
- Ingress
- PVC
本质上都是 Kubernetes API 资源。
可以记住一句话:
学会 Kubernetes,本质上就是学会管理 Kubernetes 的各种资源对象。
相关阅读¶
- [Kubernetes 工作负载资源详解]
- [Kubernetes 服务资源详解]
- [Kubernetes 存储资源详解]
- [Kubernetes 网络资源详解]
- [Kubernetes 安全资源详解]