Kubernetes笔记4-理解Kubernetes Objects

本文继续学习Kubernetes 对象如何在 Kubernetes API 中表示,以及如何以.yaml格式表示它们。

了解 Kubernetes 对象

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

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

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

要使用 Kubernetes 对象——无论是创建、修改还是删除它们——您都需要使用Kubernetes API。kubectl例如,当您使用命令行界面时,CLI 会为您进行必要的 Kubernetes API 调用。您还可以使用客户端库之一直接在您自己的程序中使用 Kubernetes API 。

对象规格和状态

几乎每个 Kubernetes 对象都包含两个嵌套的对象字段,用于管理对象的配置:对象spec和对象status。对于具有 的对象spec,您必须在创建对象时设置它,提供您希望资源具有的特征的描述:其所需的状态

status描述了当前的状态的对象,由Kubernetes系统及其部件供给和更新的。Kubernetes 控制平面 持续并积极地管理每个对象的实际状态以匹配您提供的所需状态。

例如:在 Kubernetes 中,Deployment 是一个对象,可以代表在您的集群上运行的应用程序。创建部署时,您可以将部署设置spec为指定要运行应用程序的三个副本。Kubernetes 系统读取部署规范并启动所需应用程序的三个实例——更新状态以匹配您的规范。如果这些实例中的任何一个失败(状态更改),Kubernetes 系统会通过进行更正来响应规范和状态之间的差异——在这种情况下,启动一个替换实例。

有关对象规范、状态和元数据的更多信息,请参阅Kubernetes API 约定。

描述 Kubernetes 对象

当您在 Kubernetes 中创建对象时,您必须提供描述其所需状态的对象规范,以及有关该对象的一些基本信息(例如名称)。当您使用 Kubernetes API 创建对象(直接或通过kubectl)时,该 API 请求必须将该信息作为 JSON 包含在请求正文中。大多数情况下,您kubectl在 .yaml 文件中提供信息。 kubectl在发出 API 请求时将信息转换为 JSON。

这是一个示例.yaml文件,显示了 Kubernetes 部署所需的字段和对象规范:

application/deployment.yaml

apiVersion: apps/v1
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.14.2
        ports:
        - containerPort: 80

使用上述.yaml文件创建部署的一种方法是kubectl applykubectl命令行界面中使用该 命令,将该.yaml文件作为参数传递。下面是一个例子:

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

输出类似于:

deployment.apps/nginx-deployment created

必填字段

.yaml要创建的 Kubernetes 对象的文件中,您需要为以下字段设置值:

  • apiVersion - 您使用哪个版本的 Kubernetes API 创建此对象
  • kind - 你想创建什么样的对象
  • metadata- 有助于唯一标识对象的数据,包括name字符串UID、 和可选namespace
  • spec - 您希望对象处于什么状态

spec每个 Kubernetes 对象的对象的精确格式都不同,并且包含特定于该对象的嵌套字段。该Kubernetes API参考可以帮助你找到所有你可以创建使用Kubernetes对象的规范格式。

例如,Pod 的参考详细说明了 API 中Pod 的spec字段,而 Deployment 的参考详细说明了 Deployments 的spec字段。在这些 API 参考页面中,您会看到提到 PodSpec 和 DeploymentSpec。这些名称是 Kubernetes 用于实现其 API 的 Golang 代码的实现细节。

参考 kubernetes.io文档

你可能感兴趣的:(Kubernetes笔记4-理解Kubernetes Objects)