除了80 / 443之外,我还能为Kubernetes入口设置自定义端口吗?

s6fujrry  于 2023-03-07  发布在  Kubernetes
关注(0)|答案(4)|浏览(125)

我的意思不是能够路由到特定端口,我的意思是实际更改入口侦听的端口。
这可能吗?怎么可能?哪里有记录?

13z8s7eq

13z8s7eq1#

否。来自Kubernetes文档:
入口不公开任意端口或协议。向Internet公开HTTP和HTTPS以外的服务通常使用类型为Service.Type=NodePort或Service.Type=LoadBalancer的服务。
也许可以在AWS这样的云提供商上自定义LoadBalancer来侦听其他端口。

9gm1akwq

9gm1akwq2#

我假设您使用的是NGINX Ingress Controller,在这种情况下,在安装过程中,您可以尝试下载yaml并更改端口,而不是像this is one那样在官方yaml中执行kubectl apply,上面的文件用于L4 AWS ELB,将变为如下所示:

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
kulphzqa

kulphzqa3#

处理入口的入口控制器可以经由入口控制器部署来改变其端口。
入口定义由ingress controller支持。入口控制器使用普通Kubernetes对象部署,因此将具有与其关联的Service,该Service为入口控制器公开端口。
kubernetes/ingress-nginx static deploys具有服务类型为LoadBalancerdeploy.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中修改配置负载平衡器的端口,无论该服务如何部署。

eoxn13cs

eoxn13cs4#

如果您使用Helm部署Kubernetes ingress-nginx控制器,您可以在Helm值覆盖文件中更改端口的默认值80和443:

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)上使用。

相关问题