如何解决“503服务暂时不可用”

Rex*_*ing 5 kubernetes kubernetes-ingress nginx-ingress docker-desktop

供参考:

  1. 我在 Mac 版 docker 桌面上运行 Kubernetes
  2. 基于Nginx镜像的网站

我在 Kubetesetes 上运行 2 个简单的网站部署并使用 NodePort 服务。然后我想使用 ingress 路由到网站。当我打开浏览器并访问该网站时,出现错误 503,如下图所示。那么,我该如何修复这个错误呢?

### Service
apiVersion: v1
kind: Service
metadata:
  name: app-svc
  labels:
    app: app1
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: app1
---
apiVersion: v1
kind: Service
metadata:
  name: app2-svc
  labels:
    app: app2
spec:
  type: NodePort
  ports:
  - port: 80
  selector:
    app: app2

### Ingress-Rules
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /app1
        backend:
          serviceName: app-svc
          servicePort: 30092
      - path: /app2
        backend:
          serviceName: app2-svc
          servicePort: 30936


Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mal*_*ata 0

我建议您使用服务类型 ClusterIP\n看看这篇有用的文章:services-kubernetes

\n\n

如果您使用 Ingress,您必须知道 Ingress 不是一种服务,而是一个充当反向代理和集群单个入口点的对象,将请求路由到不同的服务。最基本的 Ingress 是 NGINX Ingress Controller,NGINX 承担反向代理的角色,同时也充当 SSL。在下图中,您可以看到环境对象的特定组件之间的工作流程。

\n\n

Ingress 通过 ClusterIP 和 Kubernetes 代理、NodePort 或 LoadBalancer 暴露在集群外部,并根据配置的规则路由传入流量。

\n\n

服务定义示例:

\n\n
---\napiVersion: v1\nkind: Service\nmetadata:\n  name: app-svc\n  labels:\n    app: app1\nspec:\n  type: ClusterIP\n  ports:\n  - port: 80\n  selector:\n    app: app1\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: app2-svc\n  labels:\n    app: app2\nspec:\n  type: ClusterIP\n  ports:\n  - port: 80\n  selector:\n    app: app2\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果有帮助请告诉我。

\n

  • 将服务更改为 ClusterIP 后,我收到 404。 (2认同)
  • 是的,即使我换了之后也得到了503。 (2认同)