当前位置: 首页 > 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/news/324303.html

相关文章:

  • 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 服务搭建(集群)
  • 解决SpringBoot 3.3.x集成Micrometer和Prometheus,导致项目阻塞,无法启动
  • 演示:基于WPF的DrawingVisual开发的频谱图和律动图
  • Meta首款多模态Llama 3.2开源:支持图像推理,还有可在手机上运行的版本 | LeetTalk Daily...
  • Python连接Kafka收发数据等操作
  • [leetcode]53_最大子数组(序列)和
  • 2024年空间计算/XR的现状:双子座阶段的探索与展望
  • 关于电商API接口接入及其相关应用分析【主流电商API接口】
  • 音视频处理工具FFmpeg与Java结合的简单使用
  • 【计算机网络 - 基础问题】每日 3 题(二十七)
  • Stable Diffusion绘画 | Checkpoint Merger 模型融合