【云原生、k8s】Calico网络策略
第四阶段
时 间:2023年8月17日
参加人:全班人员
内 容:
Calico网络策略
目录
一、前提配置
二、Calico网络策略基础
1、创建服务
2、启用网络隔离
3、测试网络隔离
4、允许通过网络策略进行访问
三、Calico网络策略进阶
1、创建服务
2、拒绝所有入口流量
3、允许进入Nginx的流量
4、拒绝所有出口流量
5、允许DNS出口流量
6、允许出口流量到Nginx
一、前提配置
1、主机初始化设置
[root@k8s-master ~]# iptables -F[root@k8s-master ~]# setenforce 0[root@k8s-master ~]# systemctl stop firewalld[root@k8s-master ~]# free[root@k8s-master ~]# sysctl -p

2、安装部署k8s集群,并使用calico网络
[root@k8s-master ~]# kubectl get nodes
[root@k8s-master ~]# kubectl get pods -n kube-system

二、Calico网络策略基础
1、创建服务
1)创建命名空间
[root@k8s-master ~]# kubectl create ns policy-demo

2)在 policy-demo 命名空间中创建两个副本的 Nginx Pod。
[root@k8s-master ~]# vim nginx-deployment.yaml

[root@k8s-master ~]# kubectl apply -f nginx-deployment.yaml
[root@k8s-master ~]# kubectl get pod -n policy-demo

3)通过服务暴露 Nginx 的 80 端口。
[root@k8s-master ~]# kubectl expose --namespace=policy-demo deployment nginx --port=80
[root@k8s-master ~]# kubectl get all -n policy-demo

4)通过 busybox 的 Pod 去访问 Nginx 服务。
[root@k8s-master ~]# kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh
/ # wget -q nginx -O -
[root@k8s-master ~]# kubectl get all -n policy-demo

2、启用网络隔离
在 policy-demo 命名空间中打开隔离。然后 Calico 将阻止连接到该命名空间中的 Pod。执行以下命令将创建一个 NetworkPolicy,该策略将对 policy-demo 名称空间中的所有 Pod实现默认的拒绝行为。
[root@k8s-master ~]# kubectl create -f - <<EOFkind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:name: default-denynamespace: policy-demospec:podSelector:matchLabels: {}EOF
3、测试网络隔离
启用网络隔离后,所有对 Nginx 服务的访问都将阻止。执行以下命令,尝试再次访问Nginx 服务,查看网络隔离的效果。
/ # wget -q --timeout=5 nginx -O -
4、允许通过网络策略进行访问
使用 NetworkPolicy 启用对 Nginx 服务的访问。设置允许从 accessPod 传入的连接,但不能从其他任何地方传入。创建 access-nginx 的网络策略具体内容如下所示。
[root@k8s-master ~]# kubectl create -f - <<EOFkind: NetworkPolicyapiVersion: networking.k8s.io/v1metadata:name: access-nginxnamespace: policy-demospec:podSelector:matchLabels:app: nginxingress:- from:- podSelector:matchLabels:run: accessEOF

从 accessPod 访问该服务。
[root@k8s-master ~]# kubectl run --namespace=policy-demo access --rm -ti --image busybox /bin/sh
/ # wget -q --timeout=5 nginx -O -

如果没有标记access,仍然无法访问服务。
[root@k8s-master ~]# kubectl run --namespace=policy-demo cant-access --rm -ti --image busybox /bin/sh
/ # wget -q --timeout=5 nginx -O -

[root@k8s-master ~]# kubectl get all -n policy-demo

三、Calico网络策略进阶
1、创建服务
删除命令空间 policy-demo,创建新的命名空间 advanced-policy-demo。
[root@k8s-master ~]# kubectl delete ns policy-demo
[root@k8s-master ~]# kubectl create ns advanced-policy-demo

使用 YAML 文件创建 Nginx 服务。
[root@k8s-master ~]# vim nginx-deployment.yaml

[root@k8s-master ~]# kubectl apply -f nginx-deployment.yaml
[root@k8s-master ~]# kubectl expose --namespace=advanced-policy-demo deployment nginx --port=80
[root@k8s-master ~]# kubectl get all -n advanced-policy-demo

验证访问权限并访问百度测试外网连通性。
[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh
/ # wget -q --timeout=5 nginx -O -

/ # wget -q --timeout=5 www.baidu.com -O -
[root@k8s-master ~]# kubectl get all -n advanced-policy-demo

2、拒绝所有入口流量
设置网络策略,要求 Nginx 服务拒绝所有入口流量。然后进行访问权限的验证。
[root@k8s-master ~]# kubectl create -f - <<EOFapiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: default-deny-ingressnamespace: advanced-policy-demospec:podSelector:matchLabels: {}policyTypes:- IngressEOF

[root@k8s-master ~]# kub w.baidu.com -O -

从上述命令执行结果中可以看出,对 Nginx 服务的入口访问被拒绝,而仍然允许对出站 Internet 的出口访问。
3、允许进入Nginx的流量
执行以下命令,创建一个 NetworkPolicy,设置允许流量从 advanced-policy-demo 命名空间中的任何 Pod 到 Nginx Pod。创建策略成功后,就可以访问 Nginx 服务了。
[root@k8s-master ~]# kubectl create -f - <<EOFapiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: access-nginxnamespace: advanced-policy-demospec:podSelector:matchLabels:app: nginxingress:- from:- podSelector:matchLabels: {}EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh
/ # wget -q --timeout=5 nginx -O -
/ # wget -q --timeout=5 www.baidu.com -O -
4、拒绝所有出口流量
设置拒绝所有出口流量的网络策略,该策略设置成功后,任何策略未明确允许的入站或出站流量都将被拒绝。
[root@k8s-master ~]# kubectl create -f - <<EOFapiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: default-deny-egressnamespace: advanced-policy-demospec:podSelector:matchLabels: {}policyTypes:- EgressEOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh
/ # nslookup nginx
/ # wget -q --timeout=5 nginx -O -
/ # wget -q --timeout=5 www.baidu.com -O -
5、允许DNS出口流量
执行以下命令,在 kube-system 名称空间上创建一个标签。该标签的 NetworkPolicy允许 DNS 从 advanced-policy-demo 名称空间中的任何 Pod 到名称空间 kube-system 的出站流量。
[root@k8s-master ~]# kubectl label namespace kube-system name=kube-system

[root@k8s-master ~]# kubectl create -f - <<EOFapiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: allow-dns-accessnamespace: advanced-policy-demospec:podSelector:matchLabels: {}policyTypes:- Egressegress:- to:- namespaceSelector:matchLabels:name: kube-systemports:- protocol: UDPport: 53EOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh
/ # nslookup nginx
/ # nslookup www.baidu.com
即使DNS 出口流量被允许,但来自 Advanced-policy-demo 命名空间中所有 Pod 的所有其他出口流量仍被阻止。因此,来自 wget 调用的 HTTP 出口流量仍将失败。
/ # wget -q --timeout=5 nginx -O -

6、允许出口流量到Nginx
执行以下命令,创建一个 NetworkPolicy,允许从 advanced-policy-demo 名称空间中的任何 Pod 到具有 app: nginx 相同名称空间中标签匹配的 Pod 的出站流量。
[root@k8s-master ~]# kubectl create -f - <<EOFapiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata:name: allow-egress-to-advance-policy-nsnamespace: advanced-policy-demospec:podSelector:matchLabels: {}policyTypes:- Egressegress:- to:- podSelector:matchLabels:app: nginxEOF

[root@k8s-master ~]# kubectl run --namespace=advanced-policy-demo access --rm -ti --image busybox /bin/sh
/ # wget -q --timeout=5 nginx -O -
/ # wget -q --timeout=5 www.baidu.com -O -

访问百度超时,是因为它可以解决 DNS 匹配标签以外的其他任何出口访问 app: nginx的 advanced-policy-demo 命名空间。
相关文章:
【云原生、k8s】Calico网络策略
第四阶段 时 间:2023年8月17日 参加人:全班人员 内 容: Calico网络策略 目录 一、前提配置 二、Calico网络策略基础 1、创建服务 2、启用网络隔离 3、测试网络隔离 4、允许通过网络策略进行访问 三、Calico网络策略进阶 1、创…...
Unity3D 测试总结
windows 平台上导出 exe 文件 在Unity界面中,点击菜单栏的“File”,选择“Build Settings”。 在“Build Settings”窗口中,选择要生成的平台(例如Windows)。 点击“Player Settings”按钮,进入“Player Se…...
【无线点对点网络时延分析和可视化】模拟无线点对点网络中的延迟以及物理层和数据链路层之间的相互作用(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
在思科(Cisco)路由器中使用 SNMP
什么是SNMP SNMP,称为简单网络管理协议,被发现可以解决具有复杂网络设备的复杂网络环境,SNMP 使用标准化协议来查询网络上的设备,为网络管理员提供保持网络环境稳定和远离停机所需的重要信息。 为什么要在思科设备中启用SNMP S…...
【压测】wg/wrk 轻量级压测
wg/wrk 轻量级压测 说明:环境是 centos,不过现在 centos 免费版本不再更新和维护了,所以大家可以用阿里云的或者用 ubuntu 内核 用的 https://github.com/wg/wrk.git 有 35k star 然后据我了解,windows 用 wrk 压测有点麻烦&…...
Redis可以用作消息队列吗?如何实现简单的消息队列功能?
是的,Redis可以被用作简单的消息队列。下面是一种实现简单消息队列功能的方式: 生产者(Producer)端: 使用LPUSH命令将消息推送到一个列表中,作为消息队列的实现。例如,使用LPUSH命令将消息推送到…...
[Java基础]对象转型
系列文章目录 【Java基础】Java总览_小王师傅66的博客-CSDN博客 [Java基础]基本概念(上)(标识符,关键字,基本数据类型)_小王师傅66的博客-CSDN博客 [Java基础]基本概念(下)运算符,表达式和语句,分支,循环,方法,变量的作用域,递归调用_小王师傅66的博客-CSDN博客 Java字节码…...
JVM——类文件结构
文章目录 一 概述二 Class 文件结构总结2.1 魔数2.2 Class 文件版本2.3 常量池2.4 访问标志2.5 当前类索引,父类索引与接口索引集合2.6 字段表集合2.7 方法表集合2.8 属性表集合 一 概述 在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class …...
银河麒麟服务器v10 sp1 .Net6.0 上传文件错误
上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址…...
C#实现普通的语音播报
Windows有文字转语音功能,C#提供了调用的类库Interop.SpeechLib.dll 使用方法很简单,在你的项目中添加Interop.SpeechLib.dll引用,在类中引用: using SpeechLib;这里提供一个CVoice类 帮助实现语音播报 public class CVoice{pri…...
django中实现事务的几种方式
1.实现事务的三种方式 1.1 全局开启事务---> 全局开启事务,绑定的是http请求响应整个过程 DATABASES {default: {#全局开启事务,绑定的是http请求响应整个过程ATOMIC_REQUESTS: True, }} from django.db import transaction# 局部禁用事务 transac…...
【es6】具名组匹配
1、组匹配 正则表达式使用圆括号进行组匹配,如:const RE_DATE /(\d{4})-(\d{2})-(\d{2})/;,三个圆括号形成了三个组匹配。 代码: const RE_DATE /(\d{4})-(\d{2})-(\d{2})/;const matchObj RE_DATE.exec(1999-12-31); const year matchO…...
自然语言处理技术:NLP句法解析树与可视化方法
自然语言处理(Natural Language Processing,NLP)句法解析树是一种表示自然语言句子结构的图形化方式。它帮助将句子中的每个词汇和短语按照语法规则连接起来,形成一个树状结构,以便更好地理解句子的语法结构和含义。句法解析树对于理解句子的句法关系、依存关系以及语义角…...
flinksql报错 Cannot determine simple type name “org“
flink版本 1.15 报错内容 2023-08-17 15:46:02 java.lang.RuntimeException: Could not instantiate generated class WatermarkGenerator$0at org.apache.flink.table.runtime.generated.GeneratedClass.newInstance(GeneratedClass.java:74)at org.apache.flink.table.runt…...
e.target.value和 binding.value 区别
e.target.value 和 binding.value 都是在 Vue.js 中用于处理事件绑定时的值,但它们的使用场景和含义有所不同,分别用于普通的 DOM 事件和自定义指令。 e.target.value: 这是常用于原生 DOM 事件处理函数中的一个属性,用于获取事件…...
软链接与exec进程替换运行路径问题
目录 1. 代码(1)启动进程execvp(2)替换的新进程new_proc 2. 验证(1)new_proc与execvp源文件同一目录(2)new_proc与execvp软链接同一目录 3. 总结4. errno.h 用execvp软链接启动进程&…...
【Go】锁相关
文章目录 Mutex锁mutex源码分析LockUnLock mutex两种运行模式mutex normal 正常模式自旋 mutex starvation 饥饿模式 锁的底层实现类型 RWMutexRWMutex 实现其他共享内存线程安全的方式 思考如何设计一个并发更高的锁? Mutex锁 mutex源码分析 Locker接口ÿ…...
git环境超详细配置说明
一,简介 在git工具安装完成之后,需要设置一下常用的配置,如邮箱,缩写,以及git commit模板等等。本文就来详细介绍些各个配置如何操作,供参考。 二,配置步骤 2.1 查看当前git的配置 git conf…...
使用阿里云服务器搭建PostgreSQL主从架构图文流程
阿里云百科分享使用阿里云服务器搭建PostgreSQL主从架构图文流程,PostgreSQL被业界誉为最先进的开源数据库,支持NoSQL数据类型(JSON/XML/hstore)。本文档介绍在CentOS 7操作系统的ECS实例上搭建PostgreSQL主从架构的操作步骤。 目…...
Linux的基本权限(文件,目录)
文章目录 前言一、Linux权限的概念二、Linux权限管理 1.文件访问者分类2.文件类型和访问类型3.文件访问权限的相关设置方法三、目录的权限四、权限的总结 前言 Linux下一切皆文件,指令的本质就是可执行文件,直接安装到了系统的某种路径下 一、Linux权限的…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...






