k8s-NetworkPolicy

embedded/2024/11/24 14:00:48/

NetworkPolicy 是k8s中的网络策略可以限制pod以及namespace之间的访问流量

演示一下名称空间之间基于端口的访问限制

官方对networkpolicy的介绍

官方网址:        网络策略 |Kubernetes (简体中文)

一:创建NetworkPolicy 

vim  networkpolicy.yaml

apiVersion: networking.k8s.io/v1 
kind: NetworkPolicy  
metadata: name: test-network-policy  # 策略的名称namespace: default  # 策略所在的命名空间
spec:  podSelector:  matchLabels: {}  # 空的标签选择器,意味着匹配default命名空间所有 PodpolicyTypes:  - Ingress ingress:  - from: - namespaceSelector:  # 从特定命名空间选择器匹配的命名空间中的 Pod 允许访问matchLabels:  app: echo  ports:  # 定义允许访问的端口- protocol: TCP  port: 80  - protocol: TCPport: 8080

生成networkpolicy

kubectl  apply -f networkpolicy.yaml

kubectl  describe networkpolicy 

#查看详细信息,因为我的default命名空间只有一个networkpolicy,所以没指定名字

kubectl  get  networkpolicy

可以看到这个networkpolicy是限制有app=echo的名称空间中的pod只允许访问default名称空间下的所有pod的80和8080端口,其他端口不允许访问

二:创建具有app=echo的名称空间

kubectl   create  ns  test  #创建namespace可以简写ns

kubectl  label  ns test  app=echo  #给test命名空间打上app=echo的标签

kubectl  get  ns  --show-labels   #查看test命名空间的标签

三:验证

在default命名空间下创建两个pod,分别为nginx和tomcat。

nginx是80端口 tomcat是8080端口

vim  nginx.yaml

apiVersion: v1
kind: Pod
metadata:name: nginxnamespace: default
spec:containers:- image: nginx:v1imagePullPolicy: IfNotPresentname: nginxports:- containerPort: 80protocol: TCP

vim  tomcat.yaml

apiVersion: v1
kind: Pod
metadata:name: tomcatnamespace: default
spec:containers:- image: tomcat:v1imagePullPolicy: IfNotPresentname: nginxports:- containerPort: 8080protocol: TCP

创建出来 

kubectl  apply  -f  nginx.yaml  

kubectl  apply  -f  tomcat.yaml  

在test命名空间中创建一个pod进行访问验证

创建一个busybox

kubectl run busy-test --image=docker.io/library/busybox:1.28 --namespace=test -- /bin/sh -c "sleep 3600"

查看default命名空间下的pod ip

kubectl  get pod -owide

kubectl -n test exec -it busy-test -- /bin/sh  #进入容器内部

使用wget 来请求一下网页文件

可以看到80和8080都是可以下载到的

下面来多开两个终端进入到busybox容器里面用于下载网页文件,随后修改networkpolicy查看效果

看录屏查看效果

k8s-networkpolicy

这个测试方式就是上面的两个终端分别下载nginx和tomcat的网页文件

下面那个终端用于动态修改网络策略:第一次是取消掉了8080端口也就是tomcat的端口,可以发现tomcat的网页不被持续下载了,第二次我们又取消掉了nginx的80端口之后nginx的网页文件也不被下载了,第三次我们又恢复了80端口,可以看到nginx的网页文件又重新被下载了


http://www.ppmy.cn/embedded/140141.html

相关文章

Django:从入门到精通

一、Django背景 Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发…

万有引力定律和库仑定律:自然的对称诗篇

万有引力定律和库仑定律:自然的对称诗篇 在宇宙深邃的知识长河中,万有引力定律和库仑定律恰似两颗璀璨的明珠,闪耀着人类智慧与自然奥秘的光辉。 十七世纪,牛顿在对天体运行的深邃思索中,拨开重重迷雾,发现…

k8s篇之控制器类型以及各自的适用场景

1. k8s中控制器介绍 在 Kubernetes 中,控制器(Controller)是集群中用于管理资源的关键组件。 它们的核心作用是确保集群中的资源状态符合用户的期望,并在需要时自动进行调整。 Kubernetes 提供了多种不同类型的控制器,每种控制器都有其独特的功能和应用场景。 2. 常见的…

在Ubuntu系统中制作系统启动u盘

2024-11:用Ubuntu系统一段时间后,编程体验很好,命令行尤其好用。时间一长,考虑到Windows系统里面丰富的软件生态,还是颇为割舍不下,本来想着再买个主机,但是考虑到成本问题,还是给笔…

Linux|环境变量

目录 前言 Main参数—命令行参数 命令行解释器:bash 认识环境变量 环境变量的作用 环境变量命令行操作 代码获取环境变量的用法 环境变量表 环境变量的存放 前言 环境变量是一个系统预定义的全局参数,系统自己开辟空间,将它存在于所…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体,更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁,工业4G路由器以卓越的通信组网能力,为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力,确保船舶内部…

Spark 分布式计算中网络传输和序列化的关系(二)

在 Spark 分布式计算 中,网络传输和序列化是数据处理的重要组成部分。Spark 通过将任务划分为多个分布式计算节点来处理数据,而序列化和网络传输直接影响计算性能和数据交互效率。 1. 序列化在 Spark 中的作用 序列化是 Spark 将数据对象转换为字节流以…

Unity图形学之法线贴图原理

1.正常贴图:RGBA 4通道 每个通道取值范围 0-255 贴图里面取值是 0-1 2.法线贴图:法线怎么存入正常贴图的过程 每个通道里面存储的是一个向量(x,y,z,w) 通常我们会对应xyzw为rgba 存储值的范围也是0-1向量的取值范围是 -1到1法线怎么存入正常贴图的过程&…