EKS:无法绑定到地址 http://[::]:8080 已在使用中

问题描述 投票:0回答:1

我正在尝试在同一个 Pod 中运行两个容器。

spec:
  containers:
    - name: app1
      image: "035412872415.dkr.ecr.eu-west-1.amazonaws.com/app1:latest"
      imagePullPolicy: "Always"
      securityContext:
        privileged: false
        readOnlyRootFilesystem: true
        allowPrivilegeEscalation: false
      ports:
        - containerPort: 8080
    - name: app2
      image: "035412872415.dkr.ecr.eu-west-1.amazonaws.com/app2:latest"
      imagePullPolicy: "Always"
      securityContext:
        privileged: false
        readOnlyRootFilesystem: true
        allowPrivilegeEscalation: false
      ports:
        - containerPort: 7070

我已将所有位置的端口从 8080 修改为 7070(.Dockerfile、launchSeettings.json)并构建映像并在 ECR 上推送。

但是,每当我尝试在 pod 上部署应用程序时。它会抛出错误,并且容器不会在 App2 的 pod 上启动。然而,App1 在端口 8080 上完美运行。

App2 的 pod 出现错误:

>kubectl logs [podname] -c app2

Unhandled exception. System.IO.IOException: Failed to bind to address
http://[::]:8080:
address already in use.
---> Microsoft.AspNetCore.Connections.AddressInUseException: Address already in use
---> System.Net.Sockets.SocketException (98): Address already in use
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.CreateDefaultBoundListenSocket(EndPoint endpoint)
   at Microsoft.AspNetCore

我尝试删除部署并再次部署。但是,同样的问题仍然存在。

我研究了这个错误,他们建议重新启动系统的任何地方都可以解决该问题。但是,如何重新启动 Kubernetes?还有其他服务,例如 NodePort 正在运行。

我是 EKS 新手。所以,对故障排除了解不多。互联网上也有有限的资源可以满足此特定要求。

.net docker kubernetes amazon-eks
1个回答
0
投票

...但是,App1 在端口 8080 上完美运行。

该端口只能由同一个 pod 中的一个容器打开,无论您为

containerPort
EXPOSE
指定什么;这些设置都不会指示您的应用程序使用端口 7070。

相反,您应该找出配置 .net 应用程序以侦听端口 7070 的方法,重新应用您的清单,它应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.