web-dev-qa-db-fra.com

Istio Ingress se traduit par "pas de bonne santé en amont"

J'utilise le déploiement d'un service orienté vers l'extérieur, qui est exposé derrière un nodeport puis une entrée istio. Le déploiement utilise l'injection manuelle de side-car. Une fois le déploiement, nodeport et ingress en cours, je peux faire une demande à l'istio ingress.

Pour une raison inconnue, la demande ne passe pas par mon déploiement et affiche à la place le texte "pas sain en amont". Pourquoi est-ce et qu'est-ce qui en est la cause?

Je peux voir dans la réponse http que le code d'état est 503 (Service non disponible) et que le serveur est "envoyé". Le déploiement fonctionne car je peux lui mapper un port et tout fonctionne comme prévu.

10
Pegladon

Bien qu'il s'agisse d'une erreur quelque peu générale résultant d'un problème de routage dans une configuration Istio incorrecte, je fournirai une solution/un conseil général à toute personne rencontrant le même problème.

Dans mon cas, le problème était dû à une configuration incorrecte des règles de routage, les services natifs de Kubernetes fonctionnaient, mais les règles de routage Istio étaient incorrectement configurées, de sorte qu'Istio ne pouvait pas acheminer de l'entrée vers le service.

1
Pegladon

supprimez destinationrules.networking.istio.io et recréez virtualservice.networking.istio.io

[root@10-20-10-110 ~]# curl http://dprovider.example.com:31400/dw/provider/beat
no healthy upstream[root@10-20-10-110 ~]# 
[root@10-20-10-110 ~]# curl http://10.210.11.221:10100/dw/provider/beat
"该服务节点  10.210.11.221  心跳正常!"[root@10-20-10-110 ~]# 
[root@10-20-10-110 ~]# 
[root@10-20-10-110 ~]# cat /home/example_service_yaml/vs/dw-provider-service.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: dw-provider-service
  namespace: example
spec:
  hosts:
  - "dprovider.example.com"
  gateways:
  - example-gateway
  http:
  - route:
    - destination:
        Host: dw-provider-service 
        port:
          number: 10100
        subset: "v1-0-0"
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: dw-provider-service
  namespace: example
spec:
  Host: dw-provider-service
  subsets:
  - name: "v1-0-0"
    labels:
      version: 1.0.0

[root@10-20-10-110 ~]# vi /home/example_service_yaml/vs/dw-provider-service.yaml 
[root@10-20-10-110 ~]# kubectl -n example get vs -o wide | grep dw                       
dw-collection-service    [example-gateway]   [dw.collection.example.com]                       72d
dw-platform-service      [example-gateway]   [dplatform.example.com]                           81d
dw-provider-service      [example-gateway]   [dprovider.example.com]                           21m
dw-sync-service          [example-gateway]   [dw-sync-service dsync.example.com]               34d
[root@10-20-10-110 ~]# kubectl -n example delete vs dw-provider-service 
virtualservice.networking.istio.io "dw-provider-service" deleted
[root@10-20-10-110 ~]# kubectl -n example delete d dw-provider-service   
daemonsets.apps                       deniers.config.istio.io               deployments.extensions                dogstatsds.config.istio.io            
daemonsets.extensions                 deployments.apps                      destinationrules.networking.istio.io  
[root@10-20-10-110 ~]# kubectl -n example delete destinationrules.networking.istio.io dw-provider-service 
destinationrule.networking.istio.io "dw-provider-service" deleted
[root@10-20-10-110 ~]# kubectl apply -f /home/example_service_yaml/vs/dw-provider-service.yaml 
virtualservice.networking.istio.io/dw-provider-service created
[root@10-20-10-110 ~]# curl http://dprovider.example.com:31400/dw/provider/beat
"该服务节点  10.210.11.221  心跳正常!"[root@10-20-10-110 ~]# 
[root@10-20-10-110 ~]# 
1
仲夏叶

J'ai rencontré le problème lorsque mon pod était dans l'état ContainerCreating. Donc, cela a entraîné une erreur 503. Également comme @pegaldon, a expliqué que cela peut également se produire en raison d'une configuration d'itinéraire incorrecte ou qu'aucune passerelle n'est créée par l'utilisateur.

0
Malathi