就绪探针失败:HTTP探针失败,状态代码为:ISTIO

时间:2019-05-06 12:37:35

标签: networking kubernetes istio azure-kubernetes

我已经在我的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 {版本:“ 1.1.5”,   GitRevision:“ 9b6d31b74d1c0cc9358cc82d395b53f71393326b”,用户:“ root”,   主机:“ 3e29fde4-6c3f-11e9-b00d-0a580a2c0205”,Golang版本:“ 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

5 个答案:

答案 0 :(得分:1)

它应与istio 1.1.5一起使用。我想您没有配置istio来重写HTTPProbes。您需要使用sidecarInjectorWebhook.rewriteAppHTTPProbe=truesource)安装Istio。

您可以检查自己的istio-sidecar-injector配置图,它应该有rewriteAppHTTPProbe: true

ps。我相信istio 1.1.2可以为我工作

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以注入sidecar代理并使用istioctl重写应用程序探测终结点

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

答案 3 :(得分:0)

您需要为Pod启用活动度探针:

如果已经安装了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

答案 4 :(得分:0)

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

检查netid:

oc get netnamespaces

将netid设置为“ 0”:

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