当前位置: 首页 > 知识库问答 >
问题:

GCP-Kubernetes入口后端服务不正常

都昊乾
2023-03-14

我在pod上部署了SAS Viya编程。这使SASStudio在端口80上运行。我正在尝试通过下面的yaml文件使用nodeport和Inete公开SAS Studio。但在GCP控制台中,后端服务显示不健康,如果我尝试访问Ip,它会遇到默认后端或找不到页面。我可以使用集群IP和节点IP以及端口号访问服务。

如果我使用LoadBalancer服务而不是入口,那么我可以使用LoadBalancer Ip访问该服务。

使用入口时,后端服务显示为不正常。

我在node Ip和nodeport Ip中使用了curl命令。下面是结果。

   [root@k8jumphost doc]# curl -ILS "10.142.0.19:30100"
    HTTP/1.1 302 Found
    Date: Fri, 01 Feb 2019 07:53:31 GMT
    Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
    Location: http://10.142.0.19:30100/SASStudio
    Content-Type: text/html; charset=iso-8859-1

    HTTP/1.1 302
    Date: Fri, 01 Feb 2019 07:53:32 GMT
    Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
    Location: /SASStudio/
    Transfer-Encoding: chunked

    HTTP/1.1 200
    Date: Fri, 01 Feb 2019 07:53:34 GMT
    Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:;
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Content-Type: text/html;charset=UTF-8
    Content-Language: en-US
    Content-Length: 7836

    [root@k8jumphost doc]# cat sas-analytics-ingress.yaml
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: sas-programming-ingress
      labels:
        app: sas-programming
    spec:
      rules:
      - host: sas-programming
        http:
          paths:
          - path: /
            backend:
              serviceName: sas-programming-svc-nodeport
              servicePort: 80


        [root@k8jumphost doc]# cat sas-analytics-nodeport.yaml
    ---

    apiVersion: v1
    kind: Service
    metadata:
      name: sas-programming-svc-nodeport
      labels:
        app: sas-programming
    spec:
      selector:
        app: sas-programming
      ports:
      - name: http
        nodePort: 30100
        port: 80
        targetPort: 80
      - name: cas
        nodePort: 30200
        port: 5570
        targetPort: 5570
      type: NodePort

[root@k8jumphost doc]# cat sas-analytics.yaml
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: sas-programming-deployment
  labels:
    app: sas-programming
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: sas-programming
    spec:
      securityContext:
        fsGroup: 1001
      hostname: sas-programming
      containers:
      - name: sas-programming
        image: <location of the image>
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5570
        - containerPort: 80
        env:
        - name: CASENV_CAS_VIRTUAL_HOST
          value: "sas-programming"
        - name: CASENV_CAS_VIRTUAL_PORT
          value: "30300"

我怀疑/上的重定向导致了此错误。任何人都可以帮助我,什么应该添加到部署文件来克服这个错误。

共有1个答案

邹浩
2023-03-14

我认为您在GCP中的后端不健康这一事实表明您的容器上可能没有健康endpoint。查看https://kubernetes.io/docs/concepts/services-networking/ingress/#loadbalancing.您需要readinessProbelivenessProbe在您的部署yaml中。

 类似资料:
  • 具有TLS配置的典型入口如下所示: 发现GLBC正在讨论为GCE入口启用HTTPS后端。文件摘录: 后端HTTPS 对于负载均衡器和Kubernetes服务之间的加密通信,您需要将服务的端口装饰为预期的HTTPS。有一个alpha服务注释用于指定每个服务端口的预期协议。当将协议视为HTTPS时,入口控制器将使用带有HTTPS健康检查的HTTPS后端服务组装GCP L7负载均衡器。“ 不清楚负载均衡

  • https://kubernetes.io/docs/concepts/services-networking/Ingress/中的入口示例显示,为了指定bancked入口,我们必须指定servicePort和serviceName,例如: 我希望创建具有随机端口的服务,并避免在入口定义中指定它们。有没有ServicePort的替代方案?也许使用服务中分配的端口名称或targetPort?

  • 问题内容: 我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer 在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。 我的应用程序重定向到/(返回302),但在pod定义中添加了一个: 我的入口看起来像: 服务配置为: 后端健康状况如下: 入口的规

  • 我遵循了负载均衡器教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer当我使用Nginx映像时工作正常,当我尝试使用我自己的应用程序映像时,尽管后端切换到不健康。 我的应用程序重定向到/(返回302),但我在pod定义中添加了一个livenessProbe: 我的入口看起来像: 服务配置为: 入口中的后端

  • 只有。这些服务到底有什么不同?端口到底做什么?

  • 我正在尝试使用入口公开部署,其中DeamonSet具有hostNetwork=true,这将允许我跳过额外的负载平衡器层,并直接在Kubernetes外部节点IP上公开我的服务。很遗憾,我无法从外部网络访问入口控制器。 我在GCP上运行库伯内特斯版本1.11.16-gke.2。 我将刷新群集设置为: 我运行部署: 然后我创建服务: 和入口资源: 我获取节点外部IP: 检查入口是否正在运行: 然后尝