访问端口80上的nginx ingress控制器

3

我能够通过NodePort访问nginx ingress controller。我的目标是在80端口上访问控制器。

kubectl -n ingress-nginx describe service/ingress-nginx的输出如下:

Name:                     ingress-nginx
Namespace:                ingress-nginx
Labels:                   app.kubernetes.io/name=ingress-nginx
                          app.kubernetes.io/part-of=ingress-nginx
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"ingress-nginx","app.kubernetes.io/par...
Selector:                 app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx
Type:                     NodePort
IP:                       10.100.48.223
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30734/TCP
Endpoints:                192.168.0.8:80
Port:                     https  443/TCP
TargetPort:               443/TCP
NodePort:                 https  32609/TCP
Endpoints:                192.168.0.8:443
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

我有几个解决该问题的想法:

  • 通过iptables将端口30734上进入的流量重定向到端口80
  • 调整节点端口范围,使端口80也可以成为节点端口

我不确定这些是否是常见的解决方法,所以我很想听听您通常如何处理此类问题。可能还需要其他组件吗?

2个回答

1
使用负载均衡模式服务是处理这个问题的常规方式,它会在现有的NodePort前面放置一个云负载均衡器,以便您可以将正常端口重新映射回它。

啊,忘了说集群运行在Ubuntu VPS服务器上,所以没有云可用。 - elp
在裸机环境中如何将ingress-nginx服务绑定到80端口?因为LoadBalancer仅适用于云提供商。 - Ahmad Ahmadi

0

你应该将 nginx 服务的类型从 NodePort 改为 LoadBalancer。 示例清单如下:

spec:
  ports:
  - name: nginx
    port: 80
    protocol: TCP
    targetPort: 8000 // Your nginx port
  type: LoadBalancer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接