我可以为Kubernetes入口设置自定义端口,以监听80/443之外的端口吗?

Chr*_*ski 5 kubernetes kubernetes-ingress

我并不是说能够路由到特定端口,而是要实际更改入口侦听的端口。

这可能吗?怎么样?这在哪里记录?

dla*_*law 24

不。来自kubernetes 文档

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

可以在 AWS 等云提供商上自定义 LoadBalancer 以侦听其他端口。

  • 可以自定义_入口控制器_以侦听任何端口,但无法修改入口定义中的端口 (7认同)

vic*_*rtv 15

我假设您正在使用NGINX Ingress Controller。在这种情况下,在安装过程中,而不是做一个kubectl apply像YAML官方这是一个,你可以尝试下载YAML和更改端口。上面用于 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
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用更强大的入口控制器。 这是不同控制器的列表。我个人的选择是大使。如果您遵循入门页面,您只需更改您选择的端口的服务定义:

---
apiVersion: v1
kind: Service
metadata:
  name: ambassador
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
   - port: {custom port}
     targetPort: 8080
  selector:
    service: ambassador
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 9

一个入口定义是由一个支持入口控制器。入口控制器与普通 Kubernetes 对象一起部署,因此将有一个与之关联的服务,为入口控制器公开端口。

kubernetes/ingress-nginx static deploysdeploy.yaml一个服务类型LoadBalancer

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
Run Code Online (Sandbox Code Playgroud)

修改负载均衡器配置的端口,在spec.ports[*].port外部服务中,但已部署。

  • 从 https://kubernetes.github.io/ingress-nginx/deploy 下载 `deploy.yaml` 进行上述更改,然后 `kubectl apply -f deploy.yaml` (3认同)

Mar*_*ark 5

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

ingress-nginx:
  enabled: true
  ...
  controller:
    service:
      ports:
        http: 8123
        https: 9456
Run Code Online (Sandbox Code Playgroud)

请参阅此处:https ://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx#values

在此示例中,通过入口公开的任何服务现在均可在端口 8123 (http) 和 9456 (https) 上使用。