女主宣言
Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的。但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制。那么如何实现呢?本文最先发布于 opsdev,转载已获取作者授权。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
简介
Kubernetes提供了NetworkPolicy的Feature,支持按Namespace和按Pod级别的网络访问控制。它利用label指定namespaces或pod,底层用iptables实现。这篇文章简单介绍Kubernetes NetworkPolicy在Calico上的工作原理。
1
控制面数据流
Network Policy是一种kubernetes资源,经过定义、存储、配置等流程使其生效。以下是简要流程:
通过kubectl client创建network policy资源;
calico的policy-controller监听network policy资源,获取到后写入calico的etcd数据库;
node上calico-felix从etcd数据库中获取policy资源,调用iptables做相应配置。
2
资源配置模板
Network Policy支持按Pod和Namespace级别的访问控制,定义该资源可以参考以下模板。
指定pod标签访问