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

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命名空间所有 Pod
  policyTypes:  
  - Ingress 
  ingress:  
  - from: 
    - namespaceSelector:  # 从特定命名空间选择器匹配的命名空间中的 Pod 允许访问
        matchLabels:  
          app: echo  
    ports:  # 定义允许访问的端口
    - protocol: TCP  
      port: 80  
    - protocol: TCP
      port: 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: nginx
  namespace: default
spec:
  containers:
  - image: nginx:v1
    imagePullPolicy: IfNotPresent
    name: nginx
    ports:
    - containerPort: 80
      protocol: TCP

vim  tomcat.yaml

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
  namespace: default
spec:
  containers:
  - image: tomcat:v1
    imagePullPolicy: IfNotPresent
    name: nginx
    ports:
    - containerPort: 8080
      protocol: 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.kler.cn/a/403456.html

相关文章:

  • Spring cloud 一.Consul服务注册与发现(4)
  • 经典算法:查找与排序
  • Linux 进程概念与进程状态
  • Android 网络通信(三)OkHttp实现登入
  • 如何在 RK3568 Android 11 系统上排查以太网问题
  • 【 模型】 开源图像模型Stable Diffusion入门手册
  • [游戏开发][Unity]Unity3D中的基本概念及关键组件解析
  • 【从零开始的LeetCode-算法】3354. 使数组元素等于零
  • 大数据实验4-HBase
  • 基于redis完成延迟队列
  • 蓝桥杯某C语言算法题解决方案(质因数分解)
  • 使用Cursor和Claude AI打造你的第一个App
  • c++调用 c# dll 通过 clr (详细避坑)
  • 数据加密使用方法
  • 使用Python编写一个简单的网页爬虫,从网站上抓取标题和正文内容。
  • 是时候谈谈Go的测试了
  • ArcGIS计算水库库容量
  • 曼昆《经济学原理》第八版课后答案及英文版PDF
  • 7.高可用集群架构Keepalived双主热备原理
  • 头歌-本关任务:使用GmSSL命令行,生成SM2私钥并对文件进行签名验证(第二关)。
  • android viewpager2 嵌套 recyclerview 手势冲突
  • FFmpeg源码:mid_pred函数分析
  • Chromium Mojo(IPC)进程通信演示 c++(2)
  • 实验室管理技术革新:Spring Boot系统
  • 什么是事务,事务有什么特性?
  • 大语言模型的多头切片技术在分布式机器上的运行,每个机器是否需加载完整模型参数?无需加载完整模型参数