5-Overview-Understanding Kubernetes Objects

5-Overview-working-with-objects-Understanding Kubernetes Objects

kubernetes对象是kubernetes系统中的持久实体。kubernetes使用这些实体来表示集群的状态。具体来说,他们可以描述:

  • 哪些容器化应用程序正在运行(以及在哪些节点上运行)
  • 这些应用程序可用的资源
  • 有关这些应用程序行为的策略,如重新启动策略、升级和容错

一个kubernetes对象是一个“意图记录”——一旦你创建了这个对象,kubernetes系统就会不断地工作以确保这个对象存在。通过创建一个对象,您可以有效地告诉kubernetes系统您希望集群的工作负载是什么样的;这是集群的期望状态。

要使用k8sapi对象–无论是增删改查都需要与 Kubernetes API进行交互. 你可以使用 kubectl 命令, 此命令会把用户输入数据转换成特定格式与apiserver进行通信. 你也可以使用提供的库 Client Libraries与api进行交互

Object Spec and Status 规范与状态

每个kubernetes对象都包含两个控制对象配置的嵌套对象字段:spec (对象规范)和status对象状态。spec(此对象字段必须提供)描述了您对对象的期望状态,即您希望对象具有的特性。status状态描述对象的实际状态,由kubernetes系统提供和更新。在任何给定的时间,kubernetes控制平面都会主动管理对象的实际状态,以匹配您提供的所需状态。

例如, k8s Deployment 一个对象, 它可以代表运行在您的集群上的应用程序. 当你需要部署应用时,可以将部署spec设置为指定要运行应用程序的三个副本。kubernetes系统读取Deployment spec并启动所需应用程序的三个实例-更新状态以匹配规范。如果其中任何一个实例失败(状态更改),kubernetes系统通过更正来响应规范和状态之间的差异——在本例中,启动一个替换实例

有关对象规范、状态和元数据的详细信息,请参见 Kubernetes API Conventions.

Describing a Kubernetes Object 描述一个k8s对象

在kubernetes中创建一个对象时,必须提供描述其所需状态(object spec)的对象规范,以及一些关于对象的基本信息(如名称). 当使用kubernetes api创建对象(直接或通过kubectl)时, 该api请求必须将该信息作为json包含在请求主体中. 最常见的情况是,将信息以.yaml文件的形式提供给kubectl。kubectl在发出api请求时将信息转换为json。

下面是一个示例.yaml文件,它显示了kubernetes部署所需的字段和object spec对象规范:

# application/deployment.yaml 

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

使用类似于上面的“.yaml”文件创建部署的一种方法是在“kubectl”命令行界面中使用kubectl apply 命令,并将“.yaml”文件作为参数传递。下面是一个例子:

kubectl apply -f https://k8s.io/examples/application/deployment.yaml --record

输出类似于:

deployment.apps/nginx-deployment created

Required Fields 必需字段

  • apiVersion-使用哪个版本的kubernetes api来创建这个对象
  • kind-要创建什么类型的对象
  • metadata-帮助唯一标识对象的数据,包括name字符串、uid和可选的`namespace``

你还需要提供spec字段, 对于每个k8s object spec都是不同的,以及特定于该对象的嵌套字段. Kubernetes API Reference 可以帮助您找到可以使用kubernetes创建的所有对象的规范格式.例如,pod的spec 格式可以在这里找到,Deployment的spec格式可以在 这里,找到。

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!