当前位置: 首页 > article >正文

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


http://www.kler.cn/a/324303.html

相关文章:

  • ES6标准-Promise对象
  • 人工智能训练师 综合测试题库一
  • 外网访问 WebDav 服务
  • WP网站如何增加文章/页面的自定义模板
  • Python_爬虫3_Requests库网络爬虫实战(5个实例)
  • mybatis-plus: mapper-locations: “classpath*:/mapper/**/*.xml“配置!!!解释
  • Windows 开发工具使用技巧
  • PAT甲级1003Emergency
  • 【分布式微服务云原生】10分钟揭秘Dubbo负载均衡:如何让服务调用更智能?
  • 发明专利实用新型专利外观设计专利
  • List几种遍历方法速度
  • 【GUI设计】基于图像分割的GUI系统(3),matlab实现
  • leetcode91. 解码方法,动态规划
  • uniapp设置从右上角到左下角的三种渐变颜色
  • 滚雪球学MySQL[2.1讲]:基础SQL操作
  • 如何使用 Go 获取你的 IP 地址
  • MMD模型及动作一键完美导入UE5-IVP5U插件方案(二)
  • Vue3中的30个高频重点面试题
  • 金镐开源组织成立,增加最新KIT技术,望能为开源添一把火
  • 加法器以及标志位
  • Qt学习笔记
  • HTTP请求过程 part-1
  • 高通Android 12 音量API设置相关代码
  • (undone) MIT6.824 Lecture1 笔记
  • OpenGL ES 绘制一个三角形(2)
  • zookeeper 服务搭建(集群)