虚拟服务无法正常工作

时间:2019-06-19 14:30:16

标签: kubernetes istio

我有一个集群,其中包含3个Pod和3个服务(第一,第二和第三)。

我的服务是:

aks-helloworld-first cluster ip:10.67.251.251
aks-helloworld-sec cluster ip:10.67.248.67                                       
aks-helloworld-third cluster ip: 10.67.240.154

豆荚是:

aks-helloworld-first selector:app=helloworld-first
aks-helloworld-sec  selector: app=helloworld-sec
aks-helloworld-third   selector: app=helloworld-third

我添加了以下虚拟服务:

kind: VirtualService
metadata:
  name: aks-helloworld-first-route
spec:
  hosts:
  - aks-helloworld-first
  http:
  - match:
    - sourceLabels:
        app: helloworld-third
    route:
    - destination:
        host: aks-helloworld-first

我希望只能通过“第三”访问“第一”。 但是,当尝试访问“第一”到“第二”时,我也能够做到。

我将kubectl exec运行到“第二个”窗格并运行:curl -v http://10.67.251.251 我可以访问“第一个”窗格

我想念什么?

1 个答案:

答案 0 :(得分:0)

虚拟服务是用于路由外部流量的一组规则。

似乎您想将一个吊舱与另一个吊舱隔离。为此,您可能需要设置NetworkPolicy

默认情况下,所有吊舱都是非隔离的;他们接受来自任何来源的流量。 这就是为什么

  

我将kubectl exec运行到“第二个”窗格并运行:curl -v   http://10.67.251.251我可以访问“第一个”窗格

通过使用选择它们的NetworkPolicy来隔离荚。

例如,完成

  

仅通过“第三”获得“第一”

您将需要此NetworkPolicy

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: helloworld-first
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: helloworld-third
    ports:
    - my-http
相关问题