我是Kubernetes的新手,并试图学习印花布网络。我正在关注此文档(https://docs.aws.amazon.com/eks/latest/userguide/calico.html),我尝试为后端到客户端之间的流量创建网络策略:
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
namespace: stars
name: backend-client
spec:
podSelector:
matchLabels:
role : client
ingress:
- from:
- namespaceSelector:
matchLabels:
role: backend
ports:
- protocol: TCP
port: 9000
我完成了文档中的所有10个步骤,并尝试通过创建一个策略来测试,该策略将使用上述策略将流量从后端发送到客户端。
当我应用策略时没有错误,但我没有看到两者之间的流量/连接。
请告诉我有什么问题。
单独创建NetworkPolicy无助于确保强制实施NetworkPolicy。我们应该配置像Calico这样的网络插件,它与Kubernetes集成并执行必要的操作以实现给定网络策略的意图
https://kubernetes.io/docs/concepts/services-networking/network-policies/说
“网络策略是由网络插件实现的,因此您必须使用支持NetworkPolicy的网络解决方案 - 只需在没有控制器的情况下创建资源来实现它将无效。”
我相信你需要将你的策略放在client
命名空间而不是stars
命名空间。我不相信星空命名空间中有任何带有role: client
的pod。您指定的pod选择器仅适用于策略所在的命名空间中的pod。
虽然我不认为它是直接的,但Kubernetes Network Policy docs确实提到了NetworkPolicy应用in the given namespace
。如果你还没有,我建议你检查一下。
我希望有所帮助。