激动人心的时刻到了,终于到核心概念这一步了,前面的知识是有点“干燥了”。不急后面会看见代码,可以多像金山打字一样打一打代码,熟悉一下yaml格式

Pod 在 Kubernetes 架构中的位置和实现原理

Pod 在架构中的位置

Pod 位于 Kubernetes 架构的核心中,是构建应用的最小单元。Pod 可以用来运行各种类型的应用,包括 Web 应用程序、数据库、缓存、批处理作业等。
深入掌握k8s核心概念--Pod(一)-LMLPHP

深入掌握k8s核心概念--Pod(一)-LMLPHP

Pod 具体实现

  • 容器: Pod 中的容器是 Pod 的基本组成单元,每个容器都是一个独立的运行环境。
  • 共享资源: Pod 中的容器共享网络、IPC 和存储资源,这使得 Pod 内部的容器之间可以进行高效的通信和数据交换。
  • 调度: Kubernetes 会根据 Pod 的调度策略将其调度到合适的节点上运行。
  • 管理: Kubernetes 会对 Pod 进行生命周期管理,包括创建、运行、重启、终止等操作。

Pod 的实现依赖于 Kubernetes 的几个核心组件:

  • API Server: Kubernetes 的 API Server 是一个 RESTful API,用于管理 Kubernetes 集群中的所有资源,包括 Pod。
  • Scheduler: Kubernetes 的 Scheduler 负责将 Pod 调度到合适的节点上运行。
  • Kubelet: Kubelet 是运行在每个节点上的代理,负责在节点上管理 Pod 的生命周期。

Pod 为什么在 Kubernetes 中很重要

Pod 在 Kubernetes 中扮演着重要的角色,主要有以下几个原因:

  • Pod 提供了一种简单易用的方式来部署和管理容器。 Pod 可以将多个容器作为一个单元进行管理,简化了操作和维护。
  • Pod 可以提高资源利用率。 Pod 可以将多个容器调度到同一个节点上运行,从而提高资源利用率。
  • Pod 可以提高应用的可靠性。 Pod 可以通过重启策略来保证应用的可靠性。

Pod 的最佳实践

在使用 Pod 时,尽量遵循以下实践:

  • 每个 Pod 仅包含一个容器。 除非有特殊需求,否则每个 Pod 应仅包含一个容器,以简化管理和维护。
  • 使用合理的资源配置。 为 Pod 分配合理的资源,既要满足应用需求,又要避免资源浪费。
  • 定义端口配置。 为容器定义端口配置,以便其他 Pod 或服务可以访问容器。
  • 使用 Pod 扩缩容。 根据应用需求,使用 Pod 扩缩容策略来动态调整 Pod 数量。

为什么Kubernetes会设计出一个全新的Pod的概念并且Pod有这样特殊的组成结构?

  • 原因之一:在一组容器作为一个单元的情况下,我们难以简单地对“整体”进行判断及有效地行动。

    比如,一个容器死亡了,此时算是整体死亡么?是N/M的死亡率么?引入业务无关并且不易死亡的Pause容器作为Pod的根容器,以它的状态代表整个容器组的状态,就简单、巧妙地解决了这个难题。

  • 原因之二:Pod里的多个业务容器共享Pause容器的IP,共享Pause容器挂接的Volume

    这样既简化了密切关联的业务容器之间的通信问题,也很好地解决了它们之间的文件共享问题。

Pod 概述

Pod 是 Kubernetes 中的核心概念,代表了一组并置的容器。 Pod 中的容器共享网络、IPC 和存储资源,并作为单个单元进行调度和管理。Pod 可以包含一个或多个容器,但通常情况下,每个 Pod 仅包含一个容器。

Pod 类型

Pod 特性

Pod 生命周期

Pod 重启策略

总结

Pod 是 Kubernetes 中的核心概念,理解 Pod 的工作原理和配置方式对于使用 Kubernetes 进行应用部署至关重要。
这里放一张yaml格式的资源定义代码图片

深入掌握k8s核心概念--Pod(一)-LMLPHP

Pod 常见属性

04-17 09:34