Kubernetes跨区域节点多Ingress配置及域名指向等技术疑问
Kubernetes Nginx Ingress 核心疑问解答
1. 域名需要指向哪个IP?
域名要指向Nginx Ingress Controller的服务暴露IP,具体分场景:
- 若用
NodePort暴露Ingress Controller,指向任意一台运行该Controller Pod的节点IP(需加上对应NodePort端口); - 云环境下用
LoadBalancer类型,直接指向云厂商分配的负载均衡器公网IP; - 裸金属环境用
HostPort或类似方式,指向部署了Ingress Controller的节点IP。
核心逻辑:找到能直接访问到Ingress Controller的入口IP,将域名解析到这个IP即可。
2. 是否可以配置多个Ingress?因为我希望区域1中的Pod使用同一区域的Ingress。
完全可以实现,具体操作:
- 针对不同区域部署独立的Nginx Ingress Controller实例,给每个Controller配置节点选择器,匹配对应区域的Worker节点标签,让Controller仅运行在目标区域节点上;
- 为各区域的服务创建单独的Ingress资源,通过
ingressClassName字段指定对应区域的Ingress Controller(每个Controller可配置唯一的ingressClassName);
这样就能实现区域内服务流量走同区域Ingress,避免跨区域流量损耗,同时实现流量隔离。
3. 能否将Ingress单独部署在专用节点上,仅暴露Ingress节点的IP,而非Master node或Worker node的IP?
当然可以,步骤如下:
- 给专用Ingress节点打上专属标签,比如
node-role.kubernetes.io/ingress: "true"; - 部署Nginx Ingress Controller时,通过
nodeSelector配置让Pod仅调度到带该标签的专用节点; - 给这些专用节点设置污点(如
node-role.kubernetes.io/ingress:NoSchedule),防止其他无关Pod调度上来,保证Ingress节点资源专供; - 暴露Ingress Controller服务时,仅对外公布这些专用节点的IP即可,Master和其他Worker节点的IP无需对外暴露。
内容的提问来源于stack exchange,提问作者Motaro
相关产品推荐
相关产品推荐

