我正在尝试添加一个印花布网络策略,以允许我的命名空间与 kube-system 命名空间通信。但是在我的 k8s 集群中,kube 系统没有附加标签,所以我无法在其中选择 pod。以下是我尝试的,但它不起作用。
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-kube-system
namespace: advanced-policy-demo
spec:
podSelector: {} # select all pods in current namespace.
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels: {}
podSelector:
matchLabels:
tier: control-plane
egress:
- to:
- namespaceSelector:
matchLabels: {}
podSelector:
matchLabels:
tier: control-plane
$ kubectl describe ns kube-system
Name: kube-system
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No resource limits.
我有一种方法可以仅通过名称选择命名空间?
是什么阻止您为此命名空间创建新标签?,如下所示:
kubectl label ns/kube-system calico=enabled
他们特别指出这是一个限制,@Nepomucen有正确的解决方法。
"按名称定位命名空间或服务(但是,您可以按标签定位 Pod 或命名空间,这通常是一种可行的解决方法(。
参考: https://kubernetes.io/docs/concepts/services-networking/network-policies/#what-you-can-t-do-with-network-policy-s-at-least-not-yet
Kubernetes 为命名空间引入了一个不可变的标签:kubernetes.io/metadata.name
,您可以在网络策略中使用它。
参考: https://kubernetes.io/docs/concepts/services-networking/network-policies/#targeting-a-namespace-by-its-name