web-dev-qa-db-fra.com

Échec de la sonde de disponibilité: la sonde HTTP a échoué avec le code d'état: 503 dans ISTIO

J'ai déployé le maillage de service istio dans mon cluster AKS. J'ai des services d'interface utilisateur et d'arrière-plan configurés dans istio pour la communication de service. je suis en mesure d'invoquer le service backend via istio, et aucun problème pour accéder à mes services backend.

Mais je suis confronté à un problème dans le pod test-ui, quand je vois le statut du 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

Dans le statut ci-dessus, mon pod d'interface utilisateur, l'un de mes conteneurs istio n'est pas en état prêt pour répondre à ma demande.

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

je vois que c'est un problème ouvert problème dans github .. y a-t-il une solution pour cela ...

ÉDITER

ma version istio

version.BuildInfo {Version: "1.1.5", GitRevision: "9b6d31b74d1c0cc9358cc82d395b53f71393326b", Utilisateur: "root", Hôte: "3e29fde4-6c3f-11e9-b00d-0a580a2c0205", Dock1: Go "Dock": Dock " .io/istio ", BuildStatus:" Clean ", GitTag:" 1.1.4-10-g9b6d31b "}

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

Vous devez activer la sonde de vivacité pour les pods:

Si vous avez déjà installé Istio, vous pouvez modifier la carte de configuration dans l'espace de noms istio-system

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

Si vous allez installer Istio, vous pouvez l'activer globalement en utilisant istioctl

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

Si vous souhaitez activer la sonde HTTP pour un déploiement ou un pod spécifique sans affecter globalement les autres ressources installées, annotez simplement le pod avec sidecar.istio.io/rewriteAppHTTPProbers: "true". dans le cas où vous souhaitez personnaliser la section de sonde, jetez un œil à l'exemple suivant:

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

Pour plus d'informations sur le contrôle de santé des services Istio, consultez leur documentation ici .

0
Muhammad Soliman

Vous pouvez injecter votre proxy sidecar et réécrire le point de terminaison de la sonde d'application à l'aide d'istioctl

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

Dans mon cas, j'ai testé sur OpenShift 3.11 avec ServiceMesh TP 0.10 et utilisé ovs-multi-tenant (plugin SDN) afin que les communications entre projets soient bloquées. J'ai eu le même problème et défini netid de l'espace de noms istio-system sur "0", puis le problème a été résolu. Vérifiez les communications réseau entre l'espace de noms de votre application et l'espace de noms qui a un injecteur istio-sidecar.

0
Insu Yun