Kubernetes 网络策略对于控制许多基于微服务的新式应用程序中的组件级通信至关重要。 本文介绍如何在 Azure 门户中直接为 AKS 群集创建和管理网络策略。
有关网络策略的详细信息,请访问 Kubernetes 文档 ,或查看 Azure Kubernetes 服务(AKS)中网络策略的最佳做法。
先决条件
安装了网络策略引擎的 AKS 群集。 如果您没有,请参阅 在 Azure Kubernetes 服务 (AKS) 集群上启用网络策略引擎。
若要确认群集是否已安装托管网络策略引擎,请转到 Azure 门户并导航到 AKS 群集资源。 在服务菜单中,选择“ 网络”。 在 “网络配置文件”下,验证是否具有 网络策略引擎。 例如:
创建网络策略
- 在 Azure 门户中导航到你的 AKS 群集资源。
- 在“服务”菜单中的 “Kubernetes 资源”下,选择 “网络策略”。
- 选择“ + 创建>网络策略”。
定义策略范围
在 “创建网络策略 ”页上,更新以下字段:
- Name
- Namespace
- Pod 选择器
此网络策略会影响命名空间中符合特定 Pod 选择器的任何 Pod 的传入或传出流量。 如果未提供选择器,则指定命名空间中的所有 Pod 都属于策略范围。 此外,还会在此命名空间中创建网络策略资源。
添加策略规则
注释
如果在创建网络策略之前未添加任何规则,Kubernetes 会自动拒绝策略范围内 Pod 的所有入口流量。
在“ 创建网络策略 ”页上的 “策略规则”下,选择“ + 添加规则”。
在“添加规则”页上,选择规则类型和规则预设。 每个规则可以应用于入口或出口流量。 若要控制一个策略中的入口和出口流量,可以添加多个规则。 还可以应用规则预设来允许或拒绝所有入口或出口流量。 若要进行更精细的控制,可以选择 “允许自定义流量”。
添加允许的源或目标
在 “添加规则 ”页上,选择“ + 添加允许的源 ”或“ 添加允许的目标 ”,具体取决于规则类型(入口或出口)。
为 Kubernetes 网络策略的允许的源或目标选择以下选项之一:
允许来自同一命名空间的流量
允许来自集群中其他命名空间的流量
允许来自集群外部 IP 地址块的流量
重要
不建议使用 Pod IP 地址标识 Pod,因为这些 IP 地址本质上是临时的。 请改用 Pod 选择器和/或命名空间选择器来指定目标 Pod。
注释
如果选择 “允许自定义流量 ”而不指定任何允许的源或目标,Kubernetes 会将此规则解释为拒绝所选规则类型 的所有流量 (入口/出口)。
为您选择的允许的源或目标选项进行配置:
- 若要以 特定 Pod 为目标,可以使用相应的键值标识符应用 Pod 选择器。 如果此 Pod 选择器留空,或者选择允许所有 Pod,则指定命名空间中的所有 Pod 都成为目标。
- 若要以 群集中的其他命名空间为目标,可以应用命名空间选择器和 Pod 选择器,该选择器可独立选择命名空间和 Pod 的特定组合。 若要面向所有命名空间中的所有 Pod,请选择 “允许来自群集中的其他命名空间的流量”、“ 允许所有命名空间”和 “允许所有 Pod”。
- 若要 允许来自或向外部 IP 地址的流量,可以通过指定特定的 IP 块或 CIDR,并选用可排除的地址或范围。 与 Pod 和命名空间选择器类似,如果 CIDR 字段留空,则允许所有外部 IP 地址。
重要
源或目标下留空的任何选择器字段都允许来或去此类型的所有实体(IP 地址、命名空间、Pod 等)的流量。 若要防止无意中允许任何流量,请删除不应允许的任何源或目标。
指定允许的端口
在 “添加规则 ”页上的“ 端口”下,默认选中 “允许所有端口 ”选项。 此设置允许所有端口上的流量。 如果要指定哪些端口可以接收或发送流量,请取消选择
允许所有端口 ,选择一个协议 ,并可以选择输入端口或端口范围。 重要
当限制出站流量时,请确保所有 Azure 或 AKS 所需的流量都被明确允许。 这些要求可能因群集配置而异。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 群集的出站网络和 FQDN 规则。
选择 并添加。
管理网络策略
创建网络策略后,可以通过从服务菜单中选择 “网络策略 ”来查看现有策略。 从这里,您可以创建新的网络策略、删除网络策略,或通过选择策略来查看有关网络策略资源的更多详细信息。
常见问题 (FAQ)
如果启用了多个允许不同流量流的策略,会发生什么情况? 一个策略是否替代另一个策略?
Kubernetes 网络策略具有累加效果。 例如,如果一个策略允许来自命名空间 A 的 Pod 的入口,另一个策略允许来自命名空间 B 的 Pod 的入口,则同时允许来自命名空间 A 和 B 的 Pod 的入口。 只要至少有一个策略允许流量,该流量就被允许。
是否支持 CiliumNetworkPolicy 或 CiliumClusterWideNetworkPolicy 资源?
目前,Azure 门户仅支持 Kubernetes NetworkPolicy 创建和管理:第 3 层和第 4 层策略控制。 若要详细了解 AKS 的高级容器网络安全,请参阅 什么是容器网络安全?
如果在未安装网络策略引擎的情况下创建网络策略,会发生什么情况?
可以在 AKS 群集上创建没有网络策略引擎的网络策略。 但是,在安装网络策略引擎之前,不会强制实施这些策略。 有关详细信息,请参阅在 Azure Kubernetes 服务 (AKS) 中使用网络策略保护 Pod 之间的流量。