当前位置: 首页 > news >正文

k8s-NetworkPolicy

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.lryc.cn/news/488048.html

相关文章:

  • 【C++】踏上C++学习之旅(九):深入“类和对象“世界,掌握编程的黄金法则(四)(包含四大默认成员函数的练习以及const对象)
  • C++——智能指针剖析
  • 241119.LeetCode——383.赎金信
  • 基于SSM的农家乐管理系统+论文示例参考
  • 用 Python 从零开始创建神经网络(九):反向传播(Backpropagation)(还在更新中。。。)
  • Flink是如何实现 End-To-End Exactly-once的?
  • 【vulhub】nginx解析漏洞(nginx_parsing_vulnerability)
  • 网络协议之邮件协议(SMTP、POP3与IMAP)
  • python学习笔记(3)运算符
  • _FYAW智能显示控制仪表的简单使用_串口通信
  • 激光雷达定位初始化的另外一个方案 通过键盘按键移动当前位姿 (附python代码)
  • 从0-1逐步搭建一个前端脚手架工具并发布到npm
  • 河道水位流量一体化自动监测系统:航运安全的护航使者
  • 维护在线重做日志
  • ASCB1系列APP操控末端回路智能微断 物联网断路器 远程控制开关 学校、工厂、农场、商业大楼等可用
  • Python入门(10)--面向对象进阶
  • Makefile 之 自动化变量
  • 鸿蒙开发:ForEach中为什么键值生成函数很重要
  • 沃丰科技智能外呼机器人:超越人工,重塑外呼体验
  • 百度飞浆:paddle 线性回归模型
  • 【JavaSE】【网络编程】UDP数据报套接字编程
  • 45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
  • 20241120-Milvus向量数据库快速体验
  • 【Golang】——Gin 框架中间件详解:从基础到实战
  • 量子计算来袭:如何保护未来的数字世界
  • VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源
  • 光伏电站仿真系统的作用
  • Golang文件操作
  • 爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具
  • React(二)