EKS LoadBalancer创建成功但Web应用指定端口无法访问求助
问题排查与解决方案
你不需要额外创建新的Kubernetes资源,核心问题是你的LoadBalancer Service和myapp Deployment尚未正确关联,导致请求无法转发到Pod。以下是具体的检查和修复步骤:
1. 确认Service选择器与Deployment标签匹配
LoadBalancer Service通过标签选择器定位Pod,两者的标签必须完全一致:
- 查看Deployment的Pod模板标签:
示例输出:kubectl get deployment myapp -o jsonpath='{.spec.template.metadata.labels}'{"app":"myapp"} - 查看Service的选择器配置:
若输出与Deployment标签不匹配,修改Service的YAML文件,更新kubectl get service lb -o jsonpath='{.spec.selector}'spec.selector部分使其与Deployment标签一致,再重新应用:kubectl apply -f your-service.yaml
2. 验证Service端口映射配置
确保Service的端口配置正确映射到Pod的3000端口:
port:Service对外暴露的端口(即你访问时用的3000端口)targetPort:Pod内部监听的端口(必须设置为3000,与myapp的监听端口一致)
示例正确的端口配置片段:
spec: ports: - port: 3000 targetPort: 3000 protocol: TCP
3. 检查Pod运行状态
确认Deployment已成功创建Pod且Pod处于正常运行状态:
kubectl get pods -l app=myapp # 此处标签需与Deployment的标签一致
若Pod状态异常(如CrashLoopBackOff),先排查Pod启动问题,比如镜像是否有效、容器端口配置是否正确等。
4. 确认Service已关联到Pod
查看Service的端点(Endpoints),确认有Pod被成功关联:
kubectl get endpoints lb
若ENDPOINTS列为空,说明Service与Pod的标签不匹配,回到步骤1修复即可。
内容的提问来源于stack exchange,提问作者yen
相关产品推荐
相关产品推荐

