Kubernetes Ingress路由机制及配置疑问:DNS与服务关联解析
解答你的Ingress相关疑问
咱们一步步来拆解你提到的这几个问题:
1. 当前安装的是哪类Ingress服务?
从你给出的Ingress配置里的注解kubernetes.io/ingress.class: nginx可以直接确定,当前集群里部署的是NGINX Ingress Controller。这个注解是Kubernetes用来指定Ingress资源归属的标准方式——它告诉集群,这个Ingress规则要交给标注为nginx类的Ingress控制器来处理。
2. DNS“k8s.privatecloud.com”配置的对应IP是什么?
这个没法直接从你提供的Ingress配置里得到,得结合集群的实际部署情况查询:
- 先找到NGINX Ingress Controller对应的Service,执行命令:
kubectl get svc -n <nginx-ingress的命名空间>(常见命名空间是ingress-nginx或kube-system) - 如果Service是
LoadBalancer类型,它的EXTERNAL-IP字段就是DNS要指向的地址;如果是NodePort类型,DNS要指向集群任意节点的IP,再搭配Service对应的NodePort端口;如果是ClusterIP类型,这个域名一般只用于集群内部访问,外部需要额外代理转发。 - 另外,
k8s.privatecloud.com是私有域名,它的DNS记录(通常是A记录)需要在你的私有DNS服务器上配置,指向上面查到的Ingress控制器入口IP。
3. 该域名的DNS路由是如何实现请求转发的?
整个请求流转的流程大概是这样的:
- 用户发起
http://testsvc.k8s.privatecloud.com请求时,先向配置的私有DNS服务器查询域名对应的IP; - DNS返回Ingress控制器的入口IP,请求被发送到这个地址;
- NGINX Ingress Controller接收到请求后,匹配Ingress资源里的
host: testsvc.k8s.privatecloud.com规则; - 根据规则里的http路径配置(你提供的配置未写完,通常会有
paths字段指向后端Service),把请求转发到对应的Kubernetes Service; - 最后Service将请求转发到后端的Pod实例,完成整个请求处理。
内容的提问来源于stack exchange,提问作者user1578872




