k8s-配置网络策略 NetworkPolicy

在 Kubernetes (K8s) 中,NetworkPolicy 是一种用于控制 Pod 间网络流量以及 Pod 与外部网络之间的流量的资源对象。通过配置 NetworkPolicy,你可以在 Kubernetes 集群中实现基于网络的安全策略,类似防火墙规则。

1. NetworkPolicy 基础概念

  • Pod Selector:选择应用该网络策略的 Pod。
  • Ingress(入站规则):控制哪些 Pod 或 IP 地址可以向选中的 Pod 发送流量。
  • Egress(出站规则):控制哪些 Pod 或 IP 地址可以从选中的 Pod 接收流量。
  • Namespace Selector:选择网络策略影响的命名空间。
  • IP Block:定义允许或拒绝的 IP 范围。

2. NetworkPolicy 的作用

  • 限制哪些流量可以进入或离开某个 Pod。
  • 控制 Pod 间的网络通信,以及 Pod 与外部服务的通信。
  • 提供网络层的隔离,使得默认情况下 Pod 不允许相互通信,除非允许。

3. NetworkPolicy 示例

示例1:允许特定 Pod 的 Ingress 流量

这个示例定义了一个 NetworkPolicy,允许 app=web 的 Pod 接收来自标签为 app=db 的 Pod 的流量。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-db-to-webnamespace: default
spec:podSelector:matchLabels:app: webpolicyTypes:- Ingressingress:- from:- podSelector:matchLabels:app: db
解释:
  • podSelector:选择应用该策略的目标 Pod,这里是标签 app=web 的 Pod。
  • policyTypes:指定策略类型,这里是 Ingress(入站流量)。
  • ingress:定义允许哪些来源发送入站流量,这里允许来自 app=db 的 Pod 发送流量。
示例2:限制所有 Egress 流量,允许到特定 IP 的 Egress 流量

这个示例限制 app=backend 的 Pod 发出的所有流量,只允许到 10.0.0.0/24 这个子网的流量。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: restrict-egressnamespace: default
spec:podSelector:matchLabels:app: backendpolicyTypes:- Egressegress:- to:- ipBlock:cidr: 10.0.0.0/24
解释:
  • podSelector:选择 app=backend 的 Pod。
  • policyTypes:策略类型为 Egress(出站流量)。
  • egress:定义允许的出站流量,这里只允许到 10.0.0.0/24 网段的 IP。
示例3:允许从命名空间选择的 Pod 访问

这个示例允许 app=frontend 的 Pod 接收来自 namespace: dev 命名空间中 app=backend 的 Pod 的入站流量。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: allow-from-namespacenamespace: default
spec:podSelector:matchLabels:app: frontendpolicyTypes:- Ingressingress:- from:- namespaceSelector:matchLabels:name: devpodSelector:matchLabels:app: backend
解释:
  • namespaceSelector:选择 dev 命名空间。
  • podSelector:选择 app=backend 的 Pod。
  • ingress:定义允许的入站流量,来自 dev 命名空间中 app=backend 的 Pod。

4. 默认行为

在 Kubernetes 中,如果没有定义任何 NetworkPolicy,Pod 之间是可以自由通信的(基于网络插件)。一旦为某个 Pod 创建了 NetworkPolicy,默认情况下:

  • Ingress:会拒绝所有入站流量,除非被明确允许。
  • Egress:同理,出站流量会被拒绝,除非有明确规则。

5. 应用 NetworkPolicy 的网络插件

并非所有 Kubernetes 网络插件都支持 NetworkPolicy。以下是支持 NetworkPolicy 的常见插件:

  • Calico
  • Cilium
  • Weave Net
  • Kube-router
  • Romana

如果使用不支持 NetworkPolicy 的网络插件(如 Flannel),创建的 NetworkPolicy 将不起作用。

6. 常见 NetworkPolicy 操作命令

  1. 应用 NetworkPolicy
    使用 kubectl apply 命令应用 NetworkPolicy 文件:

    kubectl apply -f network-policy.yaml
    
  2. 查看已创建的 NetworkPolicy
    查看某命名空间下的所有 NetworkPolicy:

    kubectl get networkpolicy -n <namespace>
    
  3. 描述 NetworkPolicy
    详细查看某个 NetworkPolicy 的配置信息:

    kubectl describe networkpolicy <policy-name> -n <namespace>
    
  4. 删除 NetworkPolicy
    删除指定的 NetworkPolicy:

    kubectl delete networkpolicy <policy-name> -n <namespace>
    

总结:

  • NetworkPolicy 提供了一种方式来控制 Kubernetes 集群中 Pod 之间的网络流量,类似于防火墙规则。
  • 通过选择合适的 podSelectornamespaceSelectoringressegress 规则,可以实现精细的流量控制。
  • 需要网络插件的支持才能生效,并且默认行为是一旦有 NetworkPolicy,则会阻止未允许的流量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP unset() 函数的作用

PHP 中的 unset() 函数用于销毁指定的变量。具体来说&#xff0c;它会解除变量名与其数据之间的关联&#xff0c;从而释放该变量所占用的内存。不过需要注意的是&#xff0c;unset() 并不是删除变量的内容&#xff0c;而是取消对变量名的引用。如果变量是数组中的某个元素或者对…

go发送邮件:在Go语言中实现发邮件的教程?

go发送邮件的教程指南&#xff1f;怎么使用Go语言发送电子邮件&#xff1f; Go语言&#xff0c;作为一种简洁、高效且并发性强的编程语言&#xff0c;自然也提供了丰富的库来支持邮件发送功能。AokSend将详细介绍如何在Go语言中实现发送邮件的功能&#xff0c;帮助你快速掌握这…

关于Git Bash中如何定义alias

一、在一次临时Bash会话中使用alias 在Bash中直接输入alias xxdddd&#xff0c;xx为对应要执行的命令的缩写&#xff0c;dddd为要执行的命令&#xff0c;如alias ddcd /d&#xff0c;输入完成后&#xff0c;在Bash中输入dd&#xff0c;即可切换至D盘。 此种设置方式&#xff…

armv7-a 异常排查

dfsr: data fault status register 发生异常时&#xff0c;该寄存器能够表示引起异常的原因&#xff0c;如非对齐访问、mmu translation fault 等等读取 dfsr 到 r[x] 寄存器 &#xff1a;mrc p15,0,r[x],c5,c0,0 dfar: data fault address register 保存了引起 data abort 异常…

RabbitMQ 入门(六)SpringAMQP五种消息类型

一、发布订阅-DirectExchange&#xff08;路由模式&#xff09; 在Fanout模式中&#xff0c;一条消息&#xff0c;会被所有订阅的队列都消费。但是&#xff0c;在某些场景下&#xff0c;我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 Direct Exchan…

个性化图像生成新SOTA!阿里开源MIP-Adapter,可将无需微调的IP-Adapter推广到同时合并多个参考图像。

今天给大家介绍阿里最近开源的个性化图像生成的新方法MIP-Adapter&#xff0c;将无需微调的预训练模型&#xff08;IP-Adapter&#xff09;推广到同时合并多个参考图像。MIP-Adapter会根据每个参考图像与目标对象的相关性来给这些图像分配不同的“重要性分数”。这样&#xff0…

golang 报错:invalid character ‘‘ looking for beginning of object key string

这个错误通常表示我们的 Go 程序在解析 JSON 数据时&#xff0c;遇到了非法的字符&#xff0c;尤其是在需要找到 JSON 对象键时&#xff0c;遇到了 这样的非 ASCII 字符。这种情况可能是由于以下几个原因引起的&#xff1a; 可能原因&#xff1a; 编码问题&#xff1a;你的输…

Ngin入门套餐

快速了解Nginx 一、代理1.1 正向代理1.2 反向代理1.3 正向代理和反向代理的区别 二、Nginx负载均衡策略2.1 轮询&#xff08;Round Robin&#xff09;2.2 加权轮询&#xff08;Weighted Round Robin&#xff09;2.3 IP 哈希&#xff08;IP Hash&#xff09;2.4 最少连接&#x…

计算机视觉的奇妙世界

计算机视觉的奇妙世界 在你日常生活的某个时刻&#xff0c;或许你在手机上上传了一张照片&#xff0c;系统立刻识别出了你脸上的微笑&#xff1b;又或者当你用摄像头扫描某样物品&#xff0c;系统能迅速提供其来源和价格。但你有没有想过&#xff0c;这背后到底发生了什么&…

机器人大功率主轴SycoTec 4060 ER-S汽车电机机芯焊缝铣削打磨加工

在汽车制造的精密领域&#xff0c;每一个细节都关乎着整车的性能与品质&#xff0c;而汽车电机机芯的焊缝加工更是其中至关重要的一环。在机器人末端加装德国进口电主轴 SycoTec 4060 ER-S&#xff0c;为汽车电机机芯焊缝铣削打磨加工带来全新的解决方案。 SycoTec 4060 ER-S转…

【SEO】什么是SEO?

什么是SEO&#xff08;搜索引擎优化&#xff09;&#xff1f;为什么SEO对于⼀个⽹站⾄关重要&#xff1f; SEO 全称是搜索引擎优化&#xff08;Search Engine Optimization&#xff09; 因为我们目前开发的网址&#xff0c;需要人看到&#xff0c;除了通过宣传营销的方式展现…

电能表预付费系统-标准传输规范(STS)(4)

5.4 TokenCarrier 到 MeterApplicationProcess 的数据流 The flow of data from the TokenCarrier to the MeterApplicationProcess is shown in Figure 4.此数据流见图 4。 图 4 TokenCarrier 到 MeterApplicationProcess 的数据 The token entry process from the TokenCarr…

【OSCP Proving Grounds 靶场系列】Slort

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…

使用LSPatch+PlusNE修改手机软件

一、问题概述 国内使用一些软件&#xff0c;即使科学上网&#xff0c;打开都是网络错误&#xff0c;更换节点同样如此。 二、软件下载 通过官网或者正规商店(如Google play)下载并且安装。 是的&#xff0c;先要下载一个无法使用的版本&#xff0c;后续对其进行修改。 三、下…

uniapp小程序监听外接扫描枪

场景&#xff1a;uniapp打包的app在手持设备上使用&#xff0c;手持设备外接扫描枪&#xff0c;快速扫描 关键&#xff1a;扫描枪一般是触发 键盘事件keydown或keyup 无输入框式 import keymap from ./keymap export default {data() {return {inputString: ,inputCache: }}…

中标麒麟v5安装qt512.12开发软件

注意 需要联网操作 遇到问题1&#xff1a;yum提示没有可用软件包问题 终端执行如下命令 CentOS7将yum源更换为国内源保姆级教程 中标麒麟V7-yum源的更换&#xff08;阿里云源&#xff09; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Cento…

理解Token和Session:鉴权与会话管理的区别

理解Token和Session&#xff1a;鉴权与会话管理的区别 在Web应用和API设计中&#xff0c;鉴权与会话管理是两个核心概念&#xff0c;它们对于确保用户身份的安全性和维护用户会话状态至关重要。Token和Session是两种常用的鉴权与会话管理机制&#xff0c;它们各自具有独特的工…

k8s、prometheus、grafana数据采集和展示的链路流程

k8s集群中&#xff0c;容器级别的数据采集是由cAdvisor程序实现 cAdvisor # Container Advisor 容器顾问 cAdvisor程序是kubelet组件的一部分。 每个节点&#xff0c;包括master节点&#xff0c;都有一个kubelet系统服务&#xff0c; kukelet负责管理pod和容…

GitHub生成SSH密钥,

GitHub会通过SSH密钥来验证你的身份&#xff0c;确保你有权限克隆、推送或拉取代码。 对于公开仓库&#xff0c;你不需要额外的权限&#xff0c;只需确保SSH密钥已正确配置并可以通过GitHub验证。公开仓库允许任何人克隆&#xff0c;即使仓库属于他人&#xff0c;只要你通过SS…

软件测试学习笔记丨Linux三剑客-grep

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32506 一、简介 1.1 grep命令 grep是一个全局查找正则表达式&#xff0c;并且打印结果行的命令。grep的输入是一个文件或者一个标准输入&#xff08;stdin&#xff09;&#xff0c;或者是一…