理解Kubernetes对象(个人翻译)

使用Kubernetes对象1---理解Kubernetes对象

本篇描述了Kubernetes对象是如何在Kubernetes API中表示的,以及你如何在.yaml格式中表示它们。

理解Kubernetes对象 

Kubernetes对象是Kubernetes系统中持久化的实体。Kubernetes通过这些实体来表示集群的状态。具体来讲,它们可以描述:

  • 什么容器化的应用正在运行(以及在哪个节点)
  • 这些应用的可用资源
  • 这些应用的行动策略,如重启策略、升级策略和容错策略

一个Kubernetes对象其实就是一个“目标记录“--一旦你创建了一个Kubernetes对象,Kubernetes系统就会持续工作以确保该对象存在。通过创建对象,你可以有效地告诉Kubernetes系统,你希望你的集群的工作负载是怎样的;这是你集群的期望状态

使用Kubernetes对象--不管是创建、编辑还是删除它们--你都需要使用Kubernetes API。比如,当你使用kubectl命令行接口时,CLI会替你调用需要的Kubernetes API。你也可以在自己的程序中通过Client Libraries直接使用Kubernetes API。

对象规格(Spec)和状态(Status)

每个Kubernetes对象都包含两个嵌套对象字段来管理对象的配置:它们是对象规格和对象状态。对象规格是你必须提供的,它描述了你对对象的期望状态--你希望对象拥有的特征。对象状态描述了对象的实际状态,由Kubernetes系统提供和更新。在任何时间,Kubernetes控制面都会积极地管理对象的实际状态以匹配你提供的期望状态。

例如,Kubernetes Deployment(部署)是一个对象,用来表示在你集群上运行的一个应用。当你创建了Deployment,你可能需要设置Deployment的规格来指定:你希望该应用运行三个副本。Kubernetes系统读取Deployment的规格,并为你期望的应用启动三个实例--更新状态以匹配你的规格。如果其中任何实例失败了,Kubernetes系统会响应当前状态和规格的不一致,做出更正--在这种情况下会启动替代的实例。

关于对象规格、状态和元数据(metadata )的更多信息,请参阅Kubernetes API 约定Kubernetes API Conventions)。

描述Kubernetes对象

 当你在Kubernetes创建一个对象时,你必须提供描述期望状态的对象规格,该规格也包含一些对象的基本信息(比如名称)。当你使用Kubernetes API来创建对象时(直接或者通过kubectl), API请求必须包含这些信息将其以JSON格式加入请求的body中。通常通过一个.yaml文件将这些信息提供给kubectl。kubectl在生成API请求的时候,把这些信息转换成JSON格式。

下面是一个.yaml文件的例子,展示了一个Kubernetes Deployment所需要的字段和对象规格。

/*
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

一种创建Deployment的方式是使用像上述例子那样的.yaml文件,在kubectl命令行接口使用kubectl create命令,并传递.yaml文件作为参数。举例:

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

输出类似于:

deployment.apps/nginx-deployment created

必需字段

在你想要创建的Kubernetes对象对应的.yaml文件中, 你需要为下列字段赋值:

  • apiVersion - 你用来创建对象的Kubernetes API版本
  • kind - 你想要创建的对象的类型
  • metadata - 用来唯一确认对象的数据,包括一个name(名称)字符串、UID和可选的namespace(命名空间)

你还需要提供对象的spec字段。对每个Kubernetes对象来说,spec的准确格式都是不同的,特定于该对象包含了嵌套的字段。Kubernetes API 参考Kubernetes API Reference)能帮助你找到所有你能通过Kubernetes创建的对象的规格格式。例如:Pod对象的规格格式可以在here找到,Deployment对象的规格格式可以在here找到。

接下来

  • 学习最重要的Kubernetes基础对象,比如Pod

猜你喜欢

转载自blog.csdn.net/u014637098/article/details/88786440