【问题标题】:Ingress and Ingress controller how to use them with NodePort Services?Ingress 和 Ingress 控制器如何将它们与 NodePort 服务一起使用?
【发布时间】:2019-02-20 02:04:28
【问题描述】:

我有一个在 NodePort 服务上运行的服务。如何使用 ingress 访问多个服务。

deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
        tier: backend
        track: dev
    spec:
      containers:
        - name: auth
          image: [url]/auth_app:v2
          ports:
            - name: auth
              containerPort: 3000

service.yml

apiVersion: v1
kind: Service
metadata:
  name: auth
spec:
  selector:
    app: auth
    tier: backend
  ports:
    - protocol: TCP
      port: 3000
      targetPort: auth
  type: NodePort

ingress.yml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: auth
    servicePort: 8080

我从这个repo一步一步地跟着。我无法让它适用于我的端口配置。 我是初学者,想要一些相同的资源。

【问题讨论】:

    标签: django kubernetes kubernetes-ingress google-kubernetes-engine nginx-ingress


    【解决方案1】:

    试试这些manifest,记得部署一个Ingress Controller(我一般用traefik,here一些说明设置)

    service.yml:我把NodePort改成ClusterIP(默认的,可以去掉这行)

    apiVersion: v1
    kind: Service
    metadata:
      name: auth
    spec:
      selector:
        app: auth
        tier: backend
      ports:
        - protocol: TCP
          port: 3000
          targetPort: auth
      type: ClusterIP
    

    ingress.yml:(我设置端口为3000,你的服务端口)

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: test-ingress
    spec:
      backend:
        serviceName: auth
        servicePort: 3000
    

    【讨论】:

      【解决方案2】:

      您的服务在端口 3000 中运行,但您的 Ingress 路由规则与端口 8080 匹配。如果您在 Ingress 资源定义的后端部分将 servicePort 更改为 3000,它可能会起作用。

      我建议在尝试 Ingress 之前先确保它与 NodePort 一起工作。我建议这样做是因为我注意到您的服务仅指定了端口和目标端口的值,但没有指定节点端口的值。如果您不指定 nodeport 值,您将获得一个随机端口号。由于您想将 ingress 与 NodePort 服务类型一起使用,因此随机端口号应该无关紧要。

      对于 NodePort 教程,您可以从 https://medium.com/@markgituma/kubernetes-local-to-production-with-django-2-docker-and-minikube-ba843d858817 开始,因为我注意到您已使用 django 标记您的帖子

      对于 nginx 入口,您可以看到 https://cloud.google.com/community/tutorials/nginx-ingress-gke,但如果您不使用 gke,您可能希望找到特定于您的云平台的内容

      最好从一项服务开始,但要了解这如何适用于多项服务,您可以查看文档https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout 中的扇出入口示例

      【讨论】:

        猜你喜欢
        • 2020-01-23
        • 2019-12-18
        • 2016-09-14
        • 2019-07-19
        • 2020-12-03
        • 2018-06-03
        • 1970-01-01
        • 2018-08-31
        • 2021-08-04
        相关资源
        最近更新 更多