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

时间:2019-05-21 16:57:27

标签: kubernetes kubernetes-ingress

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

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

3 个答案:

答案 0 :(得分:1)

来自:https://kubernetes.io/docs/concepts/services-networking/ingress/ 入口不会公开任意端口或协议。将HTTP和HTTPS以外的服务公开到Internet时,通常使用Service.Type = NodePort或Service.Type = LoadBalancer类型的服务。

可能可以在AWS之类的云提供商上自定义LoadBalancer来监听其他端口。

答案 1 :(得分:1)

我认为您正在使用NGINX Ingress Controller。在这种情况下,您可以尝试在安装过程中尝试下载Yaml并更改端口,而不必像this is one这样在官方Yaml中进行function patchStoreToAddCrashReporting(store) { const next = store.dispatch store.dispatch = function dispatchAndReportErrors(action) { try { return next(action) } catch (err) { console.error('Caught an exception!', err) Raven.captureException(err, { extra: { action, state: store.getState() } }) throw err } } } 。上面用于L4 AWS ELB的文件将变为:

kubectl apply

一种替代方法是使用功能更强大的入口控制器。 Here is a list个不同的控制器。 我个人的选择是Ambassador。如果您遵循入门页面,则只需更改所选端口的服务定义:

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

答案 2 :(得分:0)

Ingress支持一个ingress controller定义。入口控制器与普通的Kubernetes对象一起部署,因此将有一个Service与它的部署相关联,以暴露入口控制器。该服务的部署方式特定于每种入口控制器类型以及您使用的部署方法。

例如,generic cloud deployment of kubernetes/ingress-nginx将部署类型为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

要修改配置了负载均衡器的端口,请将spec.ports[*].port的值更改为所需的值。