【问题标题】:Kubernetes Ingress - is the Ingress definition required for TCP also or only for HTTP/HTTPS traffic?Kubernetes Ingress - TCP 是否也需要 Ingress 定义,或者仅用于 HTTP/HTTPS 流量?
【发布时间】:2021-06-04 10:44:44
【问题描述】:

我已经定义了在端口 9000 上运行的服务应用程序。它不是 web/http 服务器,它只是一个服务应用程序,在其他应用程序连接到的端口(容器外部)上作为 Windows 服务运行。 所以我在我的服务定义和我的配置映射定义中定义了端口 9000。我们使用 NGINX 作为从外部访问的代理,一切正常。

Nginx 服务:

  - name: 9000-tcp
    nodePort: 30758
    port: 9000
    protocol: TCP
    targetPort: 9000

配置图:

apiVersion: v1
data:
  "9000": default/frontarena-ads-aks-test:9000
kind: ConfigMap

服务定义:

apiVersion: v1
kind: Service
metadata:
  name: frontarena-ads-aks-test
spec:
  type: ClusterIP
  ports:
  - protocol: TCP
    port: 9000
  selector:
    app: frontarena-ads-aks-test

入口定义:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ads-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: frontarena-ads-aks-test
              servicePort: 9000

如前所述,一切正常。我知道 TCP 用于 L4 层,HTTP 用于 L7 应用层。 我需要仅通过其主机名和端口从另一个应用程序访问我的应用程序。没有任何 HTTP 网址。 所以基本上这是否意味着我实际上根本不需要我的入口控制器定义? 我根本不需要部署它? 只有当我需要通过某些 URL 进行 HTTP 访问时才需要它,例如:hostname:port/pathA or hostname:port/pathB

正确吗?对于常规的 TCP 连接,我们根本不需要我们的 Ingress YAML 定义?谢谢

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress azure-aks


    【解决方案1】:

    是的,在这种情况下您根本不需要入口。根据 kubernetes 官方文档,Ingress 是:

    管理对集群中服务的外部访问的 API 对象,通常是 HTTP。

    因此,如果您不需要通过 http 进行任何外部访问,则可以省略 ingress。

    参考:https://kubernetes.io/docs/concepts/services-networking/ingress/

    【讨论】:

      猜你喜欢
      • 2022-06-24
      • 2020-07-02
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多