Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Kubernetes 工作流

 

到目前为止’,您已经阅读了每个主机和节点以及其中运行的主进程的相关信息。’现在,我来可视化各事物如何协同工作,如Figure 1所示。

Figure 1: Kubernetes 架构
Kubernetes 架构

Figure 1顶部,通过 kubectl命令时,您与 Kubernetes master 进行了通信,该主控形状管理右侧的两个节点框。Kubectl 通过其在系统中暴露给用户和其他进程的 REST API 与主进程 kube-apiserver 交互。

让’s 发送一些 kubectl 命令– ,如 kubectl create x,以生成新容器。您可以提供有关要生成的容器及其正在运行的行为的详细信息,并且这些规范可提供为 kubectl在配置文件中定义的命令行参数或选项和值(很快就会显示一个例子)。工作流将:

  1. Kubectl客户端将首先将 CLI 命令转换为一个以上的 REST API 调用,并将其发送至 kube-apiserver。

  2. 验证这些 REST API 调用之后,kube-apiserver 了解该任务并调用 kube-时间表进程,从可用的节点中选择一个可执行此项作业。这是计划过程。

  3. 一旦 kube-时间表返回目标节点,kube-apiserver 将使用描述该任务的所有详细信息调度该任务。

  4. 目标节点中的 kubelet 进程接收任务并与容器引擎进行交谈,例如Figure 1中的 Docker 引擎,以生成具有所有提供参数的容器。

  5. 此作业及其规格将记录在集中式数据库 etcd 中。其工作是保留和提供对群集中所有数据的访问。

Note

实际上,主设备也可以是功能全面的节点,并像节点一样携带箱工作。因此,节点中现有的 kubelet 和 kube 代理组件也可以存在于主设备中。在Figure 1中,我们’未在主设备中包含这些组件,从而简化了 master 和 node 的概念分离。您可以在设置中使用命令 kubectl get pods --all-namespaces -o wide列出所有盒箱及其位置。在主设备中生成的盒通常作为 Kubernetes 系统–的一部分在 kube 系统命名空间中运行。Kubernetes 命名空间将在第3章中讨论。

当然,这是一个简化的工作流程,但您应该了解基本想法。事实上,随着 Kubernetes 的威力,您很少需要直接使用容器。您可以使用更高级别的对象来隐藏大部分低级别操作详细信息。

例如, Figure 1在为生成容器而不是说:创建两个容器,并确保在其中任何一台出现故障时都将其生成,实践中您只需:使用副本2创建 RC 对象(复制控制器)。

在两个 Docker 容器启动并运行后,kubeapiserver 将与 kube 控制器管理器进行交互,以保持监控作业状态并采取所有必要的措施,确保运行状态是其定义。例如,如果任何 Docker 容器都关闭,将自动生成一个新容器,然后将断开的移动器删除。

此示例中的 RC 是 Kubernetes kube manager 进程提供的一个对象。Kubernetes 对象提供了额外的抽象层,以更简单、更整洁的方式在后台获得相同(通常情况下)工作。由于您在更高级别的工作,而不是从低层次的细节,Kubernetes 对象可显著降低整体部署时间、大脑工作和故障排除的麻烦。让’我们来研究一下。