停止集装箱时的不同行为(码头停止与排水)

时间:2018-05-28 06:31:14

标签: docker docker-swarm

我遇到了Docker的奇怪行为。

由于某些原因,当我在之前运行此服务的主机上使用docker service update --availability drain myHost时,服务需要两次尝试在不同的节点上启动。

当对docker stop containerId执行相同操作时,服务将在第一次尝试时开始。

我不认为docker负责我们的服务需要多次尝试启动,但是当节点处于排水模式而不是停靠者停止时,停止容器时必须有不同的行为,我希望找到这种差异将指出我找到服务问题的正确方向。

为了更清楚我做了什么,我将在这里提供一个简短的例子:

  1. 初始状况
  2.   

    Node1(活动):

         
        
    • Service1正在运行
    •   
         

    Node2(有效):

         
        
    • Service2正在运行
    •   
    1. docker service update --availability drain Node2
    2.   

      Node1(活动):

           
          
      • Service1正在运行
      •   
      • Service2正在运行(两次尝试启动后)
      •   
           

      Node2(排水):

      1. docker service update --availability active Node2
      2.   

        Node1(活动):

             
            
        • Service1正在运行
        •   
        • Service2正在运行(没有任何变化,因为没有重新平衡发生)
        •   
             

        Node2(有效):

        1. (onNode1)$: docker stop serivce2
        2.   

          Node1(活动):

               
              
          • Service1正在运行
          •   
               

          Node2(有效):

               
              
          • Service2正在运行(首次尝试后)
          •   

          通过添加约束强制服务不在节点上运行时,行为是相同的。

          1. 初始状况
          2.   

            Node1(活动):

                 
                
            • Service1正在运行
            •   
                 

            Node2(有效):

                 
                
            • Service2正在运行
            •   
            1. docker service update --constraint-add "node.hostname != Node2" Service2
            2.   

              Node1(活动):

                   
                  
              • Service1正在运行
              •   
              • Service2正在运行(两次尝试启动后)
              •   
                   

              Node2(排水):

              1. docker service update --constraint-rm "node.hostname != Node2" Service2
              2.   

                Node1(活动):

                     
                    
                • Service1正在运行
                •   
                • Service2正在运行(没有任何变化,因为没有重新平衡发生)
                •   
                     

                Node2(排水):

                1. docker service update --constraint-add "node.hostname != Node1" Service2
                2.   

                  Node1(活动):

                       
                      
                  • Service1正在运行
                  •   
                       

                  Node2(排水):

                       
                      
                  • Service2正在运行(两次尝试启动后)
                  •   

                  我无法找到任何记录的差异,所以我希望stackoverflow上有人知道docker在做什么不同。

0 个答案:

没有答案
相关问题