写点什么

41 K8S 之网络策略

  • 2021 年 12 月 11 日
  • 本文字数:1015 字

    阅读完需:约 3 分钟

41 K8S之网络策略

网络策略是控制 Pod 资源组间以及与其他网络端点间如何进行通信的规范,它使用标签来分组 Pod,并在该组 Pod 之上定义规则来管控其流量,从而为 Kubernetes 提供更为精细的流量控制以及租户隔离机制。NetworkPolicy 资源是 Kubernetes API 的一等公民,管理员或用户可使用 NetworkPolicy 这一标准资源类型按需定义网络访问控制策略。


Kubernetes 默认并未对 Pod 之上的流量作为任何限制,Pod 对象能够与集群上的其他任何 Pod 通信,也能够与集群外部的网络端点交互。NetworkPolicy 是名称空间级别的资源,允许用户使用标签选择器在筛选出的一组 Pod 对象上分别管理 Ingress 和 Egress 流量。一旦将 Network Policy 引入到名称空间中,则被标签选择器“选中”的 Pod 将默认拒绝所有流量,而仅放行由特定的 NetworlPolicy 资源明确“允许”的流量。然而,未被任何 NetworkPolicy 资源的标签选择器选中的 Pod 对象的流量则不受影响。


Pod 组:由 NetworkPolicy 资源通过 Pod 标签选择器(spec.podSelector)动态选出的一组 Pod 资源集合,它们也是该网络策略规则管控的目标,可通过 macthLabel 或 matchExpression 类型的标签选择器选定。


Egress 规则:出站流量的相关规则,负责管控由选定的 Pod 组发往其他网络端点的流量,可由流量的目标网络端点(spec.egress.to)和端口(spec.egress.ports)来定义。


Ingress 规则:入站流量的相关规则,负责管控可由选定的 Pod 组所接收的流量,它能够由流量发出的源端点(spec.ingress.from)和流量的目标端口(spec.ingress.ports)来定义。


对端端点(to, from):与选定的 Pod 组交互的对端主机,它可由 CIDR 格式的 IP 地址块(ipBlock)、网络名称空间选择器(namespaceSelector)来匹配名称空间内的所有 Pod 对象,甚至也可以是由 Pod 选择器(podSelector)在指定名称空间中选出的一组特定 Pod 对象等。


Calico 项目既能独立地为 Kubernetes 集群提供网络插件和网络策略,也能与 Flannel 结合在一起,由 Flannel 提供网络解决方案,而 Calico 仅用于提供网络策略,这种解决方案就是独立的 Canal 项目


以名称空间分隔的多租户甚至是多项目的 Kubernetes 集群上,通常应该设定彼此间的通信隔离,以提升系统整体安全性。但这些名称空间通常应该允许内部各 Pod 间的通信,以及允许来自集群上管理类应用专用名称空间的请求,包括 kube-system kubernetes-dashboard,以及集群式日志收集系统专用的名称空间(例如 logs)和监控系统专用的名称空间(例如 monitoring)等。同时,这些名称空间通常会请求 DNS 服务,以及 Kubernetes 的 API 等。


发布于: 6 小时前阅读数: 11
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
41 K8S之网络策略