Amazon web services ECS任务不断抛出erorr“;DockerClientConfigError:无法在桥接模式下获取任务的桥接IP;

Amazon web services ECS任务不断抛出erorr“;DockerClientConfigError:无法在桥接模式下获取任务的桥接IP;,amazon-web-services,docker,amazon-cloudformation,amazon-ecs,fluentd,Amazon Web Services,Docker,Amazon Cloudformation,Amazon Ecs,Fluentd,使用AWS ECS,我部署了两个服务。第一个服务是我的前端服务(副本),第二个服务是fluentbit日志驱动程序(守护进程)。前端服务从来没有出现过问题,并且像它应该出现的那样,通过了所有运行状况检查等。但是,当我在同一服务中部署另一个任务定义,或者部署一个单独的服务以及它自己的任务定义时,我会收到错误“状态原因DockerClientConfigError:无法在桥接模式下为任务获取BridgeIP” 这里不存在NAT网关不存在或任何问题。我可以登录EC2主机并进行更新、拉取包等。这里是我的

使用AWS ECS,我部署了两个服务。第一个服务是我的前端服务(副本),第二个服务是fluentbit日志驱动程序(守护进程)。前端服务从来没有出现过问题,并且像它应该出现的那样,通过了所有运行状况检查等。但是,当我在同一服务中部署另一个任务定义,或者部署一个单独的服务以及它自己的任务定义时,我会收到错误“状态原因DockerClientConfigError:无法在桥接模式下为任务获取BridgeIP”

这里不存在NAT网关不存在或任何问题。我可以登录EC2主机并进行更新、拉取包等。这里是我的cloudformation模板的一个片段,它显示了我如何设置服务

service:
    Type: AWS::ECS::Service
    DependsOn: 
      - ALBListener
      - ECSAutoScalingGroup
    Properties:
      Cluster: !Ref 'ECSCluster'
      LaunchType: EC2
      ServiceName: vrs-client-test-service
      DeploymentController: 
        Type: ECS
      DesiredCount: 4
      PlacementStrategies:
        - Field: instanceId
          Type: spread
      LoadBalancers:
      - ContainerName: vrs-client-test
        ContainerPort: 443
        TargetGroupArn: arn:aws:elasticloadbalancing:us-east-1:<acctnumber>:targetgroup/vrs-client-test-container/e0fee39950d680ec
      TaskDefinition: !Ref 'taskdefinition'
      ServiceRegistries:
        - RegistryArn: !GetAtt DiscoveryService.Arn
          ContainerName: vrs-client-test
          ContainerPort: 443
taskdefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: !Join ['', [!Ref 'AWS::StackName', -vrs-client-test]]
      ContainerDefinitions:
      - Name: vrs-client-test
        Essential: true
        Image: <acctid>.dkr.ecr.us-east-1.amazonaws.com/vrs-client:sha.df4f418f
        Cpu: 256
        Memory: 512
        PortMappings:
          - ContainerPort: 443
            HostPort: 0
fluentservice:
    Type: AWS::ECS::Service
    Properties:
      Cluster: !Ref 'ECSCluster'
      LaunchType: EC2
      ServiceName: vrs-client-fluentbit
      DeploymentController:
        Type: ECS
      SchedulingStrategy: DAEMON
      TaskDefinition: !Ref 'taskdefinitionfluent'
taskdefinitionfluent:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: !Join ['', [!Ref 'AWS::StackName', -vrs-client-test-fluent]]
      ContainerDefinitions:
      - Name: log_router
        FirelensConfiguration:
            Type: fluentbit
            Options:
              enable-ecs-log-metadata: true
        Essential: true
        Image: 906394416424.dkr.ecr.us-east-1.amazonaws.com/aws-for-fluent-bit:latest
        Memory: 100
        LogConfiguration:
          LogDriver: awsfirelens
          Options:
           Port: "443"
            tls: 'on'
            tls.verify: 'off'
            Format: "json_lines"
服务:
类型:AWS::ECS::服务
德彭森:
-阿尔布利斯腾纳
-ECSAutoScalingGroup
特性:
集群:!参考“ECSCluster”
启动类型:EC2
服务名称:vrs客户端测试服务
部署控制器:
类型:ECS
期望计数:4
就业策略:
-字段:instanceId
类型:排列
负载平衡器:
-ContainerName:vrs客户端测试
集装箱港口:443
targetgroup arn:arn:aws:ElasticLoadBalancement:us-east-1::targetgroup/vrs客户端测试容器/e0fee39950d680ec
任务定义:!参考“任务定义”
服务注册处:
-注册管理员:!GetAtt DiscoveryService.Arn
ContainerName:vrs客户端测试
集装箱港口:443
任务定义:
类型:AWS::ECS::TaskDefinition
特性:
家庭:!加入['',[!Ref'AWS::StackName',-vrs客户端测试]]
集装箱定义:
-名称:vrs客户端测试
基本:正确
图片:.dkr.ecr.us-east-1.amazonaws.com/vrs客户端:sha.df4f418f
中央处理器:256
内存:512
端口映射:
-集装箱港口:443
主机端口:0
fluentservice:
类型:AWS::ECS::服务
特性:
集群:!参考“ECSCluster”
启动类型:EC2
服务名称:vrs客户端fluentbit
部署控制器:
类型:ECS
调度策略:守护进程
任务定义:!参考“任务定义流畅”
任务定义:
类型:AWS::ECS::TaskDefinition
特性:
家庭:!加入['',[!Ref'AWS::StackName',-vrs客户端测试流畅]]
集装箱定义:
-名称:日志路由器
FireLens配置:
类型:fluentbit
选项:
启用ecs日志元数据:true
基本:正确
图片:906394416424.dkr.ecr.us-east-1.amazonaws.com/aws for fluent bit:latest
内存:100
日志配置:
日志驱动程序:awsfirelens
选项:
端口:“443”
tls:“on”
tls.verify:'关闭'
格式:“json_行”

我在任务定义中看到了相同的错误。它有我的应用程序容器和一个流畅的位容器。Fluent位容器已配置为从应用程序容器装入卷。所以ECS试图先启动应用程序容器

有人给我指了这个AWS文件:

对于使用网桥网络模式的任务,具有FireLens配置的容器必须在任何依赖它的应用程序容器启动之前启动。要控制容器的开始顺序,请在任务定义中使用依赖项条件。有关更多信息,请参见容器依赖关系

注意:如果在FireLens配置的容器定义中使用依赖条件参数,请确保每个容器都有启动或正常条件要求

所以要落实这个,

  • 我通过让应用程序容器从Fluent位容器装载卷来逆转依赖性
  • 此外,我还使用依赖项配置强制Fluent位容器在App容器之前启动
  • 现在,任务定义正在完美运行

    另外,我之前的设置(使用Fluent bit container,具体取决于应用程序容器)在网络模式=awsvpc下运行良好


    当我将网络模式切换到网桥时,我开始出现
    无法获取网桥IP
    错误。

    您找到解决方案了吗?在类似的情况下,我看到了同样的错误。我有一个为服务运行的示例任务定义。当我尝试用另一个任务定义更新它时,我看到
    无法在桥接模式下为任务获取BridgeIP