在OpenShift 3.11环境开启多网络平面
时间:2019-10-19
本文章向大家介绍在OpenShift 3.11环境开启多网络平面,主要包括在OpenShift 3.11环境开启多网络平面使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
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 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
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和eth1,分别绑定了容器网络和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容器网络定义策略
原文地址:https://www.cnblogs.com/ericnie/p/11704041.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java后端面试学习知识总结——GC
- Java后端面试学习知识总结——JVM
- Spring JDBC 框架,我的学习笔记
- 磁盘扩容
- 如何在MySQL中创建存储过程
- 磁盘扩容
- PyCharm安装疯狂打字机插件
- Java Lombok 常用注解
- Python 基础 安装 简单的输入输出 运行一个py程序
- Python 基础 数据类型 变量常量
- Java 快速排序 关于起始方向的选择问题 为什么一定要从右边开始
- Java 使用异或进行数组元素交换时的坑 返回0的原因
- Spring BindingResult获取不到结果可能的原因之一 参数顺序 没有紧挨着校验参数
- 残差收缩网络:一种深度学习故障诊断算法
- Solr学习笔记 - 关于近实时搜索