K8s dev命名空间创建Ingress暴露hello服务的配置校验与验证方法
配置正确性判断
你提供的YAML配置基本符合你的需求,但存在场景适配限制需要注意:
- 正确匹配需求的部分:使用了Kubernetes 1.19及以上版本正式支持的
networking.k8s.io/v1版本API,Ingress资源名、dev命名空间、/hello前缀路径、后端hello服务的6789端口配置,都和你描述的要求完全一致。 - 需要注意的适配点:你额外添加了
nginx.ingress.kubernetes.io/rewrite-target: /注解,这个注解仅对Nginx Ingress控制器生效,作用是将匹配到的/hello路径重写为/后再转发给后端服务。如果你的hello服务本身是在根路径/提供响应,这个配置没有问题;如果hello服务需要接收/hello路径的请求,这个重写规则会导致路径不匹配,需要删除该注解。如果你使用的不是Nginx Ingress控制器(比如Traefik、APISIX等),这个注解不会生效,需要替换为对应控制器的重写规则配置。
如果你的场景恰好是使用Nginx Ingress、且hello服务在根路径提供服务,该YAML配置是完全正确的。
验证Ingress生效的方法
按以下步骤依次验证即可:
- 首先部署配置:执行命令
kubectl apply -f <你的YAML文件路径>,确认命令没有返回报错。 - 检查资源基本状态:执行命令
kubectl get ingress -n dev ping,确认输出结果中ADDRESS列已经显示Ingress控制器的对外IP,PORTS列正常显示80(配置了HTTPS的话还会显示443)。 - 检查配置同步状态:执行命令
kubectl describe ingress -n dev ping,查看输出末尾的Events字段,确认存在SuccessfullySynced类的正常同步事件,没有配置错误类的告警。 - 实际请求验证:
- 对应你当前无Host的配置,直接执行
curl http://<上一步查到的Ingress IP>/hello,返回hello服务的预期响应即说明配置生效。 - 如果后续你添加了Host域名配置,可以携带Host头测试:
curl -H "Host: 你配置的域名" http://<Ingress IP>/hello,也可以在本地hosts文件中将域名绑定到Ingress IP后直接通过浏览器访问。
- 对应你当前无Host的配置,直接执行
- 异常排查补充:如果请求失败,可以查看Ingress控制器的日志定位问题,比如Nginx Ingress的话执行
kubectl logs -n ingress-nginx <Ingress控制器Pod名称>,通过请求转发日志判断是路径重写、后端服务不通还是其他配置问题。
内容的提问来源于stack exchange,提问作者NelsonVasu
相关产品推荐
相关产品推荐

