【问题标题】:Readiness probe failed: HTTP probe failed with statuscode: 503 in ISTIO就绪探测失败:HTTP 探测失败,状态码:ISTIO 中的 503
【发布时间】:2019-09-24 02:27:45
【问题描述】:

我已经在我的 AKS 集群中部署了 istio 服务网格。我在 istio 中配置了 ui 和后端服务以进行服务通信。我可以通过 istio 调用后端服务,并且访问我的后端服务没有问题。

但是当我看到 pod 状态时,我在 test-ui pod 中遇到了问题

NAME                                  READY   STATUS    RESTARTS   AGE
Test-api-deployment-59f6c6f67-ml4xm   2/2     Running   0          3d21h
Test-ui-deployment-b54fd89b-2ndsv     1/2     Running   0          52m

在上述状态下,我的 ui pod,我的一个 istio 容器未处于准备好状态来服务我的请求。当我查看容器状态时,我得到以下错误..

Warning  Unhealthy  2m24s (x299 over 12m)  kubelet, aks-wmsdevk8s-25812762-4  
Readiness probe failed: HTTP probe failed with statuscode: 503

我认为这是一个未解决的问题issue in github.. 有什么解决方法吗...

编辑

我的 istio 版本

version.BuildInfo{Version:"1.1.5", GitRevision:“9b6d31b74d1c0cc9358cc82d395b53f71393326b”,用户:“root”, 主机:“3e29fde4-6c3f-11e9-b00d-0a580a2c0205”,GolangVersion:“go1.10.4”, DockerHub:"docker.io/istio", BuildStatus:"Clean", GitTag:"1.1.4-10-g9b6d31b"}

istio proxy version -   Image:         docker.io/istio/proxyv2:1.1.2

【问题讨论】:

  • 你的 istio 版本是多少?
  • 构建版本为“1.1.5”

标签: azure kubernetes istio azure-aks


【解决方案1】:

它应该适用于 istio 1.1.5。我想你没有配置 istio 来重写 HTTPProbes。您需要使用 sidecarInjectorWebhook.rewriteAppHTTPProbe=true (source) 安装 Istio。

你可以检查你的istio-sidecar-injector configmap,它应该有rewriteAppHTTPProbe: true

ps。它适用于我的 istio 1.1.2,我相信

【讨论】:

  • 我检查了我的配置图。它是错误的 rewriteAppHTTPProbe: false。我需要更改为 true 吗?让它工作?
  • 是的,将其更改为 true 并删除 pod。它应该使用新的配置值重新创建 sidecar
  • 我已更改为 rewriteAppHTTPProbe: true,仍然出现相同的错误,我认为我需要将 global.proxy.readinessInitialDelaySeconds 增加到更高的值.. 如这篇文章中所述github.com/istio/istio/issues/12653
  • 你也可以试试,它对我来说没有那个价值
  • 以上更新会自动传播到我的 Pod 服务配置...还是我需要为每个 Pod 服务申请?...
【解决方案2】:

就我而言,我在 OpenShift 3.11 上使用 ServiceMesh TP 0.10 进行了测试,并使用了 ovs-multitenant(SDN 插件),因此项目间的通信被阻止了。我遇到了同样的问题,将 istio-system 命名空间的 netid 设置为“0”,问题就解决了。 检查应用程序的命名空间和具有 istio-sidecar-injector 的命名空间之间的网络通信。

【讨论】:

    【解决方案3】:

    您可以注入 Sidecar 代理并使用 istioctl 重写应用程序探测端点

    kb get <deployment/statefulset> -n <namespace> <resource_name> -o yaml | istioctl kube-inject --rewriteAppProbe -f - | kubectl apply -f -

    【讨论】:

      【解决方案4】:

      您需要为 pod 启用 liveness probe:

      如果你已经安装了Istio,你可以更改命名空间istio-system中的配置映射

      kubectl get cm istio-sidecar-injector -n istio-system -o yaml | \ 
      sed -e 's/rewriteAppHTTPProbe:false/rewriteAppHTTPProbe:true/' | \
      kubectl apply -f -
      

      如果你要安装Istio,你可以使用istioctl全局启用它

      istioctl manifest apply --set values.sidecarInjectorWebhook.rewriteAppHTTPProbe=true
      

      如果您想为特定部署或 pod 启用 HTTP 探测而不全局影响其他已安装的资源,请使用 sidecar.istio.io/rewriteAppHTTPProbers: "true" 简单地注释 pod。如果您想自定义探针部分,请查看以下示例:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: liveness-http
      spec:
        selector:
          matchLabels:
            app: liveness-http
            version: v1
        template:
          metadata:
            labels:
              app: liveness-http
              version: v1
            annotations:
              sidecar.istio.io/rewriteAppHTTPProbers: "true"
          spec:
            containers:
            - name: liveness-http
              image: docker.io/istio/health:example
              ports:
              - containerPort: 8001
              livenessProbe:
                httpGet:
                  path: /foo
                  port: 8001
                initialDelaySeconds: 5
                periodSeconds: 5
      

      有关 Istio 服务健康检查的更多信息,请查看他们的 documentation here

      【讨论】:

        【解决方案5】:

        我在使用 Istio 1.1.2 的 OKD 3.11 上也遇到了同样的问题。将 istio-system 命名空间的 netid 设置为“0”后,问题就解决了。

        检查网络ID:

        oc get netnamespaces
        

        将 netid 设置为“0”:

        oc adm pod-network make-projects-global istio-system
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-15
          • 1970-01-01
          • 2019-12-05
          • 1970-01-01
          • 2020-05-11
          • 2018-07-10
          • 1970-01-01
          • 2023-03-11
          相关资源
          最近更新 更多