如何阻止Kubernetes Pod与10.12.12.0/27节点网段通信?
正确的NetworkPolicy配置方案
原配置存在两个核心问题:
podSelector.matchLabels使用了namespace: default,但Kubernetes默认不会给Pod添加这个标签,无法匹配目标Pod;- 出站规则逻辑完全相反,原配置仅允许Pod访问
10.12.12.0/27网段,而非禁止。
以下是符合需求的配置:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: block-net-kubernetes namespace: default spec: # 匹配default命名空间下所有Pod podSelector: {} policyTypes: - Egress egress: # 允许访问除10.12.12.0/27之外的所有IP网段 - to: - ipBlock: cidr: 0.0.0.0/0 except: - 10.12.12.0/27 # 允许访问Kubernetes DNS服务,保证Pod域名解析正常 - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system podSelector: matchLabels: k8s-app: kube-dns ports: - protocol: UDP port: 53 - protocol: TCP port: 53
配置说明:
podSelector: {}:匹配当前命名空间(default)下的所有Pod,无需额外标签。ipBlock.cidr: 0.0.0.0/0:允许访问所有IP地址段,通过except字段排除需要禁止的10.12.12.0/27网段。- 新增DNS访问规则:Pod通常需要依赖Kubernetes DNS服务解析域名,因此必须允许访问kube-system命名空间下的DNS Pod(适配kube-dns或CoreDNS),否则会导致Pod无法解析外部或集群内域名。
内容的提问来源于stack exchange,提问作者Niclas
相关产品推荐
相关产品推荐

