我的意思不是能够路由到特定端口,我的意思是实际更改入口侦听的端口。这可能吗?怎么可能?哪里有记录?
13z8s7eq1#
否。来自Kubernetes文档:入口不公开任意端口或协议。向Internet公开HTTP和HTTPS以外的服务通常使用类型为Service.Type=NodePort或Service.Type=LoadBalancer的服务。也许可以在AWS这样的云提供商上自定义LoadBalancer来侦听其他端口。
9gm1akwq2#
我假设您使用的是NGINX Ingress Controller,在这种情况下,在安装过程中,您可以尝试下载yaml并更改端口,而不是像this is one那样在官方yaml中执行kubectl apply,上面的文件用于L4 AWS ELB,将变为如下所示:
kubectl apply
kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx annotations: service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60" spec: type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - port: {custom port 1} targetPort: http - port: {custom port 2} targetPort: https
另一种选择是使用更强大的入口控制器。Here is a list不同的控制器。我个人的选择是Ambassador。如果你按照入门页面,你只需要改变你选择的端口的服务定义:
--- apiVersion: v1 kind: Service metadata: name: ambassador spec: type: LoadBalancer externalTrafficPolicy: Local ports: - port: {custom port} targetPort: 8080 selector: service: ambassador
kulphzqa3#
处理入口的入口控制器可以经由入口控制器部署来改变其端口。入口定义由ingress controller支持。入口控制器使用普通Kubernetes对象部署,因此将具有与其关联的Service,该Service为入口控制器公开端口。kubernetes/ingress-nginx static deploys具有服务类型为LoadBalancer的deploy.yaml:
kubernetes/ingress-nginx static deploys
LoadBalancer
deploy.yaml
kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: externalTrafficPolicy: Local type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - name: http port: 80 targetPort: http - name: https port: 443 targetPort: https
在外部服务的spec.ports[*].port中修改配置负载平衡器的端口,无论该服务如何部署。
spec.ports[*].port
eoxn13cs4#
如果您使用Helm部署Kubernetes ingress-nginx控制器,您可以在Helm值覆盖文件中更改端口的默认值80和443:
ingress-nginx
ingress-nginx: enabled: true ... controller: service: ports: http: 8123 https: 9456
参见:www.example.comhttps://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx#values在本例中,通过入口公开的任何服务现在都可以在端口8123(http)和9456(https)上使用。
4条答案
按热度按时间13z8s7eq1#
否。来自Kubernetes文档:
入口不公开任意端口或协议。向Internet公开HTTP和HTTPS以外的服务通常使用类型为Service.Type=NodePort或Service.Type=LoadBalancer的服务。
也许可以在AWS这样的云提供商上自定义LoadBalancer来侦听其他端口。
9gm1akwq2#
我假设您使用的是NGINX Ingress Controller,在这种情况下,在安装过程中,您可以尝试下载yaml并更改端口,而不是像this is one那样在官方yaml中执行
kubectl apply
,上面的文件用于L4 AWS ELB,将变为如下所示:另一种选择是使用更强大的入口控制器。Here is a list不同的控制器。我个人的选择是Ambassador。如果你按照入门页面,你只需要改变你选择的端口的服务定义:
kulphzqa3#
处理入口的入口控制器可以经由入口控制器部署来改变其端口。
入口定义由ingress controller支持。入口控制器使用普通Kubernetes对象部署,因此将具有与其关联的Service,该Service为入口控制器公开端口。
kubernetes/ingress-nginx static deploys
具有服务类型为LoadBalancer
的deploy.yaml
:在外部服务的
spec.ports[*].port
中修改配置负载平衡器的端口,无论该服务如何部署。eoxn13cs4#
如果您使用Helm部署Kubernetes
ingress-nginx
控制器,您可以在Helm值覆盖文件中更改端口的默认值80和443:参见:www.example.comhttps://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx#values
在本例中,通过入口公开的任何服务现在都可以在端口8123(http)和9456(https)上使用。