k8s术语,实体和实例

在 Kubernetes (K8s) 中,实体(Entity)实例(Instance) 是两种不同的概念,用于描述资源和资源的实际状态。下面是详细的解释:


实体(Entity)

  • 定义 : 实体通常是 Kubernetes 中定义的资源对象,比如 PodServiceDeploymentConfigMap 等,它们是抽象的声明,用于告诉 Kubernetes 期望的状态

  • 作用 : 实体定义了资源的配置和行为。比如,一个 Deployment 定义了需要运行多少个 Pod,每个 Pod 的镜像、环境变量等信息。

  • 存储位置 : 这些实体的定义保存在 etcd 中,etcd 是 Kubernetes 用于存储集群状态的分布式数据库。

  • 例子 : 一个 Deployment 对象如下:

    yaml 复制代码
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
    spec:
      replicas: 3
      template:
        spec:
          containers:
          - name: my-container
            image: my-image:v1
    • 这里的 Deployment 就是一个 实体

实例(Instance)

  • 定义: 实例是 Kubernetes 根据实体定义创建出来的实际运行资源的具体表现。它是实体在集群中的实际存在。
  • 作用 : 实例表示资源的 当前状态 ,比如实际运行的 PodNode
  • 动态性 : 实例是动态的,会随着实际运行情况发生变化。比如,Deployment 中声明了 3 个副本(实体),实际运行的 3 个 Pod 就是实例。如果一个 Pod 异常终止,Kubernetes 会创建新的 Pod 实例。
  • 例子 :
    • 根据上面的 Deployment,可能会有如下运行中的 Pod 实例:

      复制代码
      Pod: my-app-abc123
      Pod: my-app-def456
      Pod: my-app-ghi789
    • 这些具体的 PodDeployment 定义的实例。


对比:实体和实例

特性 实体(Entity) 实例(Instance)
作用 定义资源的期望状态 实体的实际运行状态
存储位置 保存在 etcd 中的配置文件 存在于节点或容器运行时
动态性 静态,通常由用户定义或 YAML 文件声明 动态,运行时由 K8s 控制器管理
示例资源 PodServiceDeployment 具体运行的 PodService IP 等实例

常见场景

  1. 声明 vs 实现

    • 用户通过 YAML 定义一个 Deployment,这是一个实体。
    • Kubernetes 创建的 Pod 是根据 Deployment 生成的实例。
  2. 同步期望状态和实际状态

    • Kubernetes 的控制器会不断检测实体的期望状态与实例的实际状态是否一致。如果不一致,会自动调整。例如:
      • 如果 Deployment 定义了 3 个副本,而实际运行的 Pod 只有 2 个,Kubernetes 会创建一个新的 Pod

总结

  • 实体 是一种静态的资源声明,描述了用户对集群的期望状态。
  • 实例 是实体运行时的具体表现,表示资源的实际状态。
  • Kubernetes 通过控制器的工作机制,将实体和实例之间的状态保持一致,确保集群处于期望的状态。
相关推荐
ByteBeacon1 天前
Argo Workflows:Kubernetes上的工作流引擎
其他·云原生·容器·kubernetes
java_logo1 天前
Docker 部署 CentOS 全流程指南
linux·运维·人工智能·docker·容器·centos
DarkAthena1 天前
【Docker】定制化构建一个可以运行GaussDB的kylinv10sp3系统的docker镜像
数据库·docker·容器·gaussdb
daxiang120922051 天前
k8s高频面试题汇总
云原生·容器·kubernetes
lang201509281 天前
Spring Boot与K8s集成的核心机制
spring boot·后端·kubernetes
RationalDysaniaer1 天前
k8s配置与存储
云原生·容器·kubernetes
..Move...1 天前
Docker镜像制作
运维·docker·容器
行思理2 天前
Docker 应该如何学习 分四个阶段
学习·docker·容器
Dobby_052 天前
【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
linux·云原生·kubernetes