typora/note/devops/kubernetes/对象.md
2024-12-12 10:48:55 +08:00

3.0 KiB
Raw Blame History

一、对象概述

Kubernetes 中,有很多不同类型的对象,它们是 Kubernetes 系统中持久化的实体。Kubernetes 对象用于表示系统的状态,包括描述哪些容器化应用程序运行在哪些节点上、可以使用哪些资源、应用程序的行为方式(如重启策略、升级和容错)等。一旦创建某个对象, Kubernetes 系统将不断工作以确保该对象存在。通过创建对象,你本质上是在告知 Kubernetes 系统,你想要的集群工作负载状态看起来应是什么样子的。

对象通常通过 YAML 或 JSON 文件定义,并且使用 Kubernetes 提供的命令行工具 kubectl 创建和管理。每个 Kubernetes 对象都包括两个嵌套的对象字段:spec 字段和 status 字段。spec 字段必须提供,它描述了对象的期望状态,而 status 字段描述了对象的当前状态,通常由 Kubernetes 系统自动填充和更新。

理解和使用这些对象是在 Kubernetes 中成功部署和管理应用程序的关键。

二、核心对象:

  1. PodPod 是 Kubernetes 中最基本的部署单元,它是一个或多个容器的集合,这些容器共享存储、网络和运行配置。每个 Pod 都有一个独特的 IP 地址,允许容器与其他 Pod 进行交互。
  2. ServiceService 是定义一组 Pod 的访问策略的抽象概念。它允许内部或外部的通信到达 Pod 集合,即使这些 Pod 可能随着时间的推移而改变。
  3. DeploymentDeployment 为 Pod 和 ReplicaSets 提供声明性的更新。它允许你描述应用的预期状态Deployment 控制器则负责将当前状态更改为期望状态,比如滚动更新应用程序的版本。
  4. ReplicaSetReplicaSet 的目的是维护一组可复制的 Pod 副本的稳定运行。它保证指定数量的 Pod 副本始终处于运行状态。
  5. StatefulSetStatefulSet 是用于管理有状态应用程序的对象。与 Deployment 相比StatefulSet 为每个 Pod 维护一个持久的标识符和存储。
  6. DaemonSetDaemonSet 确保所有(或某些)节点上都运行一个 Pod 的副本。当有节点加入集群时,一个新的 Pod 会自动添加到这些节点上。
  7. JobJob 对象会创建一个或者多个 Pod并确保指定数量的 Pod 成功终止。当任务需要批处理执行而非持续运行时Job 对象非常有用。
  8. CronJobCronJob 管理基于时间的 Job例如在给定时间点只运行一次或者周期性地运行任务。
  9. NamespaceNamespace 是多个虚拟集群的抽象,它可以帮助你在同一个物理集群中隔离不同的用户、团队或项目的资源。
  10. ConfigMapSecret这些对象允许你将配置项和敏感信息如密码、OAuth 令牌和 ssh 密钥存储和管理,这样你就可以将这些信息从 Pod 容器的定义中解耦。
  11. VolumeVolume 是存储相关的对象,它允许数据在容器重启后持久化,并且可以在 Pod 的容器之间共享。