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

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" 的 PodpolicyTypes:- 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  # 允许的协议是 TCPport: 6379  # 允许的端口是 6379egress:- to:- ipBlock:cidr: 10.0.0.0/24  # 允许流向 10.0.0.0/24 网段ports:- protocol: TCP  # 允许的协议是 TCPport: 5978  # 允许的端口是 5978

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

kubectl apply -f example-network-policy.yaml

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

kubectl get networkpolicy -n default

相关文章:

  • 分布式数据库——HBase基本操作
  • 认识 Linux操作系统
  • Linux【基础指令汇总】
  • 地区环境保护支出数据(2007-2023年)
  • WindowsTerminal中oh-my-posh样式的cmd、git-bash、cmder配置参数
  • SpringCloud-EurekaClient
  • Linux云计算 |【第四阶段】RDBMS1-DAY2
  • Python 在区块链智能合约开发中的应用与实践
  • 数字化转型中的信息技术:驱动力与挑战
  • 芝法酱学习笔记(0.5)——使用jenkins做自动打包
  • 【 Java 】工具类 —— Collections 与 Arrays 的实用操作全解析
  • Llama3:全模型GQA与tiktoken分词的新突破
  • BFS之最短路径模型
  • 解决银河麒麟V10中/data目录执行权限问题
  • JDK1.8安装配置教程(图文结合,最简洁易懂)
  • [LeetCode] Wiggle Sort
  • 【前端学习】-粗谈选择器
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Docker 笔记(2):Dockerfile
  • ECMAScript入门(七)--Module语法
  • MaxCompute访问TableStore(OTS) 数据
  • spring + angular 实现导出excel
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 浅谈Golang中select的用法
  • 如何用vue打造一个移动端音乐播放器
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 赢得Docker挑战最佳实践
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ![CDATA[ ]] 是什么东东
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (js)循环条件满足时终止循环
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • **python多态
  • .NET Core跨平台微服务学习资源
  • .NET大文件上传知识整理
  • @ModelAttribute注解使用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [000-002-01].数据库调优相关学习
  • [240903] Qwen2-VL: 更清晰地看世界 | Elasticsearch 再次拥抱开源!
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [C++基础]-入门知识
  • [CISCN2019 华东南赛区]Web111