如何在没有负载均衡器的情况下设置kubernetes nginx入口?

时间:2019-02-14 06:52:08

标签: kubernetes kubernetes-ingress nginx-ingress

我正在尝试为不带LB的2个服务创建一个nginx入口。首先,我创建nginx_ingress.yaml

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
spec:
  selector:
    app: ingress-nginx
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: http
    - name: https
      port: 443
      targetPort: https
---

然后是echo_ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-ingress
spec:
  rules:
  - host: subdomain1.example.com
    http:
      paths:
      - backend:
          serviceName: echo1
          servicePort: 80
  - host: subdomain2.example.com
    http:
      paths:
      - backend:
          serviceName: echo2
          servicePort: 80

但是,当创建入口时,它没有显示地址,并且似乎运行不正常,我无法从curl上的端口80获得任何信息:

NAME           HOSTS                                  ADDRESS   PORTS   AGE
echo-ingress   git.satelkom.co.id,op.satelkom.co.id             80      8m9s

这是怎么了?

1 个答案:

答案 0 :(得分:1)

如果您尝试定义路径?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-ingress
spec:
  rules:
  - host: subdomain1.example.com
    http:
      paths:
      - backend:
          serviceName: echo1
          servicePort: 80
        path: /   # <--- Add this tag
  - host: subdomain2.example.com
    http:
      paths:
      - backend:
          serviceName: echo2
          servicePort: 80
        path: /   # <--- Add this tag

或在入口服务上定义外部IP

kind: Service
apiVersion: v1
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app: ingress-nginx
spec:
  externalIPs:    # <-- Try to add this 2 lines
    - <YOUR IP LAN or WAN>
  selector:
    app: ingress-nginx
  type: NodePort
  ports:
    - name: http
      port: 80
      targetPort: http # <-- Replace by port number: 80
    - name: https
      port: 443
      targetPort: https # <-- Replace by port number: 443