试图理解Kubernetes Worker节点和Pod与Docker“服务”相比是什么

试图理解Kubernetes Worker节点和Pod与Docker“服务”相比是什么,docker,kubernetes,microservices,Docker,Kubernetes,Microservices,我正在尝试学习Kubernetes,将我的微服务解决方案推广到云中的一些Kubernetes,例如Azure Kubernetes服务等 作为本文的一部分,我试图理解主要概念,特别是关于Pods+Workers和yml文件Pods+Services的概念。为此,我试图将docker compose文件中的内容与新概念进行比较 上下文 我目前有一个docker-compose.yml文件,其中包含大约10幅图像。我将解决方案分为两个“网络”:前端和后端。后端网络包含3个微服务,根本无法通过浏览器访

我正在尝试学习Kubernetes,将我的微服务解决方案推广到云中的一些Kubernetes,例如Azure Kubernetes服务等

作为本文的一部分,我试图理解主要概念,特别是关于Pods+Workers和yml文件Pods+Services的概念。为此,我试图将docker compose文件中的内容与新概念进行比较

上下文 我目前有一个docker-compose.yml文件,其中包含大约10幅图像。我将解决方案分为两个“网络”:前端和后端。后端网络包含3个微服务,根本无法通过浏览器访问。前端网络包含一个反向代理。Traefik与nginx类似,nginx用于将所有请求路由到适当的后端微服务和一个简单的SPA web应用程序。所有作品100%棒极了

每个后端微服务至少有以下一项:

Web API主机 后台任务主机 这意味着,如果需要,我可以扩展WebApi主机。。但我永远不应该扩展后台任务

下面是解决方案的简单示意图:

因此,如果SPA应用程序尝试通过以下途径请求某些数据:

https://api.myapp.com/account/1 这将命中反向代理并匹配规则,然后转发到/account/1

从这里开始,我试图学习如何基于这些docker compose概念编写Kubernetes部署文件

问题 每个“吊舱”都有自己的IP,所以我应该为每个容器创建一个吊舱。是的,一个Pod可以有多个容器,对我来说,这就像说“在同一台机器上安装这些软件产品” “工作节点”是我们复制/扩展的对象,因此我们应该根据扩展场景将pod放入节点中。例如,后台任务主机应该进入一个节点,因为它们不应该被缩放。此外,该节点的硬件需求非常小。而Web Api应该进入另一个节点,以便可以复制/扩展它们
如果我在正确的道路上理解上述内容,那么我将有很多节点和吊舱。。。这感觉。。。奇怪?

pod是工作负载的单位,有一个或多个容器。只有一个容器是正常的。您可以通过更改ReplicaSet或部署中的Pod副本数量来扩展该工作负载

Pod主要是一种会计结构,与基本docker没有直接的平行关系。它类似于docker compose的服务。pod在创建后基本上是不变的。与kubernetes中的每一种资源一样,pod是一种所需状态容器的声明,这些状态容器将在某个地方运行。pod中定义的所有容器都安排在一起,并共享IP资源、内存限制、磁盘卷等

ReplicaSet中的所有pod都是可替换的和致命的—ReplicaSet中的任何pod都可以处理请求,并且任何pod都可以随时替换。每个吊舱都有自己的IP,但替换吊舱可能会有不同的IP。如果你有一个吊舱的多个副本,它们都有不同的IP。您不想管理或跟踪吊舱IP。Kubernetes服务提供了一个发现:我如何找到这些吊舱的IP和路由连接到任何准备就绪的吊舱,而不关心它的身份和该组吊舱上的负载平衡循环

节点是运行内核、kubelet和dockerd的计算机器VM或物理机器。这有点简化。除了dockerd之外,还存在其他容器运行时,虚拟kubelet项目旨在改变这一假设

所有吊舱都安排在节点上。当一个包含容器的pod被安排在一个节点上时,负责并在该节点上运行的kubelet会做一些事情。kubelet与dockerd谈判启动集装箱

一旦在一个节点上调度,pod就不会移动到另一个节点。节点是可替代的,但也会致命。如果某个节点停机或正在停用,pod将被逐出/终止/删除。如果该pod是由ReplicaSet或部署创建的,则ReplicaSet控制器将创建该pod的新副本,以安排在其他地方

通常在同一节点上启动多个1-100个吊舱+容器+kubelet+dockerd。如果你有更多的POD,或者它们需要大量的cpu/ram/io,那么你需要更多的节点。因此,节点也是一个规模单位,尽管在很大程度上间接影响了web应用程序


您通常不关心pod计划在哪个节点上。您可以由kubernetes决定。

pod是工作负载的单位,有一个或多个容器。只有一个容器是正常的。您可以通过更改ReplicaSet或部署中的Pod副本数量来扩展该工作负载

Pod主要是一种会计结构,与基本docker没有直接的平行关系。它类似于docker compose的服务。pod在创建后基本上是不变的。就像库伯内特斯中的每一种资源一样,pod是所需状态的声明 -集装箱在某处运行。pod中定义的所有容器都安排在一起,并共享IP资源、内存限制、磁盘卷等

ReplicaSet中的所有pod都是可替换的和致命的—ReplicaSet中的任何pod都可以处理请求,并且任何pod都可以随时替换。每个吊舱都有自己的IP,但替换吊舱可能会有不同的IP。如果你有一个吊舱的多个副本,它们都有不同的IP。您不想管理或跟踪吊舱IP。Kubernetes服务提供了一个发现:我如何找到这些吊舱的IP和路由连接到任何准备就绪的吊舱,而不关心它的身份和该组吊舱上的负载平衡循环

节点是运行内核、kubelet和dockerd的计算机器VM或物理机器。这有点简化。除了dockerd之外,还存在其他容器运行时,虚拟kubelet项目旨在改变这一假设

所有吊舱都安排在节点上。当一个包含容器的pod被安排在一个节点上时,负责并在该节点上运行的kubelet会做一些事情。kubelet与dockerd谈判启动集装箱

一旦在一个节点上调度,pod就不会移动到另一个节点。节点是可替代的,但也会致命。如果某个节点停机或正在停用,pod将被逐出/终止/删除。如果该pod是由ReplicaSet或部署创建的,则ReplicaSet控制器将创建该pod的新副本,以安排在其他地方

通常在同一节点上启动多个1-100个吊舱+容器+kubelet+dockerd。如果你有更多的POD,或者它们需要大量的cpu/ram/io,那么你需要更多的节点。因此,节点也是一个规模单位,尽管在很大程度上间接影响了web应用程序


您通常不关心pod计划在哪个节点上。你可以让库伯内特斯来决定。

那么你可以把我在OP中的例子与POD和节点联系起来吗。例如,我不希望复制我的后台任务主机,但希望选择重新扩展api。如果我了解了K8的基本知识,我们复制的是一个节点,而不是一个Pod?这意味着我需要将我的单个实例拆分到一个节点,然后将web api拆分到另一个节点?复制一个Pod。你不在乎你的各种吊舱运行在哪个服务器=Node=dockerd上。啊!是豆荚被复制了?不是节点?啊!是时候测试一下了:艾伦,干杯!那么,你能把我在OP中的例子与POD和节点联系起来吗。例如,我不希望复制我的后台任务主机,但希望选择重新扩展api。如果我了解了K8的基本知识,我们复制的是一个节点,而不是一个Pod?这意味着我需要将我的单个实例拆分到一个节点,然后将web api拆分到另一个节点?复制一个Pod。你不在乎你的各种吊舱运行在哪个服务器=Node=dockerd上。啊!是豆荚被复制了?不是节点?啊!是时候测试一下了:艾伦,干杯!