我正在尝试在同一个 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 新手。所以,对故障排除了解不多。互联网上也有有限的资源可以满足此特定要求。
...但是,App1 在端口 8080 上完美运行。
该端口只能由同一个 pod 中的一个容器打开,无论您为
containerPort
或 EXPOSE
指定什么;这些设置都不会指示您的应用程序使用端口 7070。
相反,您应该找出配置 .net 应用程序以侦听端口 7070 的方法,重新应用您的清单,它应该可以正常工作。