Dawn's Blogs

分享技术 记录成长

0%

Kubernetes学习 (2) Kubernetes对象之基本理解

基本理解

在 Kubernetes 系统中,Kubernetes 对象是持久化的实体。Kubernetes 使用这些实体去表示整个集群的状态。 比较特别地是,它们描述了如下信息

  • 哪些容器化应用正在运行(以及在哪些节点上运行)。
  • 可以被应用使用的资源。
  • 关于应用运行时表现的策略,比如重启策略、升级策略以及容错策略。

k8s一旦创建对象,将不断确保该对象存在。 通过创建对象,你就是在告知 Kubernetes 系统,你想要的集群工作负载状态看起来应是什么样子的, 这就是 Kubernetes 集群所谓的期望状态

操作 k8s 对象需要使用 Kubernetes API。

对象规约(Spec)与状态(Status)

每一个 Kubernetes 对象包含两个字段,它们负责管理对象的配置:

  • 对象规约 Spec:期望状态,在创建对象时必须设置的内容。
  • 对象状态 Status:当前状态,由 Kubernetes 系统和组件设置并更新的。

如一个对象需要启动 3 个副本,那么酒吧这个对象 Spec 设置为 3,当前副本数量就是 Status。Kubernetes 控制面会根据 Spec 和 Staus 来新增或者删除副本的数量。

描述 Kubernetes 对象

在创建 k8s 对象是,需要描述对象的基本信息,通过 yaml 文件来提供描述 Kubernetes 对象的信息。

一个 Kubernetes Deployment 对象的描述信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # 告知 Deployment 运行 2 个与该模板匹配的 Pod
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

必须字段

在 yaml 文件中,有以下必须的字段:

  • apiVersion:创建该对象所使用的 Kubernetes API 的版本。
  • kind:创建对象的类别。
  • metadata:帮助唯一标识对象的一些数据,包括一个 name、UID 和可选的 namespace。
  • spec:规约,期望的状态。