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使用,但自己不需要行动。
相关推荐
江畔何人初16 小时前
pod的定义以及创建过程
linux·运维·云原生
等什么君!17 小时前
docker -数据卷技术
运维·docker·容器
花酒锄作田18 小时前
Debian 13基于kubeadm和containerd部署单节点kubernetes
kubernetes·containerd·cilium
上天_去_做颗惺星 EVE_BLUE18 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
Gary董20 小时前
高并发的微服务架构如何设计
微服务·云原生·架构
东哥爱编程20 小时前
使用Runpod进行gpu serverless推理
云原生·serverless
好好沉淀20 小时前
Docker开发笔记(详解)
运维·docker·容器
Ankie Wan21 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc
lcx_defender1 天前
【Docker】Docker部署运行nacos
运维·docker·容器
啦啦啦小石头1 天前
docker添加用户权限不使用sudo
运维·docker·容器