Kubernetes入口设置

时间:2019-07-10 18:57:03

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

我试图设置一个Kubernetes Ingress来将外部http流量路由到前端Pod(带有路径/)和后端Pod(带有路径/ rest / *),但是我总是遇到400错误而不是主要的Nginx索引。 html。

因此,我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了Google Kubernetes示例,但始终出现400错误。有想法吗?

以下是前端“ cup-fe”的部署描述符(使用angular应用程序运行nginx):

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: cup-fe
  namespace: default
  labels:
    app: cup-fe
spec:
  replicas: 2
  selector:
    matchLabels:
      app: "cup-fe"
  template:
    metadata:
      labels:
        app: "cup-fe"
    spec:
      containers:
      - image: "eu.gcr.io/gpi-cup-242708/cup-fe:latest"
        name: "cup-fe"

接下来是服务NodePort:

apiVersion: v1
kind: Service
metadata:
  name: cup-fe
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    run: cup-fe
  type: NodePort

最后,但同样重要的是,Ingress将前端暴露在外部:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: http-ingress
spec:
  rules:
  - host: cup-fe
    http:
      paths:
      - path: /
        backend:
          serviceName: cup-fe
          servicePort: 80
      - path: /rest/*
        backend:
          serviceName: cup-be
          servicePort: 8080

我留下了“ cup-be”部署描述符(运行wildfly),因为它与“ cup-fe”非常相似。另请注意,如果我创建LoadBalancer服务而不是NodePort,则可以访问网页,但在调用后端时存在一些CORS问题。

1 个答案:

答案 0 :(得分:1)

我假设您在整个特定服务配置中使用了错误的selector run: cup-fe。由于我在app: cup-fe服务配置中用cup-fe替换了标签,因此出现了相关的Pod endpoints,并且我也收到了成功的回复。

$ kubectl get ep | grep cup-fe|awk '{print $2}'
<IP_address>:80,<IP_address>:80

如果问题仍然存在,请告诉我,并在我的答案下方添加评论。