Amazon web services ECS任务不断抛出erorr“;DockerClientConfigError:无法在桥接模式下获取任务的桥接IP;
使用AWS ECS,我部署了两个服务。第一个服务是我的前端服务(副本),第二个服务是fluentbit日志驱动程序(守护进程)。前端服务从来没有出现过问题,并且像它应该出现的那样,通过了所有运行状况检查等。但是,当我在同一服务中部署另一个任务定义,或者部署一个单独的服务以及它自己的任务定义时,我会收到错误“状态原因DockerClientConfigError:无法在桥接模式下为任务获取BridgeIP” 这里不存在NAT网关不存在或任何问题。我可以登录EC2主机并进行更新、拉取包等。这里是我的cloudformation模板的一个片段,它显示了我如何设置服务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主机并进行更新、拉取包等。这里是我的
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配置的容器定义中使用依赖条件参数,请确保每个容器都有启动或正常条件要求
所以要落实这个,
当我将网络模式切换到网桥时,我开始出现
无法获取网桥IP
错误。您找到解决方案了吗?在类似的情况下,我看到了同样的错误。我有一个为服务运行的示例任务定义。当我尝试用另一个任务定义更新它时,我看到无法在桥接模式下为任务获取BridgeIP