如何修改Nginx入口端口号?



我有一个K8S服务(app-filestash-testing)运行如下:

NAME                    TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)     AGE
app-filestash-testing   ClusterIP   10.111.128.18   <none>        10000/TCP   18h
kubernetes              ClusterIP   10.96.0.1       <none>        443/TCP     20h

我使用下面的yaml文件来创建一个试图访问此服务的入口:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: app-filestash-testing
spec:
rules:
- host: www.masternode.com
http:
paths:
- backend:
serviceName: app-filestash-testing
servicePort: 10000
/etc/hosts文件中,我做了这样的更改(我使用工作节点的公共IP):
127.0.0.1 localhost
xx.xxx.xxx.xxx www.masternode.com

然而,当我检查Ingress时,我看到Ingress端口是80。

NAME                    CLASS   HOSTS                ADDRESS   PORTS   AGE
app-filestash-testing   nginx   www.masternode.com             80      14h

当前服务正在运行,监听端口为10000,但入口端口为80。

我只是想知道是否有任何方法/设置将入口的端口号更改为10000?如何通过入口访问此服务?是否可以在/etc/hosts文件中设置端口号?

谢谢。

From: https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

Ingress不公开任意端口或协议。向internet公开HTTP和HTTPS以外的服务通常使用service类型的服务。Type=NodePort or Service.Type=LoadBalancer.

NodePort可能是您正在寻找的。更多信息和选项记录在这里:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types

在常规入口中,您不能设置一个特定的端口,通过该端口可以到达入口。
在某些特定的情况下,通过添加特定的注释理论上是可能的,但我不相信nginx-ingress有这样的事情。

然而,完全有可能有一个可以通过不同端口访问的入口类。
我对nginx-ingress不太熟悉,不能说如何在那里做到这一点,但是如果你要使用ingress-nginx,有一些设置可以改变这些端口。例如,通过使用helm安装这个入口类,您可以提供值controller.service.ports.http(默认为80)和/或controller.service.ports.https(默认为443)。
对于nginx-ingress很可能也有这样的方法。但是,当您只想更改端口时,您必须考虑增加的复杂性是否真的值得。

最新更新