Kubernetes “如何修复”;503服务暂时不可用“;

Kubernetes “如何修复”;503服务暂时不可用“;,kubernetes,kubernetes-ingress,nginx-ingress,docker-desktop,Kubernetes,Kubernetes Ingress,Nginx Ingress,Docker Desktop,供参考: 我在docker桌面上为mac运行Kubernetes 基于Nginx图像的网站 我在Kubetesetes上运行2个简单的网站部署,并使用NodePort服务。然后我想使用入口进行网站路由。当我打开浏览器并访问该网站时,会出现错误503,如下图所示。那么,如何修复此错误 ### Service apiVersion: v1 kind: Service metadata: name: app-svc labels: app: app1 spec: type: Nod

供参考:

  • 我在docker桌面上为mac运行Kubernetes
  • 基于Nginx图像的网站
  • 我在Kubetesetes上运行2个简单的网站部署,并使用NodePort服务。然后我想使用入口进行网站路由。当我打开浏览器并访问该网站时,会出现错误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
    
    
    

    我建议您使用服务型ClusterIP 看看这篇有用的文章:

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

    入口通过ClusterIP和Kubernetes代理、NodePort或LoadBalancer向集群外部公开,并根据配置的规则路由传入流量

    服务定义示例:

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

    如果有帮助,请告诉我。

    是的,我最终也会犯同样的错误。一旦我将服务类型更改为“ClusterIP”,它对我来说运行良好。

    在搜索nginx解决方案后找到了此页面,尽管服务名称都已正确配置,但仍不断返回503个响应。我遇到的问题是,我在一个特定的名称空间中配置了kubernetes服务,但没有将入口组件更新为在同一名称空间中。尽管这是一个如此简单的解决方案,但一点也不明显

    首先,您需要将
    应用程序服务的服务类型更改为
    集群服务,因为
    入口
    对象将从集群内部访问这些
    吊舱
    (服务)。(当您希望允许访问集群内的pod时,使用ClusterIP服务)


    其次,通过运行
    kubectl get services
    确保服务正在运行,并对照
    ingres
    路由规则中
    backend
    部分的名称检查正在运行的服务名称,尝试使用类型
    ClusterIP
    设置您的服务,而不是
    NodePort
    ,并将servicePort设置为80@Jonas在将服务类型更改为ClusterIP后,我收到了错误404。在404上得到了什么http头?服务器头是否类似于openresty?您是否尝试通过以下方式访问nginx入口:/app1?我获得了ClusterIP的404更改后服务。是的,即使我也获得了503更改后服务。