1.整体架构

Multus CNI是OpenShift的容器网络接口(CNI)插件,可将多个网络接口附加到Pod。 通常,在OpenShift中,每个Pod仅具有一个网络接口(除了回送),Multus支持创建具有多个接口的多宿主Pod。 这是通过Multus充当“meta-plugin”来完成的,它支持调用多个其他CNI插件的CNI插件。

如图,这样在Multus安装情况下,部署应用时可以通过annotation决定是否启用(缺省不启用),如果启用,Pod将会有两个ip,一个是容器网段ip,另一个是macvlan获取的IP. 这样如果需要高速网络连接,就可以通过这个ip进行基于下层网络的通讯。

在OpenShift 4的版本中还会支持SR-IOV Plug-in,进一步提升网络高速性能。

2.Multus离线部署安装

  • 导入镜像multus-1.tar,multus-2.tar, 将cni-plugins-amd64-v0.7.1.tgz放置在Web服务器
  • 修改playbooks/openshift-multinetwork/config.yml以及下面的部署文件
  • 运行部署脚本
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 / Running 1d
kube-multus-ds-amd64-ps4gh / Running 1d
kube-multus-ds-amd64-zwjnr / Running 1d
ovs-dzbjv / Running 23d
ovs-fg96b / Running 23d
ovs-przqm / Running 23d
sdn-2qwrv / Running 23d
sdn-jcldg / Running 23d
sdn-w2nzh / Running 23d

3.应用部署

  • 创建一个macvlan.yaml文件
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
  • 创建一个测试的Pod
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:

k8s.v1.cni.cncf.io/networks: macvlan-conf

Pod启动以后自动获取macvlan地址并设置网关。

4.适用场景和网络隔离

  • 不管是否启用multus, OVS容器网络始终存在。
  • Multus如果采用macvlan,走的是底层网络,网络带宽损耗为0。(已在自己环境验证)
  • 如果应用的Pod需要高速的带宽传输或者对于网络性能敏感类应用,可以通过multus macvlan模式
  • 如果基于macvlan模式获取ip,网络隔离需要依赖于IaaS的网络隔离策略
  • 如果需要基于细粒度的网络控制,通过OpenShift OVS容器网络定义策略

在OpenShift 3.11环境开启多网络平面的更多相关文章

  1. Neutron VxLAN + Linux Bridge 环境中的网络 MTU

    1. 基础知识 1.1 MTU   一个网络接口的 MTU 是它一次所能传输的最大数据块的大小.任何超过MTU的数据块都会在传输前分成小的传输单元.MTU 有两个测量层次:网络层和链路层.比如,网络层 ...

  2. wamp集成环境 开启rewrite伪静态支持

    什么是伪静态 伪静态就是:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面. 伪静态的目的 最主要的就是迎合搜索引擎方便搜索引擎蜘蛛(Spider) ...

  3. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 —7.网络服务Neutron配置

    网络服务Neutron本章节结束如何安装并配置网络服务(neutron)采用:ref:`provider networks <network1>`或:ref:`self-service n ...

  4. Qemu搭建ARM vexpress开发环境(三)----NFS网络根文件系统

    Qemu搭建ARM vexpress开发环境(三)----NFS网络根文件系统 标签(空格分隔): Qemu ARM Linux 经过上一篇<Qemu搭建ARM vexpress开发环境(二)- ...

  5. openshift 3.11安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  6. openshift 3.11 安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  7. wamp集成环境开启rewrite伪静态支持

    wamp集成环境在安装完后,默认是没有开启伪静态的,所以有时把项目部署进去时如果源码里包含.htaccess文件的话,可能会出现500错误,这一般是因为不支持伪静态造成的,解决这个问题的办法就是开启伪 ...

  8. WIN7使用技巧 让电脑变身WiFi热点,让手机、笔记本共享上网,如何开启无线网络,共享无线网络

    将win7电脑变身WIFI热点,让手机.笔记本共享上网 用win7建立无线局域网,可以共享上网可以局域网游戏. 开启windows 7的隐藏功能:虚拟WIFI和SoftAP(即虚拟无线AP),就可以让 ...

  9. 如何在 Internet Explorer 11中开启 WebGL

    原文地址:http://www.hiwebgl.com/?p=1210 国外开发者Francois Remy在泄露版Windows Blue附带的Internet Explorer 11中发现,Web ...

随机推荐

  1. seaborn(1)---画关联图

    将 Seaborn 提供的样式声明代码 sns.set() 放置在绘图前,就可以设置图像的样式 sns., color_codes=False, rc=None) context= 参数控制着默认的画 ...

  2. web渗透—xss攻击如何防御

    1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...

  3. JVM 性能调优工具

    jdk自带的工具,在macOs系统中的目录位置(jdk具体版本位置要替换):/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Ho ...

  4. Find the Weak Connected Component in the Directed Graph

    Description Find the number Weak Connected Component in the directed graph. Each node in the graph c ...

  5. [Javascript] ES6 Class Constructors and the Super Keyword

    When the ES6 class shipped back in 2015, a number of additional keywords came with it. Two of these ...

  6. su与su -,sudo 的区别

    "sudo" , "su" , "su - " 区别: 一.sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用 ...

  7. 洛谷 P1099 树网的核+P2491 [SDOI2011]消防

    写在前面:由于是双倍经验就放一块了,虽然数据范围差的有点大. 题目链接 题意:在树的直径上选择一条长度不超过s的路径使这条路径上的点到树上任意点的最大距离最小. 这题数据好像非常水,我写了上界n^2不 ...

  8. xsxsxs

    def getdecrype(l): a= length="" ): if(l[a]=="x"): break else: length+=l[a] a+= h ...

  9. OpenFOAM——圆柱绕流对流换热

    本算例来自<ANSYS FLUENT技术基础与工程应用:流动传热与环境污染控制领域> TOP和DOWN为对称边界(symmetry),入口速度为0.01m/s,入口温度为300K,圆柱温度 ...

  10. 模拟26A 题解

    A. marshland 考试时想到了网络流,然而不会建图,就死了. 正解是最大费用可行流. 比较容易想到的是将每个点拆为两个点, s连没有危险值的入点, 没有危险值的入点连有危险值的入点,入点出点之 ...