这篇文章主要讲解了“Kubernetes网络策略是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes网络策略是什么”吧!
网络策略NetworkPolicy 取代了你所知道的数据中心环境中的防火墙设备 —— 如吊舱Pod之于计算实例、网络插件之于路由器和交换机,以及卷之于存储区域网络(SAN)。
默认情况下,Kubernetes 网络策略允许 吊舱Pod 从任何地方接收流量。如果你不担心吊舱的安全性,那么这可能没问题。但是,如果你正在运行关键工作负载,则需要保护吊舱。控制集群内的流量(包括入口和出口流量),可以通过网络策略来实现。
要启用网络策略,你需要一个支持网络策略的网络插件。否则,你应用的任何规则都将变得毫无用处。
Kubernetes.io 上列出了不同的网络插件:
CNI 插件:遵循
容器网络接口Container Network Interface
(CNI)规范,旨在实现互操作性。
Kubernetes 插件:使用桥接器和主机本地 CNI 插件实现基本的 cbr0
。
要应用网络策略,你需要一个工作中的 Kubernetes 集群,并有支持网络策略的网络插件。
但首先,你需要了解如何在 Kubernetes 的环境使用网络策略。Kubernetes 网络策略允许 吊舱 从任何地方接收流量。这并不是理想情况。为了吊舱安全,你必须了解吊舱是可以在 Kubernetes 架构内进行通信的端点。
1、使用 podSelector
进行吊舱间的通信:
- namespaceSelector: matchLabels: project: myproject
2、使用 namespaceSelector
和/或 podSelector
和 namespaceSelector
的组合进行命名空间之间的通信和命名空间到吊舱的通信。:
- namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend
3、对于吊舱的 IP 块通信,使用 ipBlock
定义哪些 IP CIDR 块决定源和目的。
- ipBlock: cidr: 172.17.0.0/16 except: - 172.17.1.0/24
注意吊舱、命名空间和基于 IP 的策略之间的区别。对于基于吊舱和命名空间的网络策略,使用选择器来控制流量,而对基于 IP 的网络策略,使用 IP 块(CIDR 范围)来定义控制。
把它们放在一起,一个网络策略应如下所示:
apiVersion: networking.k8s.io/v1kind: NetworkPolicymetadata: name: test-network-policy namespace: defaultspec: podSelector: matchLabels: app: backend policyTypes: - Ingress - Egress ingress: - from: - ipBlock: cidr: 172.17.0.0/16 except: - 192.168.1.0/24 - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend ports: - protocol: TCP port: 6379 egress: - to: - ipBlock: cidr: 10.0.0.0/24 ports: - protocol: TCP port: 5978
参考上面的网络策略,请注意 spec
部分。在此部分下,带有标签 app=backend
的 podSelector
是我们的网络策略的目标。简而言之,网络策略保护给定命名空间内称为 backend
的应用程序。
此部分也有 policyTypes
定义。此字段指示给定策略是否适用于选定吊舱的入口流量、选定吊舱的出口流量,或两者皆有。
spec: podSelector: matchLabels: app: backend policyTypes: - Ingress - Egress
现在,请看 Ingress
(入口)和 Egress
(出口)部分。该定义规定了网络策略的控制。
首先,检查 ingress from
部分。
此实例中,网络策略允许从以下位置进行吊舱连接:
ipBlock
namespaceSelector
myproject
: 允许来自此命名空间并具有相同标签 project=myproject 的所有吊舱。podSelector
frontend
: 允许与标签 role=frontend
匹配的吊舱。ingress: - from: - ipBlock: cidr: 172.17.0.0/16 except: - 192.168.1.0/24 - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: frontend
现在,检查 egress to
部分。这决定了从吊舱出去的连接:
ipBlock
egress: - to: - ipBlock: cidr: 10.0.0.0/24 ports: - protocol: TCP port: 5978
仅靠网络策略无法完全保护你的 Kubernetes 集群。你可以使用操作系统组件或 7 层网络技术来克服已知限制。你需要记住,网络策略只能解决 IP 地址和端口级别的安全问题 —— 即开放系统互联(OSI)中的第 3 层或第 4 层。
为了解决网络策略无法处理的安全要求,你需要使用其它安全解决方案。以下是你需要知道的一些 用例,在这些用例中,网络策略需要其他技术的增强。
感谢各位的阅读,以上就是“Kubernetes网络策略是什么”的内容了,经过本文的学习后,相信大家对Kubernetes网络策略是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。