【发布时间】:2020-06-05 07:22:27
【问题描述】:
我正在尝试配置 Istio VirtialService / DestinationRule,以便从标记为 datacenter=chi5 的 pod 对服务的 grpc 调用路由到标记为 datacenter=chi5 的 pod 上的 grpc 服务器。
我在运行 Kubernetes 1.15 的集群上安装了 Istio 1.4。
route 未在 istio-sidecar envoy 配置中为 chi5 子集创建,并且无论 pod 标签如何,流量都在每个服务端点之间循环路由。
Kiali 在DestinationRule 配置中报告错误:“在任何匹配的主机中都找不到此子集的标签”。
是我误解了这些 Istio 流量管理对象的功能还是我的配置有错误?
我相信我的 pod 的标签是正确的:
$ (dev) kubectl get pods -n istio-demo --show-labels
NAME READY STATUS RESTARTS AGE LABELS
ticketclient-586c69f77d-wkj5d 2/2 Running 0 158m app=ticketclient,datacenter=chi6,pod-template-hash=586c69f77d,run=client-service,security.istio.io/tlsMode=istio
ticketserver-7654cb5f88-bqnqb 2/2 Running 0 158m app=ticketserver,datacenter=chi5,pod-template-hash=7654cb5f88,run=ticket-service,security.istio.io/tlsMode=istio
ticketserver-7654cb5f88-pms25 2/2 Running 0 158m app=ticketserver,datacenter=chi6,pod-template-hash=7654cb5f88,run=ticket-service,security.istio.io/tlsMode=istio
我的 k8s 服务对象上的端口名称正确地以 grpc 协议为前缀:
$ (dev) kubectl describe service -n istio-demo ticket-service
Name: ticket-service
Namespace: istio-demo
Labels: app=ticketserver
Annotations: <none>
Selector: run=ticket-service
Type: ClusterIP
IP: 10.234.14.53
Port: grpc-ticket 10000/TCP
TargetPort: 6001/TCP
Endpoints: 10.37.128.37:6001,10.44.0.0:6001
Session Affinity: None
Events: <none>
我已将以下 Istio 对象部署到 Kubernetes:
Kind: VirtualService
Name: ticket-destinationrule
Namespace: istio-demo
Labels: app=ticketserver
Annotations: <none>
API Version: networking.istio.io/v1alpha3
Kind: DestinationRule
Spec:
Host: ticket-service.istio-demo.svc.cluster.local
Subsets:
Labels:
Datacenter: chi5
Name: chi5
Labels:
Datacenter: chi6
Name: chi6
Events: <none>
---
Name: ticket-virtualservice
Namespace: istio-demo
Labels: app=ticketserver
Annotations: <none>
API Version: networking.istio.io/v1alpha3
Kind: VirtualService
Spec:
Hosts:
ticket-service.istio-demo.svc.cluster.local
Http:
Match:
Name: ticket-chi5
Port: 10000
Source Labels:
Datacenter: chi5
Route:
Destination:
Host: ticket-service.istio-demo.svc.cluster.local
Subset: chi5
Events: <none>
【问题讨论】:
-
以上示例在部署到集群的 1.6.8 中正常工作。我不打算提交答案,因为我不明白为什么这不适用于 1.4,但是如果您遇到类似的问题,我建议尽可能升级 Istio 控制平面。
标签: istio