节点,容器,容器之间有什么关系?如何在集群中复制应用程序?

时间:2019-09-20 06:50:52

标签: kubernetes google-kubernetes-engine kubernetes-cluster

我是kubernetes的新手,我浏览了许多文章,但没有找到我的疑问的基本答案。

假设我有2个节点kubernete集群,然后在上面部署了2个应用程序。

  1. 我的两个应用程序都将托管在两个节点上?像两个节点上的app1一样,也像app2一样?这意味着默认情况下我们的复制因子为2。正确吗?

  2. 每个节点有1个吊舱?会是什么结构?

Node 1, Pod1 - > App1
Node 1, Pod1 - > App2
Node 2, Pod1 - > App1
Node 2, Pod1 - > App2
  1. 如果我将复制因子设置为2,那么它将如何影响结构?会创建
Node 1- Pod1 - > App1
Node 1- Pod2 - > App2
Node 2- Pod1 - > App1
Node 2- Pod2 - > App2
  1. 就上述物理/逻辑结构而言,部署是什么?它与服务有何不同?部署特定于每个节点吗?

3 个答案:

答案 0 :(得分:3)

没有预定义的Pod与节点的绑定。 Kubernetes调度程序会在创建Pod时动态地决定将Pod分配给哪个节点。

通常,Kubernetes应用程序由一组复制的Pod组成(大多数情况下由Deployment资源管理)。这些Pod最终在哪个节点上运行取决于调度程序。没有内置策略,即同一应用程序 的副本容器必须在不同的节点上运行。

但是,您可以通过各种机制来影响调度程序的决定:

答案 1 :(得分:0)

这取决于您在部署中设置了多少个副本? 如果您有2个节点,并且在A部署中设置了1个副本,则第一个节点或第二个节点将具有1个容器。如果您在A部署中设置了3个副本,那么您将在第一个节点或第二个节点中有3个Pod,或者在第一个节点中有2个Pod,在第二个节点中有1个Pod。

答案 2 :(得分:0)

容器由一个应用程序容器或一组应用程序容器组成。如果一个容器中有超过1个容器,则kubernetes调度程序将确保容器规范中定义的所有容器都在同一节点上创建。

Kubernetes调度程序始终尝试根据各种因素(包括资源可用性)在各个节点之间分布Pod。

关于您的问题:

  
      
  1. 我的两个应用程序都将托管在两个节点上?像两个节点上的app1一样,也像app2一样?这意味着我们有复制   系数默认为2。正确吗?
  2.   

如果两个Pod的复制计数均为“ 1”,则无论节点数量如何,每个应用程序只会创建一个Pod实例。否则,Kubernetes调度程序将根据每个节点上可用的资源(CPU,内存)动态决定将额外副本放置在何处。默认复制计数(也称为副本)为1。

  
      
  1. 每个节点有1个吊舱?会是什么结构?
  2.   

如果两个节点都具有足够的资源可用性,则结构可能如下所示:

Node 1 - Pod 1 -> App1
Node 2 - Pod 2 -> App2
  
      
  1. 如果我将复制因子设置为2,那么它将如何影响结构?它会创建
  2.   

根据资源的可用性,kubernetes调度程序可以创建这样的其他副本:

Node 1 - Pod 1 -> App1
         Pod 2 -> App2
Node 2 - Pod 1 -> App1
         Pod 2 -> App2