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格式可以在 这里,找到。
本作品采用《CC 协议》,转载必须注明作者和本文链接