-.. _containter_orchestration_in_csit:
+.. _container_orchestration_in_csit:
Container Orchestration in CSIT
===============================
of functionality is better supported in LXC 2.1 but can be done is current
version as well.
-- CSIT code is currently using cgroup control the range of CPU cores the
- container must run on. VPP thread pinning defined vpp startup.conf.
+- CSIT code is currently using cgroup to control the range of CPU cores the
+ LXC container runs on. VPP thread pinning is defined vpp startup.conf.
Docker
~~~~~~
CSIT uses K8s and its infrastructure components like etcd to control all
phases of container based virtualized network topologies.
-**Open Questions**
-
-- Clarify the functions provided by Contiv and Calico in Ligato system?
-
Ligato
~~~~~~
**Known Issues**
-**Open Questions**
-
- Currently using a separate LF Jenkins job for building csit-centric
prod_vpp_agent docker images vs. dockerhub/ligato ones.
| | [Arguments] | ${technology} | ${image} | ${cpu_count}=${1} | ${count}=${1}
| | ...
| | ${group}= | Set Variable | VNF
- | | ${guest_dir}= | Set Variable | /mnt/host
- | | ${host_dir}= | Set Variable | /tmp
| | ${skip_cpus}= | Evaluate | ${vpp_cpus}+${system_cpus}
| | Import Library | resources.libraries.python.ContainerUtils.ContainerManager
- | | ... | engine=${technology} | WITH NAME | ${group}
+ | | ... | engine=${container_engine} | WITH NAME | ${group}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
- | | | {env}= | Create List | LC_ALL="en_US.UTF-8"
- | | | ... | DEBIAN_FRONTEND=noninteractive | ETCDV3_ENDPOINTS=172.17.0.1:2379
+ | | | ${env}= | Create List | DEBIAN_FRONTEND=noninteractive
+ | | | ${mnt}= | Create List | /tmp:/mnt/host | /dev:/dev
| | | ${cpu_node}= | Get interfaces numa node | ${nodes['${dut}']}
| | | ... | ${dut1_if1} | ${dut1_if2}
| | | Run Keyword | ${group}.Construct containers
- | | | ... | name=${dut}_${group}
- | | | ... | node=${nodes['${dut}']}
- | | | ... | host_dir=${host_dir}
- | | | ... | guest_dir=${guest_dir}
- | | | ... | image=${image}
- | | | ... | cpu_count=${cpu_count}
- | | | ... | cpu_skip=${skip_cpus}
- | | | ... | smt_used=${False}
- | | | ... | cpuset_mems=${cpu_node}
- | | | ... | cpu_shared=${False}
- | | | ... | env=${env}
+ | | | ... | name=${dut}_${group} | node=${nodes['${dut}']} | mnt=${mnt}
+ | | | ... | image=${container_image} | cpu_count=${container_cpus}
+ | | | ... | cpu_skip=${skip_cpus} | cpuset_mems=${cpu_node}
+ | | | ... | cpu_shared=${False} | env=${env} | count=${container_count}
+ | | | ... | install_dkms=${container_install_dkms}
+ | | Append To List | ${container_groups} | ${group}
Mandatory parameters to create standalone container are: ``node``, ``name``,
-``image`` [image-var]_, ``cpu_count``, ``cpu_skip``, ``smt_used``,
-``cpuset_mems``, ``cpu_shared``.
+``image`` [image-var]_, ``cpu_count``, ``cpu_skip``, ``cpuset_mems``,
+``cpu_shared``.
There is no parameters check functionality. Passing required arguments is in
coder responsibility. All the above parameters are required to calculate the
containerized VPP switch forwarding packets between NF containers. Each
NF container runs their own instance of VPP in L2XC configuration.
-Following container networking topologies are tested in CSIT |release|:
+Following container networking topologies are tested in |csit-release|:
- LXC topologies:
- Docker topologies:
- eth-l2xcbase-eth-2memif-1docker.
+ - eth-l2xcbase-eth-1memif-1docker
- Kubernetes/Ligato topologies:
- - eth-1drcl2xcbase-eth-2memif-1drcl2xc.
- - eth-1drcl2xcbase-eth-4memif-2drcl2xc.
- - eth-1drcl2bdbasemaclrn-eth-2memif-1drcl2xc.
- - eth-1drcl2bdbasemaclrn-eth-4memif-2drcl2xc.
-
+ - eth-1drcl2bdbasemaclrn-eth-2memif-1drcl2xc-1paral
+ - eth-1drcl2bdbasemaclrn-eth-2memif-2drcl2xc-1horiz
+ - eth-1drcl2bdbasemaclrn-eth-2memif-4drcl2xc-1horiz
+ - eth-1drcl2bdbasemaclrn-eth-4memif-2drcl2xc-1chain
+ - eth-1drcl2bdbasemaclrn-eth-8memif-4drcl2xc-1chain
+ - eth-1drcl2xcbase-eth-2memif-1drcl2xc-1paral
+ - eth-1drcl2xcbase-eth-2memif-2drcl2xc-1horiz
+ - eth-1drcl2xcbase-eth-2memif-4drcl2xc-1horiz
+ - eth-1drcl2xcbase-eth-4memif-2drcl2xc-1chain
+ - eth-1drcl2xcbase-eth-8memif-4drcl2xc-1chain
References
-----------
+~~~~~~~~~~
.. [lxc] `Linux Containers <https://linuxcontainers.org/>`_
.. [lxc-namespace] `Resource management: Linux kernel Namespaces and cgroups <https://www.cs.ucsb.edu/~rich/class/cs293b-cloud/papers/lxc-namespace.pdf>`_.