web-dev-qa-db-ja.com

準備プローブが失敗しました:HTTPプローブがステータスコード503で失敗しました(ISTIO内)

IstioサービスメッシュをAKSクラスターに展開しました。サービス通信用にistioで構成されたuiサービスとバックエンドサービスがあります。 istioを介してバックエンドサービスを呼び出すことができます。バックエンドサービスへのアクセスに問題はありません。

しかし、ポッドのステータスを表示すると、test-uiポッドで問題が発生します

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ポッド、istioコンテナーの1つがリクエストを処理する準備ができていません。コンテナーの状態を調べたところ、以下のエラーが発生しました。

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

私はそれが未解決の問題であると見ています githubの問題 ..これには回避策があります...

編集

私のistioバージョン

version.BuildInfo {Version: "1.1.5"、GitRevision: "9b6d31b74d1c0cc9358cc82d395b53f71393326b"、User: "root"、Host: "3e29fde4-6c3f-11e9-b00d-0a580a2c0205"、GolangVersion: "go1.10.4"、DockerHub .io/istio "、BuildStatus:" Clean "、GitTag:" 1.1.4-10-g9b6d31b "}

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

ポッドの活性プローブを有効にする必要があります。

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

インストールされている他のリソースにグローバルに影響を与えずに、特定のデプロイメントまたはポッドに対してHTTPプローブを有効にする場合は、sidecar.istio.io/rewriteAppHTTPProbers: "true"でポッドに簡単に注釈を付けます。プローブセクションをカスタマイズする場合は、次の例をご覧ください。

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サービスのヘルスチェックの詳細については、サービスの ドキュメントはこちら をご覧ください。

0

サイドカープロキシを挿入し、istioctlを使用してアプリプローブエンドポイントを書き換えることができます

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

私の場合、OpenShift 3.11でServiceMesh TP 0.10をテストし、ovs-multitenant(SDNプラグイン)を使用して、プロジェクト間の通信がブロックされました。同じ問題が発生し、istio-system名前空間のnetidを「0」に設定すると、問題が解決しました。アプリケーションの名前空間とistio-sidecar-injectorがある名前空間の間のネットワーク通信を確認します。

0
Insu Yun