《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航

书籍来源:《Kubernetes网络权威指南:基础、原理与实践》

一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:《Kubernetes网络权威指南》读书笔记 | 汇总_COCOgsta的博客-CSDN博客


默认情况下,Kubernetes底层网络是“全连通”的,即在同一集群内运行的所有Pod都可以自由通信。但是也支持用户根据实际需求以不同方式限制集群内Pod的连接。Kubernetes的解决方案是Network Policy,即网络策略。

网络策略就是基于Pod源IP的访问控制列表,限制的是Pod之间的访问。通过定义网络策略,用户可以根据标签、IP范围和端口号的任意组合限制Pod的入站/出站流量。

Kubernetes的网络策略采用了比较严格的单向流控制,即假如允许服务A访问服务B,反过来服务B并不一定能访问服务A。这与Docker内置的Network命令实现的隔离有很大不同。

3.8.1 网络策略应用举例

如果拒绝所有流量进入,例如图3-24所示的场景。

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第1张图片

图3-24 拒绝所有流量进入的网络策略场景

那么Network Policy对象应该定义成:

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第2张图片

如果限制部分流量进入,例如图3-25所示的场景。

图3-25 限制部分流量进入的网络策略场景

那么,Network Policy对象应该定义成:

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第3张图片

如果只允许特定namespace的Pod流量进入,例如图3-26所示的场景。

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第4张图片

图3-26 只允许特定namespace的Pod流量进入的网络策略场景

那么Network Policy对象应该定义成:

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第5张图片

如果限制流量从指定端口进入,例如图3-27所示的场景。

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第6张图片

图3-27 限制流量从指定端口进入的网络策略场景

那么,Network Policy对象应该定义成:

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第7张图片

再举一个同时限定入站(Ingress)和出站(Egress)的例子:

《Kubernetes网络权威指南》读书笔记 | Kubernetes网络策略:为你的应用保驾护航_第8张图片

该例子的效果如下:default namespace下Labels包含role=db的Pod,都会被隔绝,它们只能建立满足Network Policy的Ingress和Egress描述的连接。即:

(1)所有属于172.17.0.0/16网段的IP,除了172.17.1.0/24中的IP,其他的都可以与上述Pod的6379端口建立TCP连接。

(2)所有包含project=myproject Labels的namespace中的Pod可以与上述Pod的6379端口建立TCP连接。

(3)所有default namespace下的包含role=frontend Labels的Pod可以与上述Pod的6379端口建立TCP连接。

(4)允许上述Pod访问网段为10.0.0.0/24的目的IP的5978端口。

Kubernetes网络策略与一些安全组(例如Neutron的安全组)的区别。一般来说,安全组的规则记录在上层网关,而不是每一个节点上。而Network Policy agent一般通过Kubernetes DaemonSet实现每个节点上都有一个部署。

你可能感兴趣的:(实验笔记,kubernetes,网络,docker)