D12 kubernetes 中的资源对象概念

1、kubernetes中的资源对象是什么,有什么作用

	在 Kubernetes 中,资源对象是集群内的一个个实体,它们代表了集群的状态和行为。这些资源对象通过 Kubernetes 的 API 进行定义和管理,每种资源对象都有特定的作用和用途
  • 获取所有的资源
kubectl api-resources

2、kubernetes中的资源对象有哪些

	将 Kubernetes 的核心资源按照功能进行划分,可以帮助理解它们在集群中的作用和相互关系。以下是一个常见的划分方式:

2.1 计算资源层 (Compute Resources Layer)

  • Node: 运行 Pod 的物理或虚拟机,提供计算资源(CPU、内存、存储等)
  • Pod: 最小的部署单元,容器运行的环境
  • ReplicaSet: 确保指定数量的 Pod 副本在集群中运行。
  • Deployment: 提供声明式的应用管理,支持滚动更新、扩展、回滚。
  • StatefulSet: 管理有状态应用的部署,保证 Pod 的有序性和稳定网络标识(固定ip及pod的名称)
  • DaemonSet: 在每个节点上运行一个 Pod 副本,用于系统级别的服务(coredns、localdns)
  • Job: 运行一次性任务,确保任务成功完成。
  • CronJob: 定时调度任务。

2.2 网络与服务层 (Networking and Service Layer)

  • Service: 提供对 Pod 的访问,支持负载均衡。类型包括 ClusterIP、NodePort、LoadBalancer。
  • Ingress: 管理外部 HTTP/HTTPS 请求如何路由到集群内部的服务。
  • EndPoints: 记录 Service 对应的 Pod 地址和端口。

2.3 存储层 (Storage Layer)

  • PersistentVolume (PV): 集群中的持久存储资源,可以预先配置。
  • PersistentVolumeClaim (PVC): 用户对存储资源的请求,与 PV 绑定。
    如何理解pv、pvc、pod之间的关系:
PV 和 PVC:PV 和 PVC 通过绑定的方式关联在一起。当用户创建 PVC 时,Kubernetes 会寻找一个符合要求的 PV 并将它绑定到 PVC 上。PVC 可以看作是对 PV 的“租用”。
Pod 和 PVC:Pod 通过挂载 PVC 来访问存储资源。在 Pod 的定义中,用户可以指定需要挂载的 PVC。Pod 运行时,Kubernetes 会确保 PVC 已经绑定到一个 PV,并将该 PV 挂载到 Pod 中。

流程总结:
1、管理员创建 PV,准备好存储资源。
2、用户创建 PVC,申请存储。
3、Kubernetes 绑定符合 PVC 要求的 PV。
4、Pod 通过挂载 PVC 获取存储资源,并使用该资源进行数据读写。
  • Volume: 是 Kubernetes 中一种抽象的存储卷,表示一个可供容器访问的存储资源。Volume 可以来源于多种存储类型,例如本地磁盘、云存储服务、网络文件系统(如 NFS)、PersistentVolume(PV)等。
  • VolumeMount:VolumeMount 是将定义的 Volume 挂载到容器文件系统中的一个机制。它指定了 Volume 在容器内部的挂载路径,以及挂载的一些选项。让容器可以访问到 Volume 中的数据,通过将 Volume 挂载到容器的特定路径下,从而使容器能够读写这个路径上的数据。
    如何理解pod、volume、volumeMount之间的关系:
Pod 是应用程序的执行单元,容器在其中运行。
VolumeMount 将 Volume 连接到容器内的文件系统,使容器可以访问和操作存储中的数据。

2.4 调度与控制层 (Scheduling and Control Layer)

  • Scheduler: 负责将 Pod 调度到合适的节点上,根据资源需求、节点可用性等因素来决定 Pod 的位置。
  • Controller: 负责管理和监控集群状态,确保集群达到期望的状态(包括 ReplicaSet、Deployment、StatefulSet 等控制器)。

2.5 管理层

  • Namespace: 提供资源分组和隔离,适用于多租户环境(比如按环境划分或者按项目划分)。
  • Quota: 限制在 Namespace 中可以使用的资源量,防止资源滥用。
  • LimitRange: 设定 Pod 或 Container 的资源使用限制,确保合理分配资源。

2.6 身份与访问控制层 (Identity and Access Control Layer)

  • Namespace: 将集群资源划分为逻辑分区,提供资源隔离。
  • ServiceAccount: Pod 的身份标识,允许 Pod 访问 Kubernetes API。
  • Role 和 ClusterRole: 定义权限策略,控制对 Kubernetes 资源的访问。
  • RoleBinding 和 ClusterRoleBinding: 将 Role 和 ClusterRole 绑定到用户、组或服务帐户,实现权限控制。

2.7 数据层

  • etcd 在 Kubernetes 中的使用场景
    1、集群启动和配置:当 Kubernetes 集群启动时,API 服务从 etcd 中加载配置和状态数据。任何通过 kubectl 或 Kubernetes API 的操作,都会最终存储到 etcd 中
    2、集群状态维护:Kubernetes 控制器会监控 etcd 中的状态变化,并采取行动。例如,如果一个 Pod 崩溃,控制器会检测到 etcd 中的状态变化,并创建新的 Pod 来恢复服务

2.8 配置与密钥管理层 (Configuration and Secrets Layer)

  • ConfigMap: 存储非机密配置信息,提供给应用程序使用。
  • Secret: 安全存储和管理敏感信息,如密码、API 密钥等。
posted @ 2024-09-03 18:59  Hello_worlds  阅读(4)  评论(0编辑  收藏  举报