docs/doc/source/deploy_install_guides/release/bare_metal/controller_storage_install_...

28 KiB
Raw Blame History

Install Kubernetes Platform on Standard with Controller Storage

partner

Overview

Minimum hardware requirements

starlingx

Bare Metal

Virtual

partner

Installation Prerequisites

starlingx

Bare Metal

Virtual

Several pre-requisites must be completed prior to starting the installation.

Before attempting to install , ensure that you have the the host installer ISO image file.

Get the latest ISO from the StarlingX mirror. Alternately, you can get an older release ISO from here.

partner

Prepare Servers for Installation

starlingx

Bare Metal

Virtual

Note

The following commands for host, virtual environment setup, and host power-on use KVM / virsh for virtual machine and management technology. For an alternative virtualization environment, see: Install StarlingX in VirtualBox <install_virtualbox>.

  1. Prepare virtual environment.

    Set up virtual platform networks for virtual deployment:

    bash setup_network.sh
  2. Prepare virtual servers.

    Create the XML definitions for the virtual servers required by this configuration option. This will create the XML virtual server definition for:

    • controllerstorage-controller-0
    • controllerstorage-controller-1
    • controllerstorage-worker-0
    • controllerstorage-worker-1

    The following command will start/virtually power on:

    • The 'controllerstorage-controller-0' virtual server
    • The X-based graphical virt-manager application
    bash setup_configuration.sh -c controllerstorage -i ./bootimage.iso

    If there is no X-server present errors will occur and the X-based GUI for the virt-manager application will not start. The virt-manager GUI is not absolutely required and you can safely ignore errors and continue.

partner

Install Software on Controller-0

starlingx

Bare Metal

Virtual

In the last step of std-storage-prep-servers, the controller-0 virtual server 'controllerstorage-controller-0' was started by the setup_configuration.sh command.

On the host, attach to the console of virtual controller-0 and select the appropriate installer menu options to start the non-interactive install of StarlingX software on controller-0.

Note

When entering the console, it is very easy to miss the first installer menu selection. Use ESC to navigate to previous menus, to ensure you are at the first installer menu.

virsh console controllerstorage-controller-0

Make the following menu selections in the installer:

  1. First menu: Select 'Standard Controller Configuration'
  2. Second menu: Select 'Serial Console'

Wait for the non-interactive install of software to complete and for the server to reboot. This can take 5-10 minutes depending on the performance of the host machine.

partner

Bootstrap system on controller-0

starlingx

Bare Metal

Virtual

partner

Configure controller-0

starlingx

Bare Metal

Virtual

partner

openstack

OpenStack-specific host configuration

Important

These steps are required only if the application (-openstack) will be installed.

starlingx

Bare Metal

Virtual

Important

This step is required only if the StarlingX OpenStack application (-openstack) will be installed.

  1. For OpenStack only: Assign OpenStack host labels to controller-0 in support of installing the -openstack manifest/helm-charts later:

    system host-label-assign controller-0 openstack-control-plane=enabled
  2. For OpenStack only: A vSwitch is required.

    The default vSwitch is containerized OVS that is packaged with the -openstack manifest/helm-charts. StarlingX provides the option to use OVS-DPDK on the host, however, in the virtual environment OVS-DPDK is NOT supported, only OVS is supported. Therefore, simply use the default OVS

openstack

partner

Unlock controller-0

Unlock controller-0 in order to bring it into service:

system host-unlock controller-0

Controller-0 will reboot in order to apply configuration changes and come into service. This can take 5-10 minutes, depending on the performance of the host machine.

openstack

  • For OpenStack only: Due to the additional openstack services' containers running on the controller host, the size of the docker filesystem needs to be increased from the default size of 30G to 60G.

    # check existing size of docker fs
    system host-fs-list controller-0
    # check available space (Avail Size (GiB)) in cgts-vg LVG where docker fs is located
    system host-lvg-list controller-0
    # if existing docker fs size + cgts-vg available space is less than
    # 60G, you will need to add a new disk to cgts-vg.
    
       # Get device path of BOOT DISK
       system host-show controller-0 | fgrep rootfs
    
       # Get UUID of ROOT DISK by listing disks
       system host-disk-list controller-0
    
       # Add new disk to 'cgts-vg' local volume group
       system host-pv-add controller-0 cgts-vg <DISK_UUID>
       sleep 10    # wait for disk to be added
    
       # Confirm the available space and increased number of physical
       # volumes added to the cgts-vg colume group
       system host-lvg-list controller-0
    
    # Increase docker filesystem to 60G
    system host-fs-modify controller-0 docker=60

Install software on controller-1 and worker nodes

starlingx

Bare Metal

Virtual

  1. On the host, power on the controller-1 virtual server, 'controllerstorage-controller-1'. It will automatically attempt to network boot over the management network:

    virsh start controllerstorage-controller-1
  2. Attach to the console of virtual controller-1:

    virsh console controllerstorage-controller-1

    As the controller-1 boots, a message appears on its console instructing you to configure the personality of the node.

  3. On console of virtual controller-0, list hosts to see the newly discovered controller-1 host (hostname=None):

    system host-list
    +----+--------------+-------------+----------------+-------------+--------------+
    | id | hostname     | personality | administrative | operational | availability |
    +----+--------------+-------------+----------------+-------------+--------------+
    | 1  | controller-0 | controller  | unlocked       | enabled     | available    |
    | 2  | None         | None        | locked         | disabled    | offline      |
    +----+--------------+-------------+----------------+-------------+--------------+
  4. On virtual controller-0, using the host id, set the personality of this host to 'controller':

    system host-update 2 personality=controller

    This initiates the install of software on controller-1. This can take 5-10 minutes, depending on the performance of the host machine.

  5. While waiting on the previous step to complete, start up and set the personality for 'controllerstorage-worker-0' and 'controllerstorage-worker-1'. Set the personality to 'worker' and assign a unique hostname for each.

    For example, start 'controllerstorage-worker-0' from the host:

    virsh start controllerstorage-worker-0

    Wait for new host (hostname=None) to be discovered by checking system host-list on virtual controller-0:

    system host-update 3 personality=worker hostname=worker-0

    Repeat for 'controllerstorage-worker-1'. On the host:

    virsh start controllerstorage-worker-1

    And wait for new host (hostname=None) to be discovered by checking system host-list on virtual controller-0:

    system host-update 4 personality=worker hostname=worker-1

    starlingx

    Note

    A node with Edgeworker personality is also available. See deploy-edgeworker-nodes for details.

  6. Wait for the software installation on controller-1, worker-0, and worker-1 to complete, for all virtual servers to reboot, and for all to show as locked/disabled/online in 'system host-list'.

    system host-list
    +----+--------------+-------------+----------------+-------------+--------------+
    | id | hostname     | personality | administrative | operational | availability |
    +----+--------------+-------------+----------------+-------------+--------------+
    | 1  | controller-0 | controller  | unlocked       | enabled     | available    |
    | 2  | controller-1 | controller  | locked         | disabled    | online       |
    | 3  | worker-0     | worker      | locked         | disabled    | online       |
    | 4  | worker-1     | worker      | locked         | disabled    | online       |
    +----+--------------+-------------+----------------+-------------+--------------+

partner

Configure controller-1

starlingx

Bare Metal

Virtual

partner

Unlock controller-1

Unlock controller-1 in order to bring it into service:

system host-unlock controller-1

Controller-1 will reboot in order to apply configuration changes and come into service. This can take 5-10 minutes, depending on the performance of the host machine.

openstack

  • For OpenStack only: Due to the additional openstack services containers running on the controller host, the size of the docker filesystem needs to be increased from the default size of 30G to 60G.

    # check existing size of docker fs
    system host-fs-list controller-1
    # check available space (Avail Size (GiB)) in cgts-vg LVG where docker fs is located
    system host-lvg-list controller-1
    # if existing docker fs size + cgts-vg available space is less than
    # 80G, you will need to add a new disk to cgts-vg.
    
       # Get device path of BOOT DISK
       system host-show controller-1 | fgrep rootfs
    
       # Get UUID of ROOT DISK by listing disks
       system host-disk-list controller-1
    
       # Add new disk to 'cgts-vg' local volume group
       system host-pv-add controller-1 cgts-vg <DISK_UUID>
       sleep 10    # wait for disk to be added
    
       # Confirm the available space and increased number of physical
       # volumes added to the cgts-vg colume group
       system host-lvg-list controller-1
    
    # Increase docker filesystem to 60G
    system host-fs-modify controller-1 docker=60

Configure worker nodes

starlingx

Bare Metal

Virtual

On virtual controller-0:

  1. Add the third Ceph monitor to a worker node:

    (The first two Ceph monitors are automatically assigned to controller-0 and controller-1.)

    system ceph-mon-add worker-0
  2. Wait for the worker node monitor to complete configuration:

    system ceph-mon-list
    +--------------------------------------+-------+--------------+------------+------+
    | uuid                                 | ceph_ | hostname     | state      | task |
    |                                      | mon_g |              |            |      |
    |                                      | ib    |              |            |      |
    +--------------------------------------+-------+--------------+------------+------+
    | 64176b6c-e284-4485-bb2a-115dee215279 | 20    | controller-1 | configured | None |
    | a9ca151b-7f2c-4551-8167-035d49e2df8c | 20    | controller-0 | configured | None |
    | f76bc385-190c-4d9a-aa0f-107346a9907b | 20    | worker-0     | configured | None |
    +--------------------------------------+-------+--------------+------------+------+
  3. Assign the cluster-host network to the MGMT interface for the worker nodes:

    (Note that the MGMT interfaces are partially set up automatically by the network install procedure.)

    for NODE in worker-0 worker-1; do
       system interface-network-assign $NODE mgmt0 cluster-host
    done
  4. Configure data interfaces for worker nodes.

    Important

    This step is required only if the StarlingX OpenStack application (-openstack) will be installed.

    1G Huge Pages are not supported in the virtual environment and there is no virtual NIC supporting SRIOV. For that reason, data interfaces are not applicable in the virtual environment for the Kubernetes-only scenario.

    For OpenStack only:

    DATA0IF=eth1000
    DATA1IF=eth1001
    PHYSNET0='physnet0'
    PHYSNET1='physnet1'
    SPL=/tmp/tmp-system-port-list
    SPIL=/tmp/tmp-system-host-if-list
    
    # configure the datanetworks in sysinv, prior to referencing it
    # in the ``system host-if-modify`` command'.
    system datanetwork-add ${PHYSNET0} vlan
    system datanetwork-add ${PHYSNET1} vlan
    
    for NODE in worker-0 worker-1; do
      echo "Configuring interface for: $NODE"
      set -ex
      system host-port-list ${NODE} --nowrap > ${SPL}
      system host-if-list -a ${NODE} --nowrap > ${SPIL}
      DATA0PCIADDR=$(cat $SPL | grep $DATA0IF |awk '{print $8}')
      DATA1PCIADDR=$(cat $SPL | grep $DATA1IF |awk '{print $8}')
      DATA0PORTUUID=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $2}')
      DATA1PORTUUID=$(cat $SPL | grep ${DATA1PCIADDR} | awk '{print $2}')
      DATA0PORTNAME=$(cat $SPL | grep ${DATA0PCIADDR} | awk '{print $4}')
      DATA1PORTNAME=$(cat $SPL | grep ${DATA1PCIADDR} | awk '{print $4}')
      DATA0IFUUID=$(cat $SPIL | awk -v DATA0PORTNAME=$DATA0PORTNAME '($12 ~ DATA0PORTNAME) {print $2}')
      DATA1IFUUID=$(cat $SPIL | awk -v DATA1PORTNAME=$DATA1PORTNAME '($12 ~ DATA1PORTNAME) {print $2}')
      system host-if-modify -m 1500 -n data0 -c data ${NODE} ${DATA0IFUUID}
      system host-if-modify -m 1500 -n data1 -c data ${NODE} ${DATA1IFUUID}
      system interface-datanetwork-assign ${NODE} ${DATA0IFUUID} ${PHYSNET0}
      system interface-datanetwork-assign ${NODE} ${DATA1IFUUID} ${PHYSNET1}
      set +ex
    done

OpenStack-specific host configuration

Important

This step is required only if the StarlingX OpenStack application (-openstack) will be installed.

  1. For OpenStack only: Assign OpenStack host labels to the worker nodes in support of installing the -openstack manifest/helm-charts later:

    for NODE in worker-0 worker-1; do
      system host-label-assign $NODE  openstack-compute-node=enabled
      kubectl taint nodes $NODE openstack-compute-node:NoSchedule
      system host-label-assign $NODE  openvswitch=enabled
    done

    Note

    If you have a that supports , then you can enable it by using the following:

    system host-label-assign controller-0 sriov=enabled
  2. For OpenStack only: Set up a 'instances' filesystem, which is needed for -openstack nova ephemeral disks.

    for NODE in worker-0 worker-1; do
      echo "Configuring 'instances' for Nova ephemeral storage: $NODE"
      system host-fs-add ${NODE} instances=10
    done

partner

Optionally Configure PCI-SRIOV Interfaces

starlingx

Bare Metal

Virtual

Not applicable

partner

Unlock worker nodes

Unlock worker nodes in order to bring them into service:

for NODE in worker-0 worker-1; do
   system host-unlock $NODE
done

The worker nodes will reboot in order to apply configuration changes and come into service. This can take 5-10 minutes, depending on the performance of the host machine.

If configuring Ceph Storage Backend, Add Ceph OSDs to controllers

starlingx

Bare Metal

Virtual

On virtual controller-0:

  1. Add to controller-0:

    Important

    This step requires a configured Ceph storage backend

    HOST=controller-0
    DISKS=$(system host-disk-list ${HOST})
    TIERS=$(system storage-tier-list ceph_cluster)
    OSDs="/dev/sdb"
    for OSD in $OSDs; do
       system host-stor-add ${HOST} $(echo "$DISKS" | grep "$OSD" | awk '{print $2}') --tier-uuid $(echo "$TIERS" | grep storage | awk '{print $2}')
       while true; do system host-stor-list ${HOST} | grep ${OSD} | grep configuring; if [ $? -ne 0 ]; then break; fi; sleep 1; done
    done
    
    system host-stor-list $HOST
  2. Add to controller-1:

    Important

    This step requires a configured Ceph storage backend

    HOST=controller-1
    DISKS=$(system host-disk-list ${HOST})
    TIERS=$(system storage-tier-list ceph_cluster)
    OSDs="/dev/sdb"
    for OSD in $OSDs; do
        system host-stor-add ${HOST} $(echo "$DISKS" | grep "$OSD" | awk '{print $2}') --tier-uuid $(echo "$TIERS" | grep storage | awk '{print $2}')
        while true; do system host-stor-list ${HOST} | grep ${OSD} | grep configuring; if [ $? -ne 0 ]; then break; fi; sleep 1; done
    done
    
    system host-stor-list $HOST

partner

starlingx

Next steps

partner

Complete system configuration by reviewing procedures in:

  • index-security-kub-81153c1254c3
  • index-sysconf-kub-78f0e1e9ca5a
  • index-admintasks-kub-ebc55fefc368