目标

  • 了解 Kubernetes Pods
  • 了解 Kubernetes Nodes
  • 已部署应用的故障排除

Kubernetes Pods

当您在模块 2中创建部署时,Kubernetes 创建了一个 Pod 来托管您的应用程序实例。Pod 是一个 Kubernetes 的资源抽象,表示一个或多个应用容器 (例如 Docker 或 rkt) 组,以及一些用于这些容器的共享资源。这些资源包括:

  • 共享存储,如卷
  • 网络,作为唯一的集群 IP 地址
  • 每个容器如何运行的信息,例如容器镜像版本或要使用的特定端口

Pod 模型可以理解为应用程序特定的 "逻辑主机",并且可以包含相对紧密耦合的不同应用程序容器。例如,Pod 可能包含带有 Node.js 应用程序的容器以及另一个要吸收 Node.js Web 服务器提供的数据的不同容器。Pod 中的容器共享 IP 地址和端口空间,始终位于同一位置并且统一调度,并在相同的节点上运行,共享上下文环境。

Pods 是 Kubernetes 平台上原子级别的单元。当我们在 Kubernetes 上创建一个部署时,该部署将在其中创建包含容器的 Pod (而不是直接创建容器)。每个 Pod 都绑定到它被调度的节点,并且始终在那里,直到终止 (根据重启策略) 或删除。在节点故障的情况下,在集群中的其他可用节点上调度相同的 Pod。

概要:

  • Pods
  • 节点
  • Kubectl 主要命令

Pod是由一个或者多个应用程序容器构成的(例如 Docker 或 rkt),包含共享存储 (卷),IP 地址以及有关如何运行它们的信息。


Pods 概览


节点

Pod 总是运行在 Node上。Node 是 Kubernetes 的工作机器,可以是虚拟机或物理机,这取决于在集群的安装情况。每个节点由 Master 管理。一个节点上可以有多个 Pod, Kubernetes master 会自动处理调度集群各个节点上的 Pod。 Master 在自动调度时,会考虑每个 Node 上的可用资源。

每个 Kubernetes 节点至少运行以下组件:

  • Kubelet 是负责 Kubernetes Master 和 所有节点之间通信的进程,它管理机器上运行的 Pod 和容器。
  • 容器运行时(例如 Docker, rkt) 负责从镜像仓库中拉取容器镜像,解包容器并运行应用程序。

如果一些容器属于强耦合并且需要共享资源(例如 磁盘),那么这些容器应该放到单个 Pod 中一起调度。


节点概述


使用 kubectl 进行故障排除

在模块 2中,您使用了 Kubectl 命令行接口。您将在模块 3 中继续使用它来获取有关已部署应用程序及其环境的信息。最常见的操作可以通过以下 kubectl 命令完成:

  • kubectl get - 列出可用资源
  • kubectl describe - 显示有关资源的详细信息
  • kubectl logs - 从 Pod 中的容器打印日志
  • kubectl exec - 在 Pod 中的容器执行命令

您可以使用这些命令来查看应用程序部署的时间,它们当前的状态,运行的位置及其配置。

现在我们更多地了解了集群组件和命令行交互,接下来,一起来探索分析我们的应用程序。

节点是 Kubernetes 中的工作机器,可能是物理机或虚拟机,具体取决于集群的安装配置。多个 Pod 可以在一个节点上运行。