一文搞懂Kubernetes网络策略(上)

从CNCF基金会的成立,到Kubernetes社区蓬勃发展,历经6载,17年异军突起,在mesos、swarm等项目角逐中,拔得头筹,继而一统容器编排,其成功的关键原因可概括为以下几点:

  • 项目领导者们的坚守与远见
  • 社区的良好的运作与社区文化
  • 社区与企业落地的正反馈

今天zouyee为大家带来《一文搞懂Kubernetes网络策略(上)》,其中《kuberneter调度由浅入深:框架》正在编写中,敬请期待,当前涉及版本均为1.20.+


一、Network Policy简介

​ 随着微服务架构的日渐盛行,Serverless框架的逐步落地,应用上云后带来了模块间网络调用需求的大规模增长,Kubernetes 自 1.3 引入了 Network Policy,其提供以应用为中心, 基于策略的网络控制,用于隔离应用以减少攻击面。

​ Pod之间能否通信可通过如下三种组合进行确认:

  1. 其他被允许的 Pods(例如:Pod 无法限制对自身的访问)
  2. 被允许访问的namespace
  3. IP CIDR(例如:与 Pod 运行所在节点的通信总是被允许的)

在定义基于 Pod 或namespace的 NetworkPolicy 时,可以使用标签选择器来设定哪些流量可以进入或离开 Pod。同时,当创建基于 IP 的 NetworkPolicy 时,可以基于 IP CIDR 来定义策略。

以下结构体示意图辅助理解,后面章节有具体说明:

版本变迁
Kubernetes 版本 Networking API 版本 说明
v1.5-v1.6 extensions/v1beta1 需要在kube-apiserver开启 extensions/v1beta1/networkpolicies
v1.7 networking.k8s.io/v1
v1.8 networking.k8s.io/v1 新增 EgressIPBlock 的支持
二、简要介绍

默认情况下,Pod 是非隔离的,它们接受任何流量。

Pod 在被某 NetworkPolicy 选中时进入隔离状态。 一旦名字空间中有 NetworkPolicy 选择了特定的 Pod,该 Pod 会拒绝该 NetworkPolicy 所不允许的连接。 (名字空间下其他未被 NetworkPolicy 所选择的 Pod 会继续接受所有的流量)

网络策略不会冲突。 如果任何一个或多个策略选择了一个 Pod, 则该 Pod 受限于这些策略的 入站(Ingress)/出站(Egress)规则的并集。

⚠️在使用 Network Policy 时,网络插件需要支持 Network Policy,如 Calico、Romana、Weave Net 和 Trireme 等,其中Engress为 出口流量,Ingress为 入口流量。

2.1 结构体说明

staging/src/k8s.io/api/networking/v1/types.go

下面是 NetworkPolicy 的一个示例,如需完整说明,可参看结构定义文档:


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值