Multus CNI是OpenShift的容器网络接口(CNI)插件,可将多个网络接口附加到Pod。 一般,在OpenShift中,每一个Pod仅具备一个网络接口(除了回送),Multus支持建立具备多个接口的多宿主Pod。 这是经过Multus充当“meta-plugin”来完成的,它支持调用多个其余CNI插件的CNI插件。centos
如图,这样在Multus安装状况下,部署应用时能够经过annotation决定是否启用(缺省不启用),若是启用,Pod将会有两个ip,一个是容器网段ip,另外一个是macvlan获取的IP. 这样若是须要高速网络链接,就能够经过这个ip进行基于下层网络的通信。api
在OpenShift 4的版本中还会支持SR-IOV Plug-in,进一步提高网络高速性能。bash
cd /usr/share/ansible/openshift-ansible
ansible-playbook -i /etc/ansible/hosts playbooks/openshift-multinetwork/config.yml
部署完成后,发如今每一个节点除了ovs外,还有有一个daemonset:服务器
[root@master test]# oc get pods -n openshift-sdn NAME READY STATUS RESTARTS AGE kube-multus-ds-amd64-29gvf 1/1 Running 3 1d kube-multus-ds-amd64-ps4gh 1/1 Running 5 1d kube-multus-ds-amd64-zwjnr 1/1 Running 3 1d ovs-dzbjv 1/1 Running 23 23d ovs-fg96b 1/1 Running 15 23d ovs-przqm 1/1 Running 20 23d sdn-2qwrv 1/1 Running 17 23d sdn-jcldg 1/1 Running 24 23d sdn-w2nzh 1/1 Running 27 23d
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: macvlan-conf spec: config: '{ "cniVersion": "0.3.0", "type": "macvlan", "master": "ens33", "mode": "bridge", "ipam": { "type": "host-local", "subnet": "192.168.174.0/24", "rangeStart": "192.168.174.200", "rangeEnd": "192.168.174.216", "routes": [ { "dst": "0.0.0.0/0" } ], "gateway": "192.168.174.2" } }'
修改相应的网段,网卡名称,以及网管地址网络
oc create -f macvlan.yaml
apiVersion: v1 kind: Pod metadata: name: samplepod annotations: k8s.v1.cni.cncf.io/networks: macvlan-conf spec: containers: - name: samplepod command: ["/bin/bash", "-c", "sleep 2000000000000"] image: registry.example.com/centos-network
进入Pod后,经过ifconfig看到有两个网卡eth0和net1,分别绑定了容器网络和macvlan网络。架构
基于OCP外的机器访问地址能通性能
针对现有的deploymentconfig中修改为multus方式,只须要在dc中加入测试
annotations:spa
k8s.v1.cni.cncf.io/networks: macvlan-conf插件
Pod启动之后自动获取macvlan地址并设置网关。