Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Bug Reference

CLOUDSTACK-6122

Introduction

Purpose

LXC support was added to CloudStack in 4.2 release. FS : LXC Support in CloudstackThe objective of this feature is to enhance LXC support by adding more functionality. This document contains design specification of the enhancements.

References

LXC Support in Cloudstack

CLOUDSTACK-922

Feature Specifications

LXC was implemented as hypervisor in cloudstack. Following operations are currently supported:

...

  • ROOT Disk: NFS and local storage is supported for ROOT Disk
  • DATA disk: Support data disk while creating container. Only Ceph based data disk will be supported
  • Support attach/detach disk. attach-disk and detach-disk are supported by libvirt (since 1.0.2) for lxc. Same will be leveraged to support attach/detach data volume.
  • Support Ceph storage that will appear as block device on host using RBD
    • Configure and create Ceph RBD on host and make it visible in the container using host passthrough configuration
    • <hostdev mode='capabilities' type='storage'>
      <source>
      <block>/dev/rbd1</block>
      </source>
      </hostdev>
    Migrate volume of a stopped container. Container root volume will be migrated across primary storages by copying compressed tar.gz of the root file system.
  • Support for other block devices: Any block device if made available on the host, can be made available to the container also. Currently only Ceph RBD is supported.
Ceph RBD
  • Libvirt packages with RDB support have to be installed on host
  • Enable ceph repo to install rbd dependencies

[ceph-noarch]

name=Ceph noarch packages

baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch 

  • When RBD storage pool is added as primary storage following xml is sent for pool creation on host

<pool type='rbd'>
<name>ae84381b-c273-3c8e-925f-8e384d3216b4</name>
<uuid>ae84381b-c273-3c8e-925f-8e384d3216b4</uuid>
<source>
<host name='10.147.59.89' port='6789'/> - Monitor host
<name>rbd</name> - Pool name
<auth username='admin' type='ceph'>
<secret uuid='ae84381b-c273-3c8e-925f-8e384d3216b4'/> - secret containing auth key
</auth>
</source>
</pool>

  • Secret contains authentication details. Secret is created when RBD pool is created

<secret ephemeral='no' private='no'>
<uuid>ae84381b-c273-3c8e-925f-8e384d3216b4</uuid>
<usage type='ceph'>
<name>admin@10.147.59.89:6789/rbd</name>
</usage>
</secret>

  • When Cloudstack created rbd Data disks, rbd images are created in the pool
  • Rbd image is mappped on to host using "rbd map" command
  • Mapped rbd device on host is then made available to container during attach disk

 

Template

Registering a template and  Launching container from template is already supported. Additional functionality:

  • Create template from ROOT volume. Template is a compressed tar.gz of the root file system. Create template from volume will copy the tar.gz of the root file system to secondary storage.

...

  • Register an ISO: Register an ISO and download on to secondary storage
  • Attach/Detach an ISO to a container: Involves copying the ISO from secondary to primary and the attached the ISO to container by mounting (using attach-device).

Networking

 KVM system Vms are used and both VPC and non-VPC are supported. Networking services Source NAT, DNS, PF, LB, Vpn, Firewall, Security Groups, Network ACL are supported. Additionally nic hot-plug to userVm (container) is also supported.   Secondary IPs are also supported.

Console Access

CLOUDSTACK-4990

...

<graphics type="vnc" port="-1" autoport="yes" listen="10.147.28.11" keymap="en-us"/>

Database

No changes

New APIs

None

Limitations

  • No Console access
  • No Live migration
  • No migration across clusters
  • No snapshot support

 

Open Issues

...

  • No upload/download volume support
  • No template creation from ROOT volume
  • No ISO support for create Vm

 

Additional steps 

Following steps need to be performed before installing agent on LXC host

  • on RHEL7, NetworkManager resets mac address of the Vm: CLOUDSTACK-7515
  • Disable NetworkManager  to work-around this issue:
    • service NetworkManager stop
    • chkconfig NetworkManager off

Versions

LXC version 1.0

Libvirt Version 1.2.11.1

Open Issues

LXC hosts need not be hvm enabled. So, a VM can also act as a host for LXC conatiners. Currently, cloudstack doesn't allow hosts which are not hvm enabled. This check has to be relaxed for LXC.