Hongbin Lu 0f5e065855 Configure Zun for Placement (Train+)
After the integration with placement [1], we need to configure how
zun-compute is going to work with nova-compute.

* If zun-compute and nova-compute run on the same compute node,
  we need to set 'host_shared_with_nova' as true so that Zun
  will use the resource provider (compute node) created by nova.
  In this mode, containers and VMs could claim allocations against
  the same resource provider.
* If zun-compute runs on a node without nova-compute, no extra
  configuration is needed. By default, each zun-compute will create
  a resource provider in placement to represent the compute node
  it manages.

[1] https://blueprints.launchpad.net/zun/+spec/use-placement-resource-management

Change-Id: I2d85911c4504e541d2994ce3d48e2fbb1090b813
2019-09-10 01:47:15 +00:00

3.2 KiB

Zun - Container service

"Zun is an OpenStack Container service. It aims to provide an OpenStack API for provisioning and managing containerized workload on OpenStack." For more details about Zun, see OpenStack Zun Documentation.

Preparation and Deployment

By default Zun and its dependencies are disabled. In order to enable Zun, you need to edit globals.yml and set the following variables:

enable_zun: "yes"
enable_kuryr: "yes"
enable_etcd: "yes"
enable_placement: "yes"
docker_configure_for_zun: "yes"

Docker reconfiguration requires reboostrapping before deploy. Make sure you understand the consequences of restarting Docker. Please see rebootstrapping for details. If it's initial deploy, then there is nothing to worry about because it's initial bootstrapping as well and there are no running services to affect.

$ kolla-ansible bootstrap-servers

Finally deploy:

$ kolla-ansible deploy

Verification

  1. Generate the credentials file:

    $ kolla-ansible post-deploy
  2. Source credentials file:

    $ . /etc/kolla/admin-openrc.sh
  3. Download and create a glance container image:

    $ docker pull cirros
    $ docker save cirros | openstack image create cirros --public \
      --container-format docker --disk-format raw
  4. Create zun container:

    $ zun create --name test --net network=demo-net cirros ping -c4 8.8.8.8

    Note

    Kuryr does not support networks with DHCP enabled, disable DHCP in the subnet used for zun containers.

    $ openstack subnet set --no-dhcp <subnet>
  5. Verify container is created:

    $ zun list
    
    +--------------------------------------+------+---------------+---------+------------+------------+-------+
    | uuid                                 | name | image         | status  | task_state | addresses  | ports |
    +--------------------------------------+------+---------------+---------+------------+------------+-------+
    | 3719a73e-5f86-47e1-bc5f-f4074fc749f2 | test | cirros        | Created | None       | 172.17.0.3 | []    |
    +--------------------------------------+------+---------------+---------+------------+------------+-------+
  6. Start container:

    $ zun start test
    Request to start container test has been accepted.
  7. Verify container:

    $ zun logs test
    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=45 time=96.396 ms
    64 bytes from 8.8.8.8: seq=1 ttl=45 time=96.504 ms
    64 bytes from 8.8.8.8: seq=2 ttl=45 time=96.721 ms
    64 bytes from 8.8.8.8: seq=3 ttl=45 time=95.884 ms
    
    --- 8.8.8.8 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max = 95.884/96.376/96.721 ms

For more information about how zun works, see zun, OpenStack Container service.