• 在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和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容器网络定义策略
  • 相关阅读:
    linux的ls命令输出结果的逐条解释
    dubbo用途介绍
    dubbo有什么作用
    来自19岁女孩和软件开发人员的建议
    C++的反思[转]
    mysql各种引擎对比、实战
    俗话:MySQL索引
    Mysql 30条军规
    MySQL事务原理&实战【官方精译】
    php-msf 源码解读【转】
  • 原文地址:https://www.cnblogs.com/ericnie/p/11704041.html
Copyright © 2020-2023  润新知