我有一个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很可能也有这样的方法。但是,当您只想更改端口时,您必须考虑增加的复杂性是否真的值得。