一、概述

在Kubernetes中,NetworkPolicy是一项关键功能,它允许开发者定义和控制Pod之间的网络通信。本文将深入研究Kubernetes中的NetworkPolicy,详细介绍其原理、用途,并通过实际示例演示如何使用NetworkPolicy来确保集群中的网络安全。

1、什么是NetworkPolicy?

NetworkPolicy是Kubernetes中用于定义Pod之间网络通信规则的资源对象。通过NetworkPolicy,开发者可以控制哪些Pod可以与另外哪些Pod通信,以及使用何种方式进行通信。这种细粒度的网络控制有助于提高集群的安全性,防止未经授权的访问和通信。

2、NetworkPolicy的基本原理

NetworkPolicy的工作原理基于以下几个核心概念:

  1. Pod选择器(PodSelector)& namespaceSelector:NetworkPolicy使用标签选择器来选择特定的Pod。通过标签,可以将网络策略应用于特定的Pod群体。

  2. Ingress规则:定义了允许从其他Pod进入被选中Pod的规则,包括允许的协议、端口范围等。

  3. Egress规则:定义了允许被选中Pod访问其他Pod或外部网络的规则。

  4. Peer Pod:NetworkPolicy中的规则是基于Peer Pod(对等Pod)的。通过选择Peer Pod,可以精确定义通信策略。

验证操作

不允许相同Namespace下的Pod通信
创建namespace文件vim ntw.yml 


 

限制访问外部

创建networkpolicy文件vim wb.yml

执行命令 kubectl apply -f wb.yml

允许访问外部和指定的命名空间

!!!注意被指定的命名空间的networkpolicy文件不能禁止被访问!!!

限制其他命名空间中的pod访问podSelector匹配到的pod

创建 networkpolicy文件

执行命令 kubectl apply -f fw.yml

只访问外部网络和同命名空间下的pod


访问其他命名空间的IP地址不能访问,但可以访问域名,域名的组成:

可以解析,创建一个busybox: vim pod.yml

执行:kubectl apply -f pod.yml
可以解析,但不可以访问ping

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐