K8s学习笔记(八) K8s资源对象 - 教程

news/2025/10/12 13:54:25/文章来源:https://www.cnblogs.com/lxjshuju/p/19136576

在 Kubernetes(K8s)中,资源对象(Resource Object)是集群的核心抽象,用于定义和描述集群的期望状态(Desired State),例如 “运行哪些应用”“应用需要多少资源”“如何访问应用” 等。K8s 的控制平面(如 kube-controller-manager、kube-scheduler)会持续监控这些资源对象,将集群的实际状态(Actual State)调整为期望状态,这一过程称为 “调和(Reconciliation)”。

1 资源对象的核心属性

所有 K8s 资源对象都通过 YAML 或 JSON 格式定义,且包含以下 5 个核心字段(缺一不可),其余字段为各资源的特有配置:

字段名作用说明示例值
apiVersion资源所属的 API 版本(不同资源有不同版本,如v1apps/v1apps/v1(Deployment 所属版本)
kind资源的类型(如 Pod、Deployment、Service)Deployment
metadata资源的元素材(唯一标识、标签、注释等)name: nginx-deploy``labels: app: nginx
spec资源的期望状态(核心配置,如 Pod 的容器镜像、资源限制、副本数等)replicas: 3(期望 3 个副本)
status资源的实际状态(由 K8s 自动维护,用户不可手动修改,如当前副本数、运行状态)readyReplicas: 3(实际 3 个就绪副本)

2 资源对象的分类(按功能)

K8s 资源对象数量众多,按核心能力可分为 6 大类,以下是每类中最常用、最核心的资源:

2.1 工作负载资源(Workload Resources)

用于定义应用的运行方式(副本数、生命周期、更新策略等),是部署应用的核心载体。

资源名称API 版本作用范围核心作用关键特性
Podv1命名空间级最小部署单元,包含 1 个或多个共享网络 / 存储的容器生命周期短暂(重启 IP 变化);容器共享localhost网络;需通过控制器管理
ReplicationController(RC)v1命名空间级早期副本控制器,确保指定数量的 Pod 运行(已被 ReplicaSet 替代)仅支持等值标签选择器;无回滚能力;逐步被淘汰
ReplicaSet(RS)apps/v1命名空间级RC 的升级版,支持集合标签选择器,管理 Pod 副本标签选择器更灵活(如app in (nginx, apache));通常被 Deployment 间接管理
Deploymentapps/v1命名空间级无状态应用控制器,基于 RS 实现,拥护滚动更新、回滚、扩缩容自动维护 RS 和 Pod;支持更新策略(maxSurge/maxUnavailable);生产首选
StatefulSetapps/v1命名空间级有状态应用控制器,为 Pod 提供固定标识(名称、网络、存储)Pod 名称固定(如web-0);存储与 Pod 绑定;支持有序启停 / 更新;适合数据库集群
DaemonSetapps/v1命名空间级确保所有(或指定)Node 运行 1 个 Pod 副本新 Node 加入时自动部署;适合节点级服务(日志收集、监控代理)
Jobbatch/v1命名空间级一次性任务控制器,确保 Pod 成功完成(退出码 0)后终止支持重试失败 Pod;可设置并行数(parallelism)和完成数(completions
CronJobbatch/v1命名空间级定时任务控制器,基于 Cron 表达式周期性触发 Job支持时区设置;历史任务保留策略;可暂停任务(suspend: true
HorizontalPodAutoscaler(HPA)autoscaling/v2命名空间级基于指标自动扩缩容 Pod 副本数(关联 Deployment/StatefulSet/RS)支持 CPU / 内存、自定义指标(如 QPS);可设置最小 / 最大副本数

2.2 服务发现与网络资源(Service Discovery & Networking)

用于暴露应用访问入口、管理网络规则,解决 Pod 动态 IP 的访问问题。

资源名称API 版本作用范围核心作用关键特性
Service(SVC)v1命名空间级为一组 Pod 提供固定访问 IP 和端口,实现内部负载均衡类型:ClusterIP(集群内)、NodePort(节点端口)、LoadBalancer(云负载均衡);通过标签选择器关联 Pod
EndpointSlicediscovery.k8s.io/v1命名空间级存储 Service 关联的 Pod 网络端点(IP + 端口),替代传统 Endpoint支持 IPv4/IPv6 双栈;自动分片,提升大规模集群性能;Service 默认依赖此资源
Endpointv1命名空间级早期存储 Service 端点的资源(被 EndpointSlice 替代,仅兼容旧版本)直接存储 Pod 的 IP 和端口;无分片机制,大规模集群性能差
Ingressnetworking.k8s.io/v1命名空间级管理外部 HTTP/HTTPS 流量入口,通过域名 / 路径转发到 Service需 Ingress Controller(如 Nginx)生效;承受 SSL 证书、路径重写、限流
IngressClassnetworking.k8s.io/v1集群级定义 Ingress 运用的控制器类型(如区分不同 Nginx 实例)每个 Ingress 需关联一个 IngressClass;避免不同控制器冲突
NetworkPolicynetworking.k8s.io/v1命名空间级定义 Pod 间的网络访问规则(允许 / 拒绝通信)需网络插件支持(如 Calico);控制入站(ingress)和出站(egress)流量
Gatewaygateway.networking.k8s.io/v1命名空间级 / 集群级定义网络网关(如负载均衡器、API 网关),作为流量入口的抽象标准化网关设置;承受 TCP/UDP/HTTP;与 Ingress 互补,更灵活
ServiceExportmulticluster.x-k8s.io/v1alpha1命名空间级跨集群服务导出(多集群场景)将本地 Service 暴露到其他集群;需配合 ServiceImport 使用
ServiceImportmulticluster.x-k8s.io/v1alpha1命名空间级跨集群服务导入(多集群场景)引用其他集群导出的 Service;搭建跨集群服务发现

2.3 配置与存储资源(Configuration & Storage)

用于管理应用配置、敏感信息和数据持久化,实现安装与代码分离。

资源名称API 版本作用范围核心作用关键特性
ConfigMap(CM)v1命名空间级存储非敏感配置数据(环境变量、配置文件)键值对存储;可通过环境变量或资料挂载到 Pod;修改后需重启 Pod 生效(除非热加载)
Secretv1命名空间级存储敏感数据(密码、证书),数据经 Base64 编码(非加密)类型:Opaque(通用)、docker-registry(镜像仓库凭证)、tls(证书);需配合外部工具(如 Vault)加密
PersistentVolume(PV)v1集群级集群级持久化存储资源,抽象底层存储(云盘、NFS 等)生命周期独立于 Pod;支持访问模式(ReadWriteOnce/ReadOnlyMany等);容量固定
PersistentVolumeClaim(PVC)v1命名空间级Pod 对存储的请求声明,向 PV 申请存储与 PV 通过 StorageClass 或属性匹配;Pod 通过 PVC 挂载存储,无需关心底层细节
StorageClass(SC)storage.k8s.io/v1集群级动态创建 PV 的模板,避免手动创建 PV关联存储插件(provisioner);支持设置存储性能(如 SSD);可定义回收策略
VolumeSnapshotsnapshot.storage.k8s.io/v1命名空间级存储卷快照(基于 PVC 创建)需存储插件帮助;用于数据备份 / 恢复;可基于快照创建新 PVC
VolumeSnapshotClasssnapshot.storage.k8s.io/v1集群级定义 VolumeSnapshot 的创建规则(如快照保留策略)关联快照插件(snapshotter);类似 StorageClass 的快照版本
CSI Driverstorage.k8s.io/v1集群级注册容器存储接口(CSI)驱动,扩展 K8s 存储能力允许第三方存储集成(如 Ceph、GlusterFS);替代传统 in-tree 存储插件

2.4 集群管理资源(Cluster Management)

用于管理集群节点、命名空间、资源配额等集群级配置。

资源名称API 版本作用范围核心作用关键特性
Nodev1集群级描述集群中的工作节点(物理机 / 虚拟机),记录资源和状态状态:Ready/NotReady;可标记污点(taints)和容忍(tolerations);支持标签分组
Namespace(NS)v1集群级实现资源隔离(如研发 / 测试 / 生产环境)默认 NS:defaultkube-systemkube-public;NS 内资源名称唯一
ResourceQuota(RQ)v1命名空间级限制命名空间内的资源使用总量(如 CPU、内存、Pod 数量)防止单个 NS 过度占用资源;支持硬限制(hard)和范围限制
LimitRange(LR)v1命名空间级为命名空间内的 Pod / 容器设置默认资源限制(CPU / 内存)和请求(requests)避免 Pod 无限制利用资源;可设置最小 / 最大资源值、默认请求 / 限制
PodDisruptionBudget(PDB)policy/v1命名空间级确保 Pod 在自愿中断(如节点升级)时的最小可用副本数避免因维护操作导致服务不可用;支持minAvailable(最小可用)或maxUnavailable(最大不可用)
RuntimeClassnode.k8s.io/v1集群级定义容器运行时(如 containerd、CRI-O)的部署,为 Pod 指定运行时支持不同 Pod 使用不同运行时;可配置隔离级别(如虚拟机级隔离)
Leasecoordination.k8s.io/v1命名空间级用于领导者选举(如控制器选举主节点)和心跳检测轻量级资源;依据 TTL 机制自动过期;kubelet 与 apiserver 的心跳依赖此资源

2.5 安全资源(Security)

用于控制访问权限、证书管理、安全上下文等,保障集群安全。

资源名称API 版本作用范围核心作用关键特性
ServiceAccount(SA)v1命名空间级为 Pod 提供访问 K8s API 的身份凭证(替代用户账户)默认 Pod 使用default SA;通过 RoleBinding 授权;自动挂载token到 Pod
Rolerbac.authorization.k8s.io/v1命名空间级定义命名空间内的权限(如允许查看 Pod、创建 Deployment)权限基于 API 资源(如podsdeployments)和操作(getcreate
ClusterRolerbac.authorization.k8s.io/v1集群级定义集群级权限(如查看 Node、管理 Namespace)作用于整个集群;可被 RoleBinding 引用到特定 NS
RoleBindingrbac.authorization.k8s.io/v1命名空间级将 Role/ClusterRole 绑定到主体(用户、SA、组)仅在当前 NS 内生效;绑定 ClusterRole 时,权限范围限定在 NS 内
ClusterRoleBindingrbac.authorization.k8s.io/v1集群级将 ClusterRole 绑定到主体,授予集群级权限作用于整个集群;适合管理员权限设置
SecretProviderClasssecrets-store.csi.x-k8s.io/v1集群级从外部密钥管理系统(如 Vault、AWS Secrets Manager)挂载密钥到 Pod需 CSI 驱动支持;自动同步外部密钥更新
CertificateSigningRequest(CSR)certificates.k8s.io/v1集群级申请 K8s 集群签名的证书(如节点证书、SA 证书)需管理员审批(approve);用于加密通信(如 etcd TLS、API Server 证书)
PodSecurityContext嵌入 Pod.spec 中命名空间级定义 Pod 的安全上下文(如运行用户、SELinux 标签、特权模式)控制容器权限;可限制root用户运行;设置readOnlyRootFilesystem增强安全
PodSecurityPolicy(PSP)已废弃(被 PodSecurityContext 替代)-早期控制 Pod 安全的资源,已在 v1.25 移除,功能合并到 SecurityContext不再推荐使用,改用 Namespace 的 PodSecurity 标准

2.6 元信息与扩展资源(Metadata & Extensions)

用于资源标记、自定义资源扩展、事件记录等辅助特性。

资源名称API 版本作用范围核心作用关键特性
Label嵌入 metadata 中所有资源键值对标签,用于资源筛选和关联(如 Service 利用 Label 选择 Pod)可动态修改;支持多标签组合筛选(app=nginx,env=prod
Annotation嵌入 metadata 中所有资源键值对注释,存储非筛选用的附加信息(如构建时间、作者)不用于资源选择;内容可包含 JSON 等复杂结构;无大小限制(建议精简)
Eventv1命名空间级记录集群事件(如 Pod 创建、节点故障),用于排障由组件自动生成;包含类型(Normal/Warning)、原因、涉及资源
CustomResourceDefinition(CRD)apiextensions.k8s.io/v1集群级扩展 K8s API,定义自定义资源(如MyAppDatabase允许用户创建自定义资源类型;配合 Operator 实现复杂应用管理
CustomResource(CR)基于 CRD 定义命名空间级 / 集群级CRD 实例,即用户创建的自定义资源对象结构由 CRD 定义;可通过 kubectl 操作,与内置资源类似
PriorityClassscheduling.k8s.io/v1集群级定义 Pod 的优先级,影响调度和驱逐顺序优先级高的 Pod 优先调度;资源不足时,低优先级 Pod 先被驱逐
PodTemplatev1命名空间级Pod 模板,被 Deployment、StatefulSet 等控制器引用,避免重复配置控制器依据模板创建 Pod;修改模板会触发控制器更新 Pod

3 资源对象的核心设计理念

  1. 声明式 API:所有资源通过 YAML/JSON 定义 “期望状态”,K8s 控制平面自动调和实际状态与期望状态(无需手动编写操作步骤)。
  2. 标签与选择器:通过Labelselector实现资源关联(如 Service 关联 Pod、Deployment 管理 RS),是 K8s 灵活调度和管理的核心。
  3. 命名空间隔离:大部分资源属于命名空间级,通过 Namespace 实现多环境 / 多团队的资源隔离;集群级资源(如 Node、CRD)作用于整个集群。
  4. 扩展能力:通过 CRD 允许用户自定义资源,结合 Operator 模式可将复杂应用(如数据库集群)封装为 K8s 原生资源管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935399.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小分子抗体药物:突破传统抗体瓶颈,在精准治疗中开辟新赛道

在治疗性抗体药物的大家族中,全长单克隆抗体(IgG,分子量约 150kDa)虽凭借高特异性、长半衰期占据主流,但面对实体瘤深层治疗、中枢神经系统疾病等复杂场景,其分子量大、组织穿透性差的问题逐渐凸显。而小分子抗体…

python nms

https://cloud.tencent.com/developer/article/2151436

2025年PE涂布机定做厂家权威推荐榜:技术实力与定制服务深

2025年PE涂布机定做厂家权威推荐榜:技术实力与定制服务深度解析在新能源、电子元器件、包装材料等行业高速发展的推动下,PE涂布机作为关键生产设备,其市场需求持续攀升。随着工艺要求的不断提高,企业对PE涂布机定做…

OI 笑传 #18

Septembersan今天是 ABC 427 的 DEF。 D 博弈,套路的设状态,令 \(dp_{i,k_1,k_2,op}\) 表示棋子在点 \(i\),Alice 还剩 \(k_1\) 步可以走,Bob 还剩 \(k_2\) 步可以走,现在拿棋子的是 \(op\),\(0\) 是 Alice,\(…

深入解析:开源的容器化平台:Docker

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MiniExcel开源资料

MiniExcel开源资料MiniExcel开发文档

2025加药装置厂家权威推荐榜:精准计量与稳定运行优选指南

2025加药装置厂家权威推荐榜:精准计量与稳定运行优选指南在工业水处理、石油化工、电力能源等关键领域,加药装置作为流程工业中不可或缺的配套设备,其计量精度与运行稳定性直接影响生产效率和环保达标。随着2025年环…

Linux文本搜索工具grep命令使用

grep 是一个强大的文本搜索工具,广泛用于Unix和类Unix系统中,用于搜索包含指定模式的文本行。它由Ken Thompson编写,作为UNIX操作系统的一部分。其名称来源于ed命令 g/re/p(全局正则表达式打印)。以下是对 grep 命…

一款基于 .NET 开源免费、高效且用户友好文件搜索工具!

前言 无论是工作中的项目文档,还是学习中的研究资料,高效地管理和搜索这些文件成为了我们提升工作效率的关键。今天大姚给大家分享一款基于 .NET 开源免费(MIT license)、高效且用户友好的文件搜索工具,旨在帮助您…

2025上海保洁公司最新权威推荐榜:专业服务与用户口碑深度解

2025上海保洁公司最新权威推荐榜:专业服务与用户口碑深度解析在现代化都市运营体系中,专业保洁服务已成为企业高效运转和品质形象维护的重要保障。上海作为国际化大都市,保洁服务市场需求持续增长,服务品质参差不齐…

心得体会

不要美化你未走过的路

DedeCMS命令执行复现研究 | CVE-2025-6335 - 指南

DedeCMS命令执行复现&研究 | CVE-2025-6335 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

2025视频拍摄厂家最新权威推荐榜:专业设备与创意方案首选

2025视频拍摄厂家最新权威推荐榜:专业设备与创意方案首选在数字化浪潮席卷各行各业的今天,视频内容已成为企业宣传、产品推广、品牌塑造的重要载体。随着5G技术的普及和人工智能的发展,视频拍摄行业正迎来前所未有的…

算法训练.16 - 实践

算法训练.16 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

Java连接MySQL数据库

环境准备安装Java开发工具包 (JDK) : 确保你的系统已安装JDK,并配置了环境变量,以便能够在命令行中运行 java和 javac命令。 安装MySQL数据库: 在你的系统上安装MySQL服务器,并确保它正在运行。创建一个数据库以及一…

Git版本控制工具合并分支merge命令操作流程

在Git中合并分支是一个常见的操作,它允许你将一个分支的更改合并到另一个分支中。以下是使用 merge命令进行分支合并的详细步骤和最佳实践。 准备工作 在开始之前,确保你已经安装了Git,并且有一个本地仓库。此外,确…

第七章 手写数字识别(终)

将前文的代码解耦为三个部分:定义的类和函数的nn_core.py 模型训练和测试集验证并保存最优模型的main_train.py 验收 (自定义图片预测)的脚本predict.py至此,手写数字识别的NLP任务完全结束,至于更多的优化目前我不…

2025年AI内容安全产品选型指南:为何需要专业的AI安全围栏(AI-FOCUS团队鉴冰AI FENCE)?

2025年AI内容安全产品选型指南:为何需要专业的AI安全围栏(AI-FOCUS团队鉴冰AI FENCE)?随着企业大规模应用AI对话服务(如智能客服、知识库问答、营销机器人等),内容安全风险日益凸显。传统Web应用防火墙(WAF)主…

2025南通摄影公司最新权威推荐榜:专业团队与创意服务口碑之

2025南通摄影公司最新权威推荐榜:专业团队与创意服务口碑之选在数字媒体蓬勃发展的今天,专业摄影服务已成为企业品牌建设、产品推广不可或缺的重要环节。南通作为长三角地区的重要城市,摄影服务行业呈现出专业化、细…

在Kubernetes环境中引用变量的方法

在Kubernetes环境中,变量的引用主要通过环境变量和ConfigMaps来实现。这两种方式都可以让你在Pod的定义中引用变量,从而使你的应用更加灵活和可配置。 首先,我们来看看如何使用环境变量。Kubernetes允许你在Pod定义…