k8s network policy配置,看这篇就够了
这是一篇关于k8s的网络策略配置说明
用户在使用k8s中,有对网络策略的配置需求,有时候希望不同的namespace之间不能互相访问,但是我们知道k8s中所有的pod之间都是可以互相访问的,这个时候就需要网络策略来帮助我们实现这个诉求,网络策略依赖于cni网络插件,不是所有的网络插件都支持网络策略,calico支持网络策略,而flannel不支持。
接下来我以一张图来说明k8s的networkpolicy资源的配置
整个图总接下来如下:
入口规则:
仅允许 1.来自(from)命名空间(spec/ingress/from/namespaceSlecetor)下所有pod2. 策略所在命名空间下pod满足(spec/ingress/from/podSelector)3.ip段满足(spec/ingress/from/ipblock)的pod以什么协议访问本命名空间下的满足(spec/podSelector)的pod的某个端口或某个段的端口
出口规则:
仅允许本命名空间下的满足(spec/podSelector)的pod去访问(to)1.命名空间(spec/ingress/from/namespaceSlecetor)下的所有pod 2.本命名空间满足(spec/ingress/from/podSelector)的pod3. ip段满足(spec/ingress/from/ipblock)的pod的某个端口或某个段的端口
下面是官方的一个例子,来帮助大家理解,具体的配置及意义
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: test-network-policynamespace: default
spec:podSelector:matchLabels:role: dbpolicyTypes:- Ingress- Egressingress:- from:- ipBlock:cidr: 172.17.0.0/16except:- 172.17.1.0/24- namespaceSelector:matchLabels:project: myproject- podSelector:matchLabels:role: frontendports:- protocol: TCPport: 6379egress:- to:- ipBlock:cidr: 10.0.0.0/24ports:- protocol: TCPport: 5978
- 说明: 除非选择支持网络策略的网络解决方案,否则将上述示例发送到API服务器没有任何效果。
必需字段:与所有其他的 Kubernetes 配置一样,NetworkPolicy 需要 apiVersion、 kind 和 metadata 字段。关于配置文件操作的一般信息,请参考 使用 ConfigMap 配置容器, 和对象管理。
spec:NetworkPolicy 规约 中包含了在一个名字空间中定义特定网络策略所需的所有信息。
podSelector:每个 NetworkPolicy 都包括一个 podSelector,它对该策略所 适用的一组 Pod 进行选择。示例中的策略选择带有 “role=db” 标签的 Pod。 空的 podSelector 选择名字空间下的所有 Pod。
policyTypes: 每个 NetworkPolicy 都包含一个 policyTypes 列表,其中包含 Ingress 或 Egress 或两者兼具。policyTypes 字段表示给定的策略是应用于 进入所选 Pod 的入站流量还是来自所选 Pod 的出站流量,或两者兼有。 如果 NetworkPolicy 未指定 policyTypes 则默认情况下始终设置 Ingress; 如果 NetworkPolicy 有任何出口规则的话则设置 Egress。
ingress: 每个 NetworkPolicy 可包含一个 ingress 规则的白名单列表。 每个规则都允许同时匹配 from 和 ports 部分的流量。示例策略中包含一条 简单的规则: 它匹配某个特定端口,来自三个来源中的一个,第一个通过 ipBlock 指定,第二个通过 namespaceSelector 指定,第三个通过 podSelector 指定。
egress: 每个 NetworkPolicy 可包含一个 egress 规则的白名单列表。 每个规则都允许匹配 to 和 port 部分的流量。该示例策略包含一条规则, 该规则将指定端口上的流量匹配到 10.0.0.0/24 中的任何目的地。
所以,该网络策略示例:
隔离 “default” 名字空间下 “role=db” 的 Pod (如果它们不是已经被隔离的话)。
(Ingress 规则)允许以下 Pod 连接到 “default” 名字空间下的带有 “role=db” 标签的所有 Pod 的 6379 TCP 端口:
1) "default" 名字空间下带有 "role=frontend" 标签的所有 Pod 2)带有 "project=myproject" 标签的所有名字空间中的 Pod 3)IP 地址范围为 172.17.0.0–172.17.0.255 和 172.17.2.0–172.17.255.255 (即,除了 172.17.1.0/24 之外的所有 172.17.0.0/16)
(Egress 规则)允许从带有 “role=db” 标签的名字空间下的任何 Pod 到 CIDR 10.0.0.0/24 下 5978 TCP 端口的连接。
参考:
https://kubernetes.io/zh/docs/concepts/services-networking/network-policies/
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.21/#networkpolicy-v1-networking-k8s-io
k8s network policy配置,看这篇就够了相关推荐
- NDK 环境配置看这篇就够了!
JNI-Android Studio下的 NDK 环境配置 JNI与NDK的理解 JNI 什么是JNI呢? 为什么用JNI呢? 怎么学JNI呢? NDK 什么是NDK呢? 为什么用NDK呢? 怎么学N ...
- macOS 上的 Charles 配置看一篇就够了
2021.11.9 更新,新增 iOS 模拟器抓取 Https 报文的配置方法. 文章目录 1. Charles 简介 2. Charles 工作原理 3. 组件介绍 4. macOS 代理设置 5. ...
- Docker入门实战看这篇就够了(最新详细以及踩过的坑)
Docker入门实战看这篇就够了 前言 初识 是什么 容器与虚拟机 能干什么 去哪玩 安装 先决条件 查看自己的内核 安装所需的软件包(支持devicemapper存储类型) 设置镜像的仓库 设置yu ...
- [个人向]超快速了解微信小程序:看这篇就够了!(注册、语言、框架、配额等简要说明)
[个人向]超快速了解微信小程序看这篇就够了+相关简要说明 本文精炼微信小程序开发文档相关内容,旨在对初次接触并准备开发小程序的童鞋(比如自己)提供一个快速了解攻略.其中包括注册相关.语言.框架模式.相 ...
- React入门看这篇就够了
2019独角兽企业重金招聘Python工程师标准>>> 摘要: 很多值得了解的细节. 原文:React入门看这篇就够了 作者:Random Fundebug经授权转载,版权归原作者所 ...
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既 ...
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
园子里关于ASP.NET Core Web API的教程很多,但大多都是使用EF+Mysql或者EF+MSSQL的文章.甚至关于ASP.NET Core Web API中使用Dapper+Mysql组 ...
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
引言 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧,但文档又必须写,而且文档的格式如果没有具体要求的话,最终完成的文档则完全取决于开发者 ...
- Spring Cloud入门,看这篇就够了!
点击▲关注 "中生代技术" 给公众号标星置顶 更多精彩 第一时间直达 概述 首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟. 什 ...
最新文章
- 如何去除 IDEA 中 xml 文件的屎黄色背景
- thinkphp5.0 cache数据缓存机制
- C#LeetCode刷题-设计
- pandas.Series.quantile
- python人工智能算法代码_python人工智能,分类例解
- python源码剖析_Python源码剖析
- lda数学八卦_[ LDA主题模型应用和改进组 ] 招募成员
- android 取消选中状态,Android:显示/隐藏偏好检查/取消选中其他CheckBoxPreference
- 使用scrcpy投屏——手机投屏到电脑
- 在 Excel 中对多行多列进行条件求和
- OpenGL法线贴图
- QAOA如何在NISQ处理器中展示应用级量子优势?
- BROP入门之 KCTF 2022 废土末世
- python查阅文献
- 深入浅出,一篇超棒的机器学习入门文章
- 如何安装svelte_svelte js框架介绍编译器
- PageUtils后端常用分页工具类
- 红外热成像传感器介绍
- Java 面试的“完美圣经”,有了这些还愁面试吗?
- 12个月的英语名称来历