Kubernetes基于canel的网络策略

article/2025/10/3 12:27:29

Calico的官方地址:https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/flannel
安装canel之前需要注意
如果您使用的是pod CIDR 10.244.0.0/16,请跳至下一步。如果您使用的是其他pod CIDR,请使用以下命令设置一个名为POD_CIDR包含pod CIDR 的环境变量,并使用pod CIDR替换10.244.0.0/16清单。
POD_CIDR=""
sed -i -e “s?10.244.0.0/16?$POD_CIDR?g” canal.yaml

1.拉取资源清单
wget https://docs.projectcalico.org/v3.8/manifests/canal.yaml

2.创建canal
因为某种不可藐视的原因可能无法拉取镜像,需要提前把镜像准备好(所有节点都准备)

kubectl apply -f canal.yaml
3.canal的规则示例

在这里插入图片描述
这里的Ingress跟ingress规则不同,这里指的是通信流量,podselecto表示pod标签选择器,那么我们就可以让一组pod作为整体设置规则

NetworkPolicy在命令行中可以简写为netpol
(1)dev空间下的所有pod拒绝所有人访问

piVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingressnamespace: dev             #在那个命名空间下表示针对那个命名空间下的某些资源
spec:podSelector: {} #pod选择器设置为空,表示选择所有pod,即控制整个名称空间policyTypes:- Ingress #表示只对ingress生效,但是我们上面又把podSelector设置为空,表示默认是ingress拒绝所有的#但是我们这里面又没有加egress,所以默认egress是允许所有的

(2)允许别人访问dev命名空间下所有pod

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingressnamespace: dev
spec:podSelector: {} #pod选择器设置为空,表示选择所有pod,即控制整个名称空间ingress:- {}        #这样就表示所有放行policyTypes:- Ingress #表示只对ingress生效,但是我们上面又把podSelector设置为空,表示>默认是ingress拒绝所有的#但是我们这里面又没有加egress,所以默认egress是允许所有的

(3)dev空间下标签是app:nginx的pod允许10.244.0.0/16来访问80端口拒绝10.244.10.2/24
kubectl explain NetworkPolicy.spec.ingress.from

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingressnamespace: dev
spec:podSelector: matchLabels:app: nginxingress:- from: - ipBlock:             #放行IP,也可以写namespaceSelector,podSelectorcidr: 10.244.0.0/16  except:            #排除掉某个IP或者子网- 10.244.10.2/24ports:- protocol: TCP       #TCPport: 80           #80端口

(4)允许dev空间下所有标签为app:nginx的pod访问所有
出站与入站是类似的就是ingress和egress的区别

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:name: deny-all-ingressnamespace: dev
spec:podSelector:matchLabels:app: nginxegress:- {}policyTypes:- Egress

(5)访问策略大概思路
①设置规则的时候需要想到,如果针对于一个名称空间下的pod设置来说,需要注意同一空间是否可以通信
网络策略:
名称空间:
②拒绝所有出站,入站;
③放行所有出战目标本名称空间内的所Pod
2和3执行以后同一个命名空间基本没问题,跨命名空间就需要额外设置
④根据具体的需求来设置ingress和egress,难点在于需求


http://chatgpt.dhexx.cn/article/RIIFDxTf.shtml

相关文章

binlog以及Canel

一、NDB存储引擎 在介绍binlog之前,需要先了解一下NDB NDB 存储引擎也叫NDB Cluster 存储引擎,主要用于MySQL Cluster 分布式集群环境。 NDB特点: • 分布式:分布式存储引擎,可以由多个NDBCluster存储引擎组成集群分别存放整体数据的一部分 • 支持事务:和Innodb一样…

canel的网络策略

资源: https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/flannel 基于pod Egress 是Pod作为客户端(需要定义目标端口和目标地址) ingress 是pod作为服务端(需要定义目标地址和pod自己的端口) canel工作的默认网段是192.168.0.0/16的网…

超详细的Canal入门,看这篇就够了!

思维导图 文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言 我们都知道一个系统最重要的是数据,数据是保存在数据库里。但是很多时候不单止要保存在数据库中,还要同步保存到Elastic Search、HB…

数据同步神器Canel-day01

背景 关于数据同步的方式有很多种,现在有一个场景需要将mysql数据库的数据主动同步到我们的工程中,并且能再mysql数据库客户端更改某一行的数据也能将数据同步到另一个数据库或者工程中,对于这种场景的使用我们应该怎么去实现呢?…

Canal使用流程、部署安装文档

文章目录 背景信息使用流程步骤一:准备MySQL数据源步骤二:创建索引步骤三:安装并启动Canal-server(Deployer)步骤四:部署Client-Adapter步骤五:验证增量数据同步步骤六:同步MySQL全量数据(如果不…

Canel-简介使用

简介 canal 的工作原理 MySQL 主从复制过程 ➢ Master 主库将改变记录,写到二进制日志(binary log)中 ➢ Slave 从库向 mysql master 发送 dump 协议,将 master 主库的 binary log events 拷贝到它的中继日志(relay log); ➢ Slave 从…

检查页面Session是否过期,过期执行相应操作 解决方法

how to check session is expired or not if expired then redirect to login page 在项目中,如果客户打开页面时间过久容易导致页面Session过期,再进行任何操作时都会提示“Asp.Net session has expired”,这样毕竟都用户不太友好&#xff0…

thinkphp如何有效的设置session过期时间

thinkphp提供了一个参数让我们配置session过期时间。 SESSION_OPTIONS array(expire > 3600 ); 然而这一配置是否真的有效?在多次测试之后,不遂人意。 why?那我们试着从源码上分析这个配置参数的,它是怎么让尝试着然我们的…

session过期时间设置

设置session过期有三种方法: 1.在tomcat中进行设置 tomcat的conf文件下的,web.xml文件中 tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制session失效时间 这里要注意这个session设置的时间是根据服务器来…

springboot+shiro中自定义session过期时间

在springboot工程中,使用shiro作为权限框架,并采用redis来管理session时,如何自定义session过期时间? 上面与会话或缓存相关的组件有: Session Manager:会话管理器Session DAO:会话 DAO&#…

JAVA WEB 设置session过期时间

1.在web容器中设置 &#xff08;以tomcat为例,Tomcat默认session超时时间为30分钟&#xff09; 在tomcat/conf/web.xml里面进行配置&#xff0c;单位是分钟&#xff0c;永不过期可以设置-1 <session-config> <!-- 时间单位为分钟--> <session-timeout>30&…

springboot2.0设置session过期时间。

目的&#xff1a;springboot2.0设置session过期时间。 网上很多设置 springboot session 过期时间&#xff0c;已经不适合 springboot2.0. 下面这个我亲测有效。 请注意格式&#xff1a;我这个用的是 application.yml servlet:session:timeout: 3600s 所有文章优先发布在个人…

Java 设置session过期时间

设置session过期或超时时间 设置session的过期或超时时间&#xff0c;有三个地方&#xff1a; a、tomcat的web.xml中&#xff0c;该单位为分&#xff1a; Xml代码 <session-config> <session-timeout>720</session-timeout> </session-config>…

web 项目中设置session过期时间

java web项目中要想设置session过期时间&#xff0c;有三种设置方法&#xff0c;都是给与某个过期时间值&#xff0c;其中-1 代表session永远不会过期。 1. 第一种方式&#xff1a;通过代码设置方式&#xff0c;其中600表示600秒 2. 第二种方式&#xff1a;通过web.xml方式&am…

session会话过期时间设置

具体设置很简单&#xff0c;方法有三种&#xff1a; &#xff08;1&#xff09;在主页面或者公共页面中加入&#xff1a;session.setMaxInactiveInterval(900); 参数900单位是秒&#xff0c;即在没有活动15分钟后&#xff0c;session将失效。设置为-1将永不关闭。 这里要注意…

关于Session过期/失效的理解,session与cookie的交互

一直好奇关于Session的过期&#xff0c;一种说法是关闭浏览器即Session失效&#xff0c;另一种说法是可以设置Session的过期时间&#xff0c;时间到了自动过期。 这两种说法到底是怎么回事&#xff1f;Session过期跟Cookie过期又有什么关系&#xff1f; 网上搜了几篇相关文章…

数据库 存储过程

创建存储过程 create procedures_student sex varchar&#xff08;10&#xff09; as select * from 学生信息 where 性别sex 这样就创建了一个存储过程 exec proc_student sex女 使用带默认值的参数 create proc p_employee departmentid varchar&…

数据库--存储过程

介绍 对sql语句进行封装、复用 创建、调用 --存储过程 --创建 create procedure p1() beginselect count(*) from t_test;end;--调用 call p1();存储过程查看、删除 --查看 select * from information_schema.ROUTINES WHERE ROUTINE_SCHEMA test SHOW create procedure p1…

SQL Sever数据库存储过程

一、背景介绍 1.遇到存储过程 回顾之前知识&#xff0c;使用在当下&#xff08;毕业设计&#xff09; 2.了解周边知识 二、思路&方案 1.了解存储过程定义、语法、种类 2.存储过程有什么优缺点 3。存储过程与触发器和函数的联系 三、过程 1.什么是存储过程&#xff1f;…

数据库MySQL —— 存储过程

目录 一、介绍 二、基本语法 三、变量 1. 系统变量 2. 用户自定义变量 3. 局部变量 四、流程控制语句 1. if判断 2. 参数 3. case 4. 循环 4.1 while 4.2 repeat 4.3 loop 五、游标 - cursor 六、条件处理程序 - handler 七、存储函数 一、介绍 存储过…