为安全容器配置网络

通过CNI方式配置安全容器网络

CNI即Container Network Interface,是CNCF的一个项目,由一组用于配置Linux容器的网络接口的规范和库组成。

为什么需要CNI呢,现在有各种各样的容器平台,也有各种各样的网络解决方案(flannel、calico等),如果每出现一种新的解决方案,都要为容器平台和相应的网络解决方案做适配,那工作量将是巨大。一旦有新的网络方案出现,只要它能满足CNI标准,那么它就能为同样满足该协议的所有容器平台提供网络功能。

CNI插件是独立的可执行文件,被上层容器管理平台调用。

安全容器支持CNI

需要在配置文件configuration.toml中开启配置选项如下:

[netmon]
# If enabled, the network monitoring process gets started when the
# sandbox is created. This allows for the detection of some additional
# network being added to the existing network namespace, after the
# sandbox has been created.
# (default: disabled)
enable_netmon = true

# Specify the path to the netmon binary.
path = "/usr/bin/kata-netmon"

# If enabled, the runtime will not create a network namespace for shim and hypervisor processes.
# This option may have some potential impacts to your host. It should only be used when you know what you're doing.
# `disable_new_netns` conflicts with `enable_netmon`
# `disable_new_netns` conflicts with `internetworking_model=tcfilter` and `internetworking_model=macvtap`. It works only
# with `internetworking_model=none`. The tap device will be in the host network namespace and can connect to a bridge
# (like OVS) directly.
# If you are using docker, `disable_new_netns` only works with `docker run --net=none`
# (default: false)
#disable_new_netns = true

tap设备网络支持

安全容器技术是基于VM实现的,对于物理机系统来说,安全容器就相当于是一个VM,所以安全容器可以在Neutron网络中将VM通过TAP技术接入外部网络。我们这里不需要关心TAP设备的创建和网桥对接等问题,只需要将指定的TAP设备(host已经存在)热插进pause容器的VM,并更新网卡信息即可。

评价

一共有个关于的结果