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

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

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

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

四、NetworkPolicy 开发

​ 实现一个支持 Network Policy 的网络扩展需要至少包含两个组件

  • CNI 网络插件:负责给 Pod 配置网络接口
  • Policy controller:监听 Network Policy 的变化,并将 Policy 应用到相应的网络接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LM10DPQi-1610629792292)(https://github.com/feiskyer/kubernetes-handbook/raw/master/plugins/images/policy-controller.jpg)]

性能测试

下图基于Kubernetes 1.19版本测试了以下特性:

1)MTU auto config

2) 带宽性能: Pod to Pod、Pod to Service(TCP、UDP)

3)资源消耗: Pod to Pod、Pod to Service(TCP、UDP)

4)安全特性:Network Policies、 Encryption等

一文搞懂Kubernetes网络策略(下)_第1张图片

calico其他详细的能力说明,可参看官网。

五、未来展望
a. SCTP特性

支持版本: Kubernetes v1.19 [beta]

作为一个 Beta 特性,SCTP 默认是被启用的。 要在集群层面禁用 SCTP,需要为 kube-apiserver关闭特性--feature-gates=SCTPSupport=false,... 以禁用 SCTP 。 启用该特性后,用户可以将 NetworkPolicy 的 protocol 字段设置为 SCTP

⚠️ CNI插件需要支持SCTP协议

b. 待开发

截止Kubernetes v1.20 ,NetworkPolicy API 还不支持下述功能。

  • 强制集群内部流量经过某公用网关(可通过服务网格或其他代理来实现)
  • 与 TLS 相关的场景(可使用服务网格或者 Ingress 控制器)
  • 实现适用于所有名字空间或 Pods 的默认策略(如calico)
  • 高级的策略查询或者策略验证相关工具(如calico)
  • 在同一策略声明中选择目标端口范围的能力
  • 生成网络安全事件日志的能力(例如,被阻塞或接收的连接请求)
  • 禁止本地回路或指向宿主的网络流量(Pod 目前无法阻塞 localhost 访问, 它们也无法禁止来自所在节点的访问请求)。

上述需求可以通过操作系统组件(如 SELinux、OpenVSwitch、IPTables 等) 或者七层技术(Ingress 控制器、服务网格实现)及准入控制器进行功能增强,当然有兴趣的可以参考calico及OPA项目。

后续相关内容,请查看公众号:DCOS

一文搞懂Kubernetes网络策略(下)_第2张图片

六、参考文档
  • Kubernetes network policies
  • Declare Network Policy
  • Securing Kubernetes Cluster Networking
  • Kubernetes Network Policy Recipes
  • fesikyer network policy

你可能感兴趣的:(Kubernetes,kubernetes)