美文网首页
Kubernetes的API对象描述

Kubernetes的API对象描述

作者: 一舍 | 来源:发表于2020-03-24 13:49 被阅读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"
    
    

    相关文章

      网友评论

          本文标题:Kubernetes的API对象描述

          本文链接:https://www.haomeiwen.com/subject/umeoyhtx.html