私は、ノードポートの背後に公開され、次にistioイングレスに公開される、外向きのサービスのデプロイを使用しています。展開は手動サイドカー注入を使用しています。デプロイ、ノードポート、イングレスが実行されたら、istioイングレスにリクエストを送信できます。
不明な理由により、リクエストは私の展開にルーティングされず、代わりに「正常な上流」というテキストが表示されます。これはなぜですか、何が原因ですか?
ステータスコードが503(Service Unavailable)であり、サーバーが "envoy"であることがhttp応答でわかります。ポートを前方にマップでき、すべてが期待どおりに機能するため、デプロイメントは機能しています。
これは、不適切なIstio設定内のルーティングの問題が原因のやや一般的なエラーですが、同じ問題に遭遇した人には一般的な解決策/アドバイスを提供します。
私の場合、問題は誤ったルートルール構成が原因でしたが、Kubernetesネイティブサービスは機能していましたが、Istioルーティングルールが正しく構成されていないため、Istioは入力からサービスにルーティングできませんでした。
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 ~]#
ポッドがContainerCreating
状態のときに問題に直面しました。そのため、503エラーが発生しました。また、@ pegaldonと同様に、ルート構成が正しくないか、ユーザーによって作成されたゲートウェイがないために発生することもあります。