从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等
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