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使用,但自己不需要行动。
相关推荐
❀͜͡傀儡师3 小时前
docker安装mac系统
macos·docker·容器
0***145 小时前
PHP在微服务中的架构设计
微服务·云原生·架构
RUNNING123!8 小时前
RedHat 7.9 docker 安装 zabbix
docker·容器·zabbix
weixin_449290018 小时前
docker_ollama
docker·容器·eureka
weixin_537765809 小时前
【容器技术】虚拟化原理与Docker详解
运维·docker·容器
虚伪的空想家10 小时前
arm架构服务器使用kvm创建虚机报错,romfile “efi-virtio.rom“ is empty
linux·运维·服务器·javascript·arm开发·云原生·kvm
u***u68510 小时前
云原生架构2025年趋势:Serverless与边缘计算
云原生·架构·serverless
火车头-11010 小时前
【docker 部署nacos1.4.7】
运维·docker·容器
j2001032210 小时前
Docker 部署与管理
docker·容器·eureka
weixin_5377658011 小时前
【Docker基础】常用命令详解
docker·容器·eureka