Kubernetes的API对象描述

2020-03-24  本文已影响0人  一舍

API对象是K8s集群中的管理操作单元。K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作。

每个API对象都有4大类属性:API组和类型,元数据metadata、规范spec和状态status

API组和类型,描述了当前的 配置文件应该由谁进行处理

元数据,是用来标识API对象的,每个对象都至少有3个元数据:namespace,name,uid,除此之外还有labels,annotations

规范,描述了用户期望K8s集群中的分布式系统达到的理想状态(Desired State)

状态,描述了系统实际当前达到的状态(Status)

API组和类型

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: kube-system
  labels:
    app: nginx 
spec:

apiVersion描述使用的 API 组,kind描述API 组中的资源类型,它们共同描述了当前 配置文件应该由谁来进行处理。

API 组包括,核心 API组,如api/v1,扩展 API 组 ,如apis/extensions/v1beta1 ,和自定义的新的API对象类型。

元数据

metadata提供了一些用于唯一标识对象的数据,包括namespacenameuid,和用于分类的 labels ,以及用于扩展功能的注解 annotations,还有creationTimestamp,generateName,resourceVersion,selfLink,ownerReferences。

namespace,对资源进行隔离,不同namespace,无法直接使用service name通信,而需要使用完全限定域名FQDN(fully qualified domain name)。

label,对 Kubernetes 对象进行分类。每一个 Kubernetes 对象都可以被打上多个标签,我们可以使用标签选择器对这些标签进行过滤,帮助我们选择和管理集群内部的 Kubernetes 对象。

spec:
  selector:
    matchLabels:
      app: nginx

规范

Kubernetes中所有的配置都是通过API对象的Spec去设置的,也就是用户通过配置系统的理想状态来改变系统。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: kube-system
  labels:
    app: nginx
spec:
  containers:
  - image: nginx
    command:
      - sleep
      - "36000"
    imagePullPolicy: IfNotPresent
    name: nginx
  restartPolicy: Always

状态

Status 对外暴露集群内对象的运行状态。

Kubernetes 对象的 Status 不仅能够用来观察目前集群中对象的运行状态,还能帮助我们对集群中出现的问题进行排查以及修复,并能提供一些信息辅助优化集群中资源的利用率。

status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2020-03-16T10:09:30Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2020-03-16T10:12:32Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2020-03-16T10:12:32Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2020-03-16T10:10:10Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: docker://5bc08ac0a3fad9225504f9412d2a703aadb3544c29746e627b37d2052315c47c
    image: nginx
    imageID: docker-pullable://nginx@sha256:2ff5d1d10e8689e616a3cca2fb42151f314042baf857668fb0ea9f78f977eec2
    lastState: {}
    name: nginx
    ready: true
    restartCount: 0
    state:
      running:
        startedAt: "2020-03-16T10:09:31Z"
  hostIP: 192.168.40.210
  phase: Running
  podIP: 10.244.84.173
  qosClass: Burstable
  startTime: "2020-03-16T10:09:30Z"

上一篇下一篇

猜你喜欢

热点阅读