Kubernetes网络插件CNI学习整理

概要

  • 项目背景(XX银行客户):私有云上要在K8S上跑像mysql这类状态的数据库服务,对性能和延时都比较敏感,并不像web偏应用的无状态延时性能差点可接受。而基于overlay方式等网络性能和延时比较差,网络架构又比较复杂。并且银行对于IP网络管理需要简单可控。SR-IOV是基于硬件实现虚拟网卡,性能损失少,接近宿主机,此外有支持QOS,vlan等特性也是客户需要的。即要根据用户定制基于SR-IOV网络插件。

  • 问题: 目前kubernetes(1.8)(以后版本可能支持大)中,POD并没有网络相关的配置,kubelete 调用 CNI plugin 默认只会以CNI_ARGS传入pod_name基本信息。如果要固定分配IP地址,以及配置QOS,vlan等网络特性,没法通过CNI_ARGS方式传入,不能像volume一样在pod SPEC中配置options可选的网络参数来传入cni plugin。

    • 一种可行解决方案:声明一个POD前,先根据pod_name来在外部configMap或其他地方存放网络配置信息,定制的CNI,IPAM的网络插件根据pod_name来从外部获取配置信息。

CNI工作原理

Kubernetes指南 cni

CNI:容器网络接口

  • 网络插件是独立的可执行文件,被上层的容器管理平台调用。网络插件只有两件事情要做:把容器加入到网络以及把容器从网络中删除。
  • 调用插件的数据通过两种方式传递:环境变量和标准输入。
  • kubernetes 使用了 CNI 网络插件之后 工作流程:
    • kubernetes 先创建 pause 容器生成对应的 network namespace
    • 调用网络 driver(因为配置的是 CNI,所以会调用 CNI 相关代码
    • CNI driver 根据配置调用具体的 cni 插件
    • cni 插件给 pause 容器配置正确的网络,pod 中其他的容器都是用 pause 的网络.

Kubernetes的网络接口CNI及灵雀云的实践

  • 运维人员视角,在传统运维工作强调对IP要有很强的管控(银行等),POD需要固定IP:

    • 于运维来说,网络方面是很重要的资源,要对IP进行强管控,服务来回飘,会让他的安全感下降很多。
    • 运维服务有很多基于IP的东西,有流量和突发的监控,如果你服务的IP一直变化,通过这个IP它很难用到这个服务,相当于IP的监控就没有意义,因为根本不知道IP流量上去了是哪个服务的,很难对应到这个事。
    • 还有是对于IP安全策略没有办法做。

      • kubelet 与 CNI plugin调用逻辑图:
        cni

      • hackers-guide-kubernetes-networking

      • Kubernetes unfortunately still supports only one CNI interface per POD with one cluster-wide configuration. This is very limiting since we may want to configure multiple network interfaces per POD, potentially using different overlay solutions with different policies (subnet, security, QoS).
      • Kubelet will pass the POD name and namespace as part of the CNI_ARGS variable (for example “K8S_POD_NAMESPACE=default;K8S_POD_NAME=mytests-1227152546-vq7kw;” ). We can use this to customize the network configuration per POD o
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值