Kubernetes 资源清单
介绍了 Kubernetes 中的资源概念、分类以及如何编写资源清单。
资源是什么
K8S中的所有内容都抽象为资源,资源实例化之后,才有K8S中各个组件(Service,Pod等等)。
类似面向对象中,类和实例之间的关系。
资源类别
Kubernetes 中的资源可按照作用范围和用途划分为三大类:名称空间级别资源、集群级资源 和 元数据型资源。每类资源承担不同的职责,适用于不同的场景。
每个只列出部分,全面的可以自行了解
名称空间级别资源
这类资源通常存在于某个特定的命名空间(Namespace)中,适用于隔离和管理应用的生命周期。
➤ 工作负载型资源
- Pod:Kubernetes 中最小的可调度单元,封装了一个或多个容器。
- ReplicaSet:确保指定数量的 Pod 副本始终运行。
- Deployment:用于声明式地更新和管理 Pod 和 ReplicaSet。
特点:直接与应用运行相关,用于控制副本、滚动更新等功能。
➤ 服务发现及负载均衡型资源
- Service:提供稳定的访问入口,用于服务间通信和负载均衡。
- Ingress:提供基于域名或路径的 HTTP 路由规则,将外部请求转发到内部服务。
特点:提供服务暴露与访问能力,支持内部和外部通信。
➤ 配置与存储型资源
- Volume:为 Pod 提供持久化或临时的存储能力。
- CSI(Container Storage Interface):通过插件扩展 Kubernetes 存储系统能力。
特点:解决存储问题,支持跨容器或持久挂载的场景。
➤ 特殊类型的存储卷
- ConfigMap:用于存储配置数据,以 key-value 的形式提供给容器。
- Secret:用于存储敏感数据,如密码、证书等。
特点:用于将配置信息或敏感信息从代码中解耦,支持热更新。
集群级资源
这些资源不属于任何命名空间,而是作用于整个 Kubernetes 集群,主要用于权限、节点管理等。
- Namespace:逻辑隔离资源的单位,常用于多租户管理。
- Node:集群中的一台物理机或虚拟机,运行着 Pod。
- ClusterRole:定义集群范围内的访问权限。
- ClusterRoleBinding:将 ClusterRole 绑定给用户、组或 ServiceAccount,实现权限赋予。
特点:管理集群级别的资源或控制策略,通常由管理员维护。
元数据型资源
这些资源并不直接参与工作负载的调度与管理,而是用于辅助定义或限制行为。
- HPA(Horizontal Pod Autoscaler):基于 CPU、内存等指标自动调整 Pod 副本数。
- PodTemplate:定义 Pod 的模板结构,常用于控制器内部引用。
- LimitRange:用于限制命名空间中 Pod 或容器资源(如 CPU、内存)的最小最大值。
特点:用于优化资源分配、自动伸缩与行为约束,提高系统弹性与效率。
资源清单编写
1 | apiVersion: v1 |
字段 | 说明 |
---|---|
apiVersion |
使用的 API 版本,这里 v1 表示核心组。 |
kind |
资源类型,此处是 Pod 。 |
metadata |
元信息部分,如名称、命名空间、标签等。 |
metadata
子字段
name
:Pod 名称,集群中唯一。namespace
:所属命名空间,默认为default
。labels
:键值对形式的标签,用于选择器匹配、管理等。
字段 | 说明 |
---|---|
containers |
容器列表,Pod 中的每个容器都需定义在此。 |
restartPolicy |
重启策略:Always 、OnFailure 或
Never (默认 Always)。 |
nodeSelector |
节点选择器,用于指定将 Pod 调度到具有某种 label 的节点。 |
volumes |
定义挂载卷,用于持久化或传入配置等。 |
containers
子字段
name
:容器名称,必须唯一。image
:容器镜像名,包含版本标签。ports
:暴露的容器端口。env
:环境变量设置,可用于配置程序运行参数。volumeMounts
:将定义的卷挂载到容器内的路径。
volumes
子字段
name
:卷名称,与volumeMounts.name
对应。
Comments
Comment plugin failed to load
Loading comment plugin