我有一个集群,其中包含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 我可以访问“第一个”窗格
我想念什么?
答案 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