kubernetes 网络策略命名空间选择器选择当命名空间没有标签时



我正在尝试添加一个印花布网络策略,以允许我的命名空间与 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

最新更新