【发布时间】:2020-09-28 19:38:30
【问题描述】:
如果我们在一个命名空间中创建了一个 pod,例如 app-space,则 pod 名称:busybox 如果 pod 上没有任何标签,我们可以应用网络策略吗?
以黄色突出显示的命名空间选择器字段如何工作?
这是否意味着任何带有标签 project=myproject 的 pod 都只能在该命名空间中使用?
【问题讨论】:
标签: kubernetes
如果我们在一个命名空间中创建了一个 pod,例如 app-space,则 pod 名称:busybox 如果 pod 上没有任何标签,我们可以应用网络策略吗?
以黄色突出显示的命名空间选择器字段如何工作?
这是否意味着任何带有标签 project=myproject 的 pod 都只能在该命名空间中使用?
【问题讨论】:
标签: kubernetes
netpol 中有 2 个地方使用了标签选择器..
在上面的示例中,标签选择器是。角色=db
该选择器确定 netpol 将应用于哪个 pod。另外,请记住 netpol 是一个命名空间对象(您可以通过执行 kubectl api-resources 来检查它)。因此,由于 metadata.namespace 的值是默认值,因此该策略将适用于默认命名空间中具有 labe=db
的任何 pod2)。 spec.ingress[*].namespaceSelector.matchLabels 中的可选命名空间选择器
在您展示的示例中,这是 project=myproject。 (这可能在出口端,如 spec.egress[*].namespaceSelector.matchLabels)
此标签选择器表示允许来自谁的流量(对于入口示例)
因此,在上面的示例中,标签为 project=myproject 的命名空间是允许的
记住你也可以标记一个 ns。
例如:kubectl label ns project project=myproject
ns 项目的 yaml 将如下所示:
apiVersion: v1
kind: Namespace
metadata:
name: project
labels:
project: myproject
【讨论】: