NetworkPolicy访问控制

   NetworkPolicy是Kubernetes中一种用于控制Pod之间以及Pod与外部网络之间流量的资源对象。它可以帮助你在 IP 地址或端口层面(OSI 第 3 层或第 4 层)控制网络流量。NetworkPolicy 资源使用标签选择 Pod,并定义选定 Pod 所允许的通信规则。它可以控制 Pod 的入站(Ingress)和出站(Egress)流量。

   使用场景

微服务架构:在微服务架构中,不同的服务通常部署在不同的Pod中。使用NetworkPolicy可以控制服务之间的网络访问,提高安全性。

敏感数据保护:对于处理敏感数据的应用,可以使用NetworkPolicy限制对这些Pod的访问,减少数据泄露的风险,特别是一些需要暴露到外网的Pod。

东西向流量控制:在云原生和微服务场景下,内部网络的东西向通信流量剧增。NetworkPolicy可以帮助控制这些流量,确保只有授权的流量可以通过。

基于命名空间的隔离:通过NetworkPolicy,可以基于命名空间的标签来控制网络访问。只允许特定命名空间的Pod访问某些服务。


要在 Kubernetes 中创建一个 NetworkPolicy:

apiVersion: networking.k8s.io/v1  # API 版本
kind: NetworkPolicy  # 资源类型是 NetworkPolicy
metadata:
  name: example-network-policy  # NetworkPolicy 的名称
  namespace: default  # NetworkPolicy 所在的命名空间
spec:
  podSelector:
    matchLabels:
      role: db  # 选择具有标签 "role=db" 的 Pod
  policyTypes:
  - Ingress  # 定义入站规则
  - Egress  # 定义出站规则
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16  # 允许来自 172.17.0.0/16 网段的流量
        except:
        - 172.17.1.0/24  # 但排除 172.17.1.0/24 网段
    - namespaceSelector:
        matchLabels:
          project: myproject  # 允许来自具有标签 "project=myproject" 的命名空间的流量
    - podSelector:
        matchLabels:
          role: frontend  # 允许来自具有标签 "role=frontend" 的 Pod 的流量
    ports:
    - protocol: TCP  # 允许的协议是 TCP
      port: 6379  # 允许的端口是 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24  # 允许流向 10.0.0.0/24 网段
    ports:
    - protocol: TCP  # 允许的协议是 TCP
      port: 5978  # 允许的端口是 5978

应用配置文件: 使用 kubectl 命令将配置文件应用到 Kubernetes 集群中:

kubectl apply -f example-network-policy.yaml

验证 NetworkPolicy: 确认 NetworkPolicy 已正确创建并生效:

kubectl get networkpolicy -n default

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值