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
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 .
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.