searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

Kubernetes 对象概念

2024-03-14 01:34:09
0
0

Kubernetes 对象

Kubernetes 对象 - Kubernetes 系统中的持久实体。

Kubernetes 使用 API 对象来表示集群的状态。例如,Pod、Service、Volume、Namespace 都是 Kubernetes 中的对象。这些对象持久化在 Kubernetes API 服务器的 etcd 存储中。

Kubernetes API 服务器负责处理用于在集群中创建、修改或删除 Kubernetes API 对象的 REST 操作。

Kubernetes API

Kubernetes API 是集群的单一控制平面。API 服务器负责处理 REST 操作,验证它们,然后更改集群的实际状态以匹配你所请求的状态。

例如,当你使用 kubectl run 命令创建一个新的 Pod 时,你实际上是通过 Kubernetes API 向 API 服务器发送了一个请求,指示它创建一个新的 Pod 对象。然后,API 服务器验证请求,如果一切正常,它会更改集群的实际状态(在这种情况下,是通过调度 Pod 到某个节点上)以匹配你所请求的状态。

描述 Kubernetes 对象

当你创建一个 Kubernetes 对象(例如 Pod)时,你(或更确切地说,是 Kubernetes API 服务器)会为该对象提供一个规范(Specification)。规范描述了对象的最终期望状态。对于 Pod,这可能包括希望它在哪个节点上运行、它应该运行哪个容器镜像、应该向容器提供哪些命令行参数等。

Kubernetes 系统会不断地检查当前集群的状态,并自动更改配置以将当前状态推向你指定的期望状态。例如,如果你指定一个 Pod 应该运行 3 个副本,但当前只有 2 个 Pod 在运行,那么 Kubernetes 会自动启动一个新的 Pod。反之,如果当前运行了 4 个 Pod,那么 Kubernetes 将自动终止一个 Pod。

你还可以查询 Kubernetes API 以获取有关对象当前状态的信息。

使用 kubectl 与 Kubernetes API 进行交互

kubectl 是与 Kubernetes API 进行交互的命令行工具。当你在命令行中键入 kubectl runkubectl get 或 kubectl delete 时,你实际上是在通过 kubectl 与 Kubernetes API 服务器进行通信。

Kubernetes 对象和 YAML

当你使用 kubectl 创建对象时(例如,通过 kubectl run 或 kubectl create),你通常会提供一个描述对象所需状态的 YAML 文件。YAML 是一种人类可读的数据序列化标准,常用于配置文件。

例如,以下是一个简单的 Pod 定义,描述了一个运行 nginx 的容器:

 
apiVersion: v1  
kind: Pod  
metadata:  
  name: nginx  
spec:  
  containers:  
  - name: nginx  
    image: nginx:1.7.9  
    ports:  
    - containerPort: 80
 

你可以将此 YAML 保存到一个文件中(例如 nginx.yaml),然后使用 kubectl create -f nginx.yaml 命令来创建 Pod。

总结

Kubernetes 是一个基于对象的系统。当你与集群交互时,你几乎总是在创建、修改或删除某种类型的对象。这些对象由 Kubernetes API 服务器管理,并持久化在 etcd 中。你可以使用 kubectl 和 YAML 文件来定义和描述这些对象的状态。

0条评论
0 / 1000