k8s --- resource 资源

k8s --- resource 资源

什么是resource

在 Kubernetes 中,资源 是一个端点,它使用 Kubernetes API 来存储某种 API 对象 的集合. 也可以说k8s中一切皆资源

简单来说:

  • 资源是 Kubernetes API 中的一个实体。比如 Pod、Deployment、Service 都是资源。
  • 你通过创建、修改、删除这些资源对象来告诉 Kubernetes 你期望的集群状态。
  • 每个资源都有其特定的 结构和功能,用来描述你想要运行的应用、网络、存储等

所有 Kubernetes 资源定义和状态都持久化存储在 etcd 中

如何定义一个资源

每个 Kubernetes 资源对象通常由以下几部分组成,定义在一个 YAML 或 JSON 文件中 (大概的模版,根据具体资源类型不同):

yaml 复制代码
apiVersion: v1           # ① 使用的 API 版本
kind: Pod                # ② 资源的类型
metadata:                # ③ 资源的元数据
  name: my-pod           #    资源名称
  labels:                #    标签,用于识别和分组
    app: my-app
spec:                    # ④ 资源的"期望状态",核心配置
  containers:
  - name: nginx
    image: nginx:1.19
    ports:
    - containerPort: 80
status:                  # ⑤ 资源的"实际状态",由 Kubernetes 自动填充

k8s资源分类

工作负载资源 --- 用于管理和运行你的应用程序容器。

资源 缩写 作用
Pod po 最小的部署单元,包含一个或多个容器。
Deployment deploy 管理无状态应用的 Pod 副本,支持滚动更新。
StatefulSet sts 管理有状态应用的 Pod,提供稳定的标识和存储。
DaemonSet ds 确保每个(或指定)节点上都运行一个 Pod 副本。
Job job 创建一个或多个 Pod,并确保它们成功运行至结束。
CronJob cj 基于时间表来运行 Job。
ReplicaSet rs 维护一组稳定的 Pod 副本,通常由 Deployment 自动管理。

服务发现与负载均衡资源 --- 用于使你的应用能够被网络发现和访问。

资源 缩写 作用
Service svc 为一组 Pod 提供稳定的网络入口和负载均衡。
Ingress ing 管理外部 HTTP/HTTPS 流量访问集群内部服务的规则。
Endpoints ep 记录一个 Service 对应的所有 Pod IP 地址,通常自动生成。

配置与存储资源 --- 用于管理应用配置、敏感信息和数据持久化。

资源 缩写 作用
ConfigMap cm 用于存储非机密的配置数据,以键值对形式。
Secret sec 用于存储敏感信息,如密码、令牌、密钥。
PersistentVolume pv 集群中的一块网络存储资源。
PersistentVolumeClaim pvc 用户对存储的请求,Pod 通过 PVC 使用 PV。
StorageClass sc 定义 PV 的"类别",支持动态创建 PV。
namespace ns 用来将同一个物理集群划分为多个虚拟集群的机制|

资源的执行者 --- controller

  • Controller(控制器)是 Kubernetes 的"自动化运维机器人",它们持续监控集群状态,并努力确保系统的"实际状态"与你定义的" (资源的yaml文件)期望状态"保持一致。
  • 不是每个资源都有一个控制器,但绝大多数核心资源都由对应的控制器管理

由 Controller 管理的"主动"资源

  • 这些是 Kubernetes 生态系统中的"劳动者"。它们有生命周期,需要被创建、更新、删除,以维护某种状态。
资源 控制器 控制器的作用
Deployment Deployment Controller 确保指定数量的 Pod 副本在运行,并处理更新和回滚。
StatefulSet StatefulSet Controller 管理有状态 Pod 的部署和扩缩容,维护其标识和存储。
DaemonSet DaemonSet Controller 确保每个(或指定)节点上都运行一个 Pod 副本。
Job Job Controller 确保一个或多个 Pod 成功运行至结束。
Service Endpoints Controller 监控 Pod 的变化,并更新 Service 对应的 Endpoints 对象。
Pod 由创建它的控制器管理 Pod 本身通常由更高级的控制器管理 (如deployment)。Node 故障时,由对应控制器创建新 Pod。
Ingress Ingress Controller 它负责读取 Kubernetes 集群中的 Ingress 资源规则,并据此实现一个真正的、可处理 HTTP/HTTPS 流量的负载均衡器或反向代理

无 Controller 的"被动"资源

  • 这些是 Kubernetes 生态系统中的"配置单"或"原材料"。它们本身不会"做"任何事情,只是被其他资源引用和使用。
资源 原因说明
ConfigMap 只是一个存储配置数据的容器。Pod使用它,但它自己不需要行动。
Secret 同ConfigMap,只是用于存储敏感数据。
PersistentVolume 代表一块存储资源。由管理员或StorageClass创建,等待被PVC申请。
PersistentVolumeClaim 是一个存储请求。PV Controller会监听PVC并为其绑定PV,但PVC本身不执行操作。
Namespace 是一个逻辑边界,本身不需要维护状态。
ServiceAccount 是一个身份标识,被Pod使用,但自己不需要行动。
相关推荐
阿里云云原生4 小时前
火热报名中!2025 龙蜥操作系统大会亮点速递
云原生
梁正雄4 小时前
18、docker-macvlan-2-示例
运维·docker·容器·macvlan
Ryan ZX5 小时前
openEuler 22.03-Docker离线安装教程
运维·docker·容器
brucelee1866 小时前
Ubuntu安装单节点MicroK8s
docker·容器·kubernetes
Dobby_059 小时前
【Docker】容器网络探索(二):实战理解 host 网络
网络·docker·云原生
橙色云-智橙协同研发13 小时前
从 CAD 图纸到 Excel 数据:橙色云智橙 PLM 打造制造企业数字化协同新模式
大数据·功能测试·云原生·cad·plm·云plm·bom提取
Wang's Blog17 小时前
Nestjs框架: 微服务事件驱动通信与超时处理机制优化基于Event-Based 通信及异常捕获实践
微服务·云原生·架构·nestjs
YXWik617 小时前
新版若依微服务增强swagger增强集成knife4j
微服务·云原生·架构
马达加斯加D17 小时前
k8s --- Intro
云原生·容器·kubernetes