使用kubectl在AKS中创建Pod时端口映射失效问题咨询
AKS部署.NET5应用端口不生效问题解决方案
- 核心误区澄清:
kubectl run命令中的--port参数仅为Kubernetes层面的容器端口声明,不会修改容器内应用本身的监听端口配置,这是端口不匹配的核心原因。 - 第一步:修正.NET5应用监听端口
.NET5默认监听5000(HTTP)、5001(HTTPS)端口,如需改为自定义端口,可在创建Pod时传入ASP.NET Core专用环境变量ASPNETCORE_URLS,示例命令:
也可在构建镜像时通过Dockerfile的kubectl run net5pod --image net5demoapi:latest --port=8080 --env ASPNETCORE_URLS=http://+:8080ENV指令固化该配置,避免每次运行时传参。 - 第二步:LoadBalancer服务端口配置修正
LoadBalancer类型的服务需要配置targetPort参数匹配Pod内应用实际监听的端口,而非Pod声明的端口:- 如果没有修改.NET5应用默认监听端口,应用仍跑在5000,创建服务的命令为:
kubectl expose pod net5pod --type=LoadBalancer --name=net5api-service --port=80 --target-port=5000- 如果已经通过环境变量将应用监听端口改为8080,
targetPort对应改为8080即可。
- 验证步骤
- 执行
kubectl logs net5pod查看应用启动日志,确认日志中打印的监听地址端口和预期一致 - 执行
kubectl describe svc net5api-service检查服务的Endpoints是否关联到正确的Pod端口 - LB服务创建后执行
kubectl get svc等待EXTERNAL-IP分配完成,直接访问该IP即可访问到你的API服务
- 执行
内容的提问来源于stack exchange,提问作者Annamalai D
相关产品推荐
相关产品推荐

