资源对象定义
资源对象定义
Section titled “资源对象定义”- 在 Kubernetes 中,资源通过 YAML 或 JSON 文件来定义。
- 文件遵循 Kubernetes API 的结构,它们描述了集群中所需资源的期望状态。
| 元素 | 说明 |
|---|---|
apiVersion | 指定 Kubernetes API 的版本,用于创建资源对象。 |
kind | 指定要创建的资源对象的种类,如 Pod、Service、Deployment 等。 |
metadata | 帮助唯一标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace |
spec | 定义资源对象的规格和行为,即期望的状态和属性。 |
status | 资源对象的当前状态,由 Kubernetes 系统自动填写。 |
YAML 文件结构示例
Section titled “YAML 文件结构示例”YAML 文件结构
apiVersion: v1 # 示例 API 版本kind: Pod # 示例资源类型为 Podmetadata: # 元数据部分 name: mypod # Pod 的名称 namespace: mynamespace # Pod 所在的命名空间 labels: # 标签 app: myapp environment: production annotations: # 注解 description: This is my production podspec: # 规格部分 containers: # 容器列表 - name: mycontainer # 容器名称 image: myimage:1.0.0 # 容器使用的镜像 ports: # 容器暴露的端口列表 - containerPort: 8080 # 容器端口status: # 状态部分,通常由 Kubernetes 自动填写 phase: Running # Pod 的当前状态 conditions: - type: Ready # Pod 就绪状态 status: "True" # 状态值metadata
Section titled “metadata”apiVersion: v1 # 指定使用的Kubernetes API版本kind: Pod # 指定资源类型,这里是Podmetadata: 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 创建的所有对象的规约格式。
- Kubernetes API: https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/
最佳实践,配置建议(牢记)
Section titled “最佳实践,配置建议(牢记)”https://kubernetes.io/zh-cn/docs/concepts/configuration/overview/