Skip to content

资源对象定义

  • 在 Kubernetes 中,资源通过 YAML 或 JSON 文件来定义。
  • 文件遵循 Kubernetes API 的结构,它们描述了集群中所需资源的期望状态。
元素说明
apiVersion指定 Kubernetes API 的版本,用于创建资源对象。
kind指定要创建的资源对象的种类,如 PodServiceDeployment 等。
metadata帮助唯一标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace
spec定义资源对象的规格和行为,即期望的状态和属性。
status资源对象的当前状态,由 Kubernetes 系统自动填写。

YAML 文件结构

apiVersion: v1 # 示例 API 版本
kind: Pod # 示例资源类型为 Pod
metadata: # 元数据部分
name: mypod # Pod 的名称
namespace: mynamespace # Pod 所在的命名空间
labels: # 标签
app: myapp
environment: production
annotations: # 注解
description: This is my production pod
spec: # 规格部分
containers: # 容器列表
- name: mycontainer # 容器名称
image: myimage:1.0.0 # 容器使用的镜像
ports: # 容器暴露的端口列表
- containerPort: 8080 # 容器端口
status: # 状态部分,通常由 Kubernetes 自动填写
phase: Running # Pod 的当前状态
conditions:
- type: Ready # Pod 就绪状态
status: "True" # 状态值
apiVersion: v1 # 指定使用的Kubernetes API版本
kind: Pod # 指定资源类型,这里是Pod
metadata:
name: example-pod # Pod的名称
generateName: example- # 如果设置了generateName,Kubernetes会生成一个唯一的名称
namespace: default # Pod所属的命名空间
selfLink: "/api/v1/namespaces/default/pods/example-pod" # Pod的API端点链接
uid: 123e4567-e89b-12d3-a456-426614174000 # Pod的唯一标识符
resourceVersion: "12345" # Pod的版本号
generation: 1 # Pod的代数
creationTimestamp: "2024-06-18T00:00:00Z" # Pod的创建时间
deletionTimestamp: null # 如果Pod被标记为删除,这里会记录计划删除的时间
labels:
app: myapp # 标签,用于标识Pod
environment: production # 另一个标签
annotations:
"example.com/description": "This is a description of the pod" # 注释,用于存储额外信息
"example.com/version": "1.0.0" # 另一个注释
ownerReferences: # 所有者引用,用于建立资源之间的所有权关系
- apiVersion: v1
kind: ReplicaSet
name: example-replicaset
uid: d1234-5678-9abc-def0
controller: true
blockOwnerDeletion: true
finalizers: # 清理操作列表
- "example.com/cleanup-finalizer"
clusterName: mycluster # Pod所属的Kubernetes集群的名称
managedFields: # 描述哪些字段被哪些管理工具管理
- manager: "kubectl"
operation: "Update"
apiVersion: "v1"
fieldsType: "FieldsV1"
fieldsV1:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:containers: {}
initializers: # 定义了一组初始化器
pending:
- name: "example-initializer"
  • 对每个 Kubernetes 对象而言,其 spec 之精确格式都是不同的,包含了特定于该对象的嵌套字段。 Kubernetes API 参考可以帮助你找到想要使用 Kubernetes 创建的所有对象的规约格式。

https://kubernetes.io/zh-cn/docs/concepts/configuration/overview/