kubernetes networkpolicy namespaceSelector在名称空间没有标签时选择

时间:2019-06-12 13:28:50

标签: kubernetes project-calico calico kubernetes-networkpolicy

我正在尝试添加一个calico网络策略,以允许我的命名空间与kube-system命名空间进行通信。但是在我的k8s集群kube系统中没有附加标签,因此我无法在其中选择容器。下面是我尝试过的方法,但是没有用。

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.

我有一种方法可以仅通过名称选择名称空间吗?

2 个答案:

答案 0 :(得分:0)

是什么阻止您为此名称空间创建新标签?,例如:

kubectl label ns/kube-system calico=enabled

答案 1 :(得分:0)

他们特别指出这是一个限制,@ Nepomucen在解决方案方面具有正确的解决方法。

“按名称定位名称空间或服务(但是,可以按其标签定位pod或名称空间,这通常是可行的解决方法)。”

参考:https://kubernetes.io/docs/concepts/services-networking/network-policies/#what-you-can-t-do-with-network-policy-s-at-least-not-yet