typora/note/devops/kubernetes/对象.md

21 lines
3.0 KiB
Markdown
Raw Normal View History

2024-12-11 21:48:55 -05:00
### 一、对象概述
Kubernetes 中,有很多不同类型的对象,它们是 Kubernetes 系统中持久化的实体。Kubernetes 对象用于表示系统的状态,包括描述哪些容器化应用程序运行在哪些节点上、可以使用哪些资源、应用程序的行为方式(如重启策略、升级和容错)等。一旦创建某个对象, Kubernetes 系统将不断工作以确保该对象存在。通过创建对象,你本质上是在告知 Kubernetes 系统,你想要的集群工作负载状态看起来应是什么样子的。
对象通常通过 YAML 或 JSON 文件定义,并且使用 Kubernetes 提供的命令行工具 `kubectl` 创建和管理。每个 Kubernetes 对象都包括两个嵌套的对象字段:`spec` 字段和 `status` 字段。`spec` 字段必须提供,它描述了对象的期望状态,而 `status` 字段描述了对象的当前状态,通常由 Kubernetes 系统自动填充和更新。
理解和使用这些对象是在 Kubernetes 中成功部署和管理应用程序的关键。
### 二、核心对象:
1. **Pod**Pod 是 Kubernetes 中最基本的部署单元,它是一个或多个容器的集合,这些容器共享存储、网络和运行配置。每个 Pod 都有一个独特的 IP 地址,允许容器与其他 Pod 进行交互。
2. **Service**Service 是定义一组 Pod 的访问策略的抽象概念。它允许内部或外部的通信到达 Pod 集合,即使这些 Pod 可能随着时间的推移而改变。
3. **Deployment**Deployment 为 Pod 和 ReplicaSets 提供声明性的更新。它允许你描述应用的预期状态Deployment 控制器则负责将当前状态更改为期望状态,比如滚动更新应用程序的版本。
4. **ReplicaSet**ReplicaSet 的目的是维护一组可复制的 Pod 副本的稳定运行。它保证指定数量的 Pod 副本始终处于运行状态。
5. **StatefulSet**StatefulSet 是用于管理有状态应用程序的对象。与 Deployment 相比StatefulSet 为每个 Pod 维护一个持久的标识符和存储。
6. **DaemonSet**DaemonSet 确保所有(或某些)节点上都运行一个 Pod 的副本。当有节点加入集群时,一个新的 Pod 会自动添加到这些节点上。
7. **Job**Job 对象会创建一个或者多个 Pod并确保指定数量的 Pod 成功终止。当任务需要批处理执行而非持续运行时Job 对象非常有用。
8. **CronJob**CronJob 管理基于时间的 Job例如在给定时间点只运行一次或者周期性地运行任务。
9. **Namespace**Namespace 是多个虚拟集群的抽象,它可以帮助你在同一个物理集群中隔离不同的用户、团队或项目的资源。
10. **ConfigMap****Secret**这些对象允许你将配置项和敏感信息如密码、OAuth 令牌和 ssh 密钥存储和管理,这样你就可以将这些信息从 Pod 容器的定义中解耦。
11. **Volume**Volume 是存储相关的对象,它允许数据在容器重启后持久化,并且可以在 Pod 的容器之间共享。