k8s网络策略

k8s网络策略

k8s网络测试概述

网络策略就是设置防火墙

查看防火墙策略

shell 复制代码
# 获取当前命名空间下的所有 NetworkPolicy 资源(网络策略)
# NetworkPolicy 用于控制 Pod 之间的网络通信规则
kubectl get networkpolicies

# 获取当前命名空间下的所有 NetworkPolicy 资源(简写命令)
# netpol 是 networkpolicies 的缩写,效果与全称命令等价
kubectl get netpol

k8s网络策略网络访问控制案例:

  • 需求:

只允许dev命名空间中的Pod访问test命名空间pod80端口.

  • 分析:
    一个只有specnetwork policy其他条件,意味着进出流全部禁止.
    只允许指定命名空间中的应用访问.

配置k8s网络策略

shell 复制代码
# 编辑k8s网络策略配置文件
vim k8s-networkpolicy.yaml

test 命名空间中创建以下 NetworkPolicy

yaml 复制代码
apiVersion: networking.k8s.io/v1  # 指定使用的 Kubernetes API 版本
kind: NetworkPolicy  # 资源类型为 NetworkPolicy,表示这是一个网络策略对象
metadata:
  name: allow-dev-to-test-80  # 设置该网络策略的名称为 'allow-dev-to-test-80'
  namespace: test  # 指定该网络策略适用于 'test' 命名空间
spec:
  podSelector: {}  # Pod 选择器为空对象,表示该策略适用于 'test' 命名空间下的所有 Pod
  policyTypes:
    - Ingress  # 仅应用于入站流量策略
  ingress:
    - from:
        - namespaceSelector:  # 定义流量来源为特定命名空间
            matchLabels:
              name: dev  # 匹配标签为 'name=dev' 的命名空间
      ports:
        - protocol: TCP  # 允许的协议类型为 TCP
          port: 80  # 允许访问的端口号为 80

保存

shell 复制代码
# 应用网络策略
kubectl apply -f k8s-networkpolicy.yaml

结果验证

shell 复制代码
# 命名空间打标签
kubectl labdel namespace dev name=dev
# 测试
kubectl run busybox --image=busybox -n dev --sleep 12h

# 可以访问
kubectl exec busybox -n dev --wget ${test命名空间pod的ip}

# 不可以访问
kubectl exec busybox --wget ${test命名空间pod的ip}

k8s网络策略配置示例

官方文档

protocolports层级下,只能指定tcp/udp/sctp

yaml 复制代码
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  # 网络策略名称
  name: allow-port-from-namespace
  namespace: corp-net
spec:
  # 根据标签筛选pod,{}表示所有
  podSelector: {}
  policyTypes:
    # 流方向
    - Ingress
  # Ingress(入pod流量)+from(从哪来)
  ingress:
    - from:
        # 从哪个ns来
        - namespaceSelector:
            # 匹配的label
            matchLabels:
              name: big-corp
      ports:
        # 允许的协议
        - protocol: TCP
	      # 允许的端口
	      port: 9200
相关推荐
2301_803554526 小时前
HTTP 常考问题简洁回答(速记版)
网络·网络协议·http
捷米研发三部8 小时前
Profinet 转 TCP/IP 协议转换网关:打破 PLC 与打标卡协议壁垒的工业通讯利器
网络·网络协议·tcp/ip
TeleostNaCl10 小时前
OpenWrt | 实现限制只有指定设备才能访问 luci 和 使用 SSH 等方式管理设备的方法
网络·经验分享·ssh·智能路由器
蒙娜丽宁10 小时前
Rust 并发编程进阶:线程模型、通道通信与异步任务对比分析
开发语言·网络·rust
Teable任意门互动11 小时前
主流多维表格产品深度解析:飞书、Teable、简道云、明道云、WPS
开发语言·网络·开源·钉钉·飞书·开源软件·wps
行思理11 小时前
Docker 应该如何学习 分四个阶段
学习·docker·容器
报错小能手12 小时前
计算机网络自顶向下方法2——网络、ISP连接结构介绍
网络·计算机网络
-Excalibur-12 小时前
形象解释关于TCP/IP模型——层层封装MAC数据帧的过程
linux·c语言·网络·笔记·单片机·网络协议·tcp/ip
小跌—12 小时前
Linux:数据链路层
linux·网络
paishishaba13 小时前
数据格式 、序列化和反序列化
网络