web-dev-qa-db-ja.com

Istio Ingressの結果、「正常なアップストリームがありません」

私は、ノードポートの背後に公開され、次にistioイングレスに公開される、外向きのサービスのデプロイを使用しています。展開は手動サイドカー注入を使用しています。デプロイ、ノードポート、イングレスが実行されたら、istioイングレスにリクエストを送信できます。

不明な理由により、リクエストは私の展開にルーティングされず、代わりに「正常な上流」というテキストが表示されます。これはなぜですか、何が原因ですか?

ステータスコードが503(Service Unavailable)であり、サーバーが "envoy"であることがhttp応答でわかります。ポートを前方にマップでき、すべてが期待どおりに機能するため、デプロイメントは機能しています。

10
Pegladon

これは、不適切なIstio設定内のルーティングの問題が原因のやや一般的なエラーですが、同じ問題に遭遇した人には一般的な解決策/アドバイスを提供します。

私の場合、問題は誤ったルートルール構成が原因でしたが、Kubernetesネイティブサービスは機能していましたが、Istioルーティングルールが正しく構成されていないため、Istioは入力からサービスにルーティングできませんでした。

1
Pegladon

destinationrules.networking.istio.ioを削除し、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
仲夏叶

ポッドがContainerCreating状態のときに問題に直面しました。そのため、503エラーが発生しました。また、@ pegaldonと同様に、ルート構成が正しくないか、ユーザーによって作成されたゲートウェイがないために発生することもあります。

0
Malathi