掌握Kubernetes Network Policy,构建安全的容器网络

news2025/5/10 7:09:11

在 Kubernetes 集群中,默认情况下,所有 Pod 之间都是可以相互通信的,这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制,Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则,来控制 Pod 之间的网络流量,从而实现网络隔离和安全加固。

本文将通过丰富的示例,详细讲解 Network Policy 的概念、语法、使用场景以及配置实践,帮助大家快速掌握 Network Policy,构建安全的容器网络。
在这里插入图片描述

Network Policy 的核心概念

Network Policy 是一种基于 Pod 标签(Label)的网络访问控制策略。它通过定义一系列规则,来允许或拒绝 Pod 之间的网络流量。Network Policy 的核心概念包括:

  • Policy 对象:Network Policy 是 Kubernetes 中的一种资源对象,我们可以通过 YAML 文件来定义和管理。
  • Pod 选择器(Pod Selector):Network Policy 通过 Pod 选择器来指定哪些 Pod 需要应用该策略。
  • Ingress 规则:定义允许进入被选定 Pod 的流量规则。
  • Egress 规则:定义允许从被选定 Pod 发出的流量规则。
  • 规则类型
    • IPBlock:基于 IP 地址段进行流量控制。
    • PodSelector:基于 Pod 标签进行流量控制。
    • NamespaceSelector:基于 Namespace 标签进行流量控制。

Network Policy 示例详解

下面通过几个示例来详细讲解 Network Policy 的用法。

示例 1:拒绝所有流量
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress

这个 Network Policy 选择了 default 命名空间下的所有 Pod(podSelector: {}),并定义了空的 IngressEgress 规则。这意味着拒绝所有进入和离开这些 Pod 的流量。

示例 2:允许同一 Namespace 下的 Pod 之间互访
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-same-namespace
  namespace: default
spec:
  podSelector: {}
  ingress:
  - from:
    - podSelector: {}

这个 Network Policy 选择了 default 命名空间下的所有 Pod,并定义了一个 Ingress 规则,允许来自同一命名空间下所有 Pod(podSelector: {})的流量。

示例 3:允许特定标签的 Pod 访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-from-frontend
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

这个 Network Policy 选择了 default 命名空间下标签为 app: backend 的 Pod,并定义了一个 Ingress 规则,允许来自同一命名空间下标签为 app: frontend 的 Pod 的流量。

示例 4:允许来自特定 Namespace 的 Pod 访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-from-monitoring
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: monitoring

这个 Network Policy 选择了 default 命名空间下标签为 app: backend 的 Pod,并定义了一个 Ingress 规则,允许来自标签为 name: monitoring 的 Namespace 下的所有 Pod 的流量。

示例 5:允许特定 IP 段的访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-external-access
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - ipBlock:
        cidr: 192.168.1.0/24
        except:
        - 192.168.1.10/32

这个 Network Policy 选择了 default 命名空间下标签为 app: backend 的 Pod,并定义了一个 Ingress 规则,允许来自 IP 地址段 192.168.1.0/24 但排除 192.168.1.10/32 的流量。

示例 6:允许特定端口的访问
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-specific-port
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 80

这个 Network Policy 选择了 default 命名空间下标签为 app: backend 的 Pod,并定义了一个 Ingress 规则,允许来自同一命名空间下标签为 app: frontend 的 Pod 的流量,但仅限于 TCP 协议的 80 端口。

Network Policy 的注意事项

  • Network Policy 仅适用于支持它的网络插件:如 Calico、Cilium 等。
  • Network Policy 是累加的:如果多个 Network Policy 选择了同一个 Pod,那么这些策略的规则会合并生效。
  • Network Policy 的默认行为:如果没有 Network Policy 选择某个 Pod,那么该 Pod 的所有流量都是允许的。
  • Network Policy 的调试:可以使用 kubectl describe networkpolicy <policy-name> 命令查看 Network Policy 的详细信息,以及使用网络插件提供的工具进行调试。

总结

Network Policy 是 Kubernetes 中实现网络隔离和访问控制的重要工具。通过灵活运用 Network Policy,我们可以构建出满足各种安全需求的容器网络,保障应用的安全性。

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

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

相关文章

结合rpart包的决策树介绍

决策树与CART算法 决策树是一种基于树状结构的监督学习算法。它通过从根节点开始递归地对特征进行划分&#xff0c;构建出一棵树来进行决策。决策树的构建过程需要解决的重要问题有三个&#xff1a;如何选择自变量、如何选择分割点、确定停止划分的条件。解决这些问题是希望随…

VScode代码格式化插件black失效问题

之前有如下提示&#xff1a; 没太当回事&#xff0c;发现还能用。之后突然就用不了了&#xff0c;跟着官方插件的文档来查看log&#xff1a; 查看发现提示&#xff1a; Message: TypeError: type object is not subscriptable 在github界面找到解决方案&#xff1a;安装Versio…

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题&#xff08;已解决&#xff09; 前言问题现象问题分析解决方案总结 前言 这里使用的是Rockchip提供的rknn_model_zoo&#xff0c;https://github.com/airockchip/rknn_model_zoo/tree/main 此解决方案适用于Rockchip芯片在U…

AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

云边有个稻草人-CSDN博客 目录 引言 一、什么是DeepSeek&#xff1f; 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型…

基于SpringBoot实现旅游酒店平台功能一

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高&#xff0c;旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求&#xff0c;旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…

轻松上手 —— 通过 RPM 包快速部署 NebulaGraph

前言 在当今大数据时代&#xff0c;处理复杂关系数据的需求与日俱增&#xff0c;图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库&#xff0c;专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言&#xff0c;还拥有强大高效…

MetaGPT发布的MGX与Devin深度对比

家人们&#xff0c;搞编程的都知道&#xff0c;工具选对了&#xff0c;效率能翻倍&#xff01;今天必须给大伙唠唠MetaGPT发布的MGX编程助手和Devin编程助手 。 先看MGX&#xff0c;简直是编程界的王炸&#xff01;它就像一个超神的虚拟开发团队&#xff0c;一堆智能助手分工明…

03.06 QT

一、使用QSlider设计一个进度条&#xff0c;并让其通过线程自己动起来 程序代码&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…

SpringUI:打造高质量Web交互设计的首选元件库

SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库&#xff0c;确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议&#xff1a; SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件&#xff0c;旨在帮助设…

鸿蒙Android4个脚有脚线

效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…

夏门大学DeepSeek 手册:从社会大众到高校及企业的全面应用实践研究(附 PDF 下载)

这 3 份手册分别从 DeepSeek 大模型概念、技术与应用实践、DeepSeek 大模型赋能高校教学和科研、DeepSeek 大模型及其企业应用实践-企业人员的大模型宝典几个角度进行全面分析&#xff0c;可以结合着清华、北大系列相互对照着学习。 清华北大推出的 DeepSeek 教程&#xff08;…

策略模式详解:实现灵活多样的支付方式

多支付方式的实现&#xff1a;策略模式详解 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互换使用。策略模式使得算法可以独立于使用它的客户端变化。本文将通…

【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻

文章目录 Java 运算符&#xff1a;在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符&#xff1a;加减乘除&#xff08; - * / %&#xff09;2.2 除法与取余2.3 增量运算符&#xff08; --&#xff09;2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…

【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析

DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…

双足机器狗开发:Rider - Pi

双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…

以商业思维框架为帆,驭创业浪潮前行

创业者踏入商海&#xff0c;如同航海家奔赴未知海域&#xff0c;需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架&#xff0c;正是创业者破解商业谜题的密钥&#xff0c;从需求洞察到落地执行&#xff0c;为创业之路铺就逻辑基石。 …

ApoorvCTF Rust语言逆向实战

上周参加了国外的比赛&#xff0c;名称叫&#xff1a;ApoorvCTF 看一下老外的比赛跟我们有什么不同&#xff0c;然后我根据国内比赛对比发现&#xff0c;他们考点还是很有意思的&#xff0c;反正都是逆向&#xff0c;哈哈哈 ‍ Rusty Vault 题目描述&#xff1a; In the h…

Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理

Ubuntu20.04本地配置IsaacLab4 4.2.0的G1训练环境&#xff08;二&#xff09;&#xff1a;训练与推理 训练推理 写在前面&#xff0c;本文档的实现需要IsaacLab的成功安装&#xff0c;可参考&#xff08;一&#xff09;。 训练 在IsaacLab目录下&#xff0c;isaaclab的conda虚…

《实战AI智能体》深度解析Deepseek可以做什么?

一、Deepseek平台功能全景图 Deepseek作为新一代人工智能开发平台,通过整合多项核心技术能力,构建了覆盖多领域的AI服务体系。该平台不仅为终端用户提供智能化解决方案,更为开发者群体打造了高效的技术支撑平台,形成了完整的AI应用开发生态。 二、核心功能模块解析 2.1 智…

Android 仿 DeepSeek 思考效果:逐字显示 AI 生成内容,支持加粗、颜色,复制内容

最近特别火的非AI莫属了&#xff0c;对我们高级搬运工太友好了&#xff0c;不管是网页端还是APP端&#xff0c;输入你要问的问题&#xff0c;都会逐字给你显示出来&#xff0c;有的还会加粗&#xff0c;这种效果看着不错&#xff0c;今天就带大家一起来实现。有啥更好的建议请在…