Start the cluster installation by creating a bootstrap kernel-based virtual machine (KVM). The bootstrap KVM creates the persistent control plane that the control-plane nodes manage. The bootstrap KVM is created as a VM using a QEMU emulator in the CSAH node.
[root@csah-pri ~]# systemctl get-default
Note: This step is necessary because the Ansible playbooks configured a DNS setup in the CSAH node.
[root@csah-pri ~]# nmcli connection modify Bridge-mgmt ipv4.dns <IP address>
[root@csah-pri ~]# systemctl restart NetworkManager
[root@csah-pri ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver <IP address>
Note: If there is no secondary management node, specify the IP address that was configured for the primary CSAH node.
To use virt-install to create KVM, the Ansible playbooks generate a command and place it in the bootstrap_command file under the /home/ansible/files directory.
Note: Configure the graphical display to ensure that the PXE menu is displayed. If no graphical menu is set, connect to the virtual console in iDRAC and run the command in step 4. Ensure that PXE is enabled through a bridge interface.
Do not change the MAC address. This address is auto generated and added in the dhcpd.conf file by the Ansible playbooks. Adding the ampersand (&) at the end ensures that the command is run in the background.
Ensure that the partition used to save the disk is of sufficient size. This example uses /home and allocates 200 G to the qcow2 image used by the bootstrap KVM. Size is a hard-coded value. Reduce the size if there is not enough space.
[root@csah-pri ~] virt-install --name bootstrapkvm --ram 20480 --vcpu 8 --disk path=/home/bootstrapvm-disk.qcow2,format=qcow2,size=200 --os-variant generic --network=bridge=br0,model=virtio,mac=52:54:00:89:91:18 --pxe --boot uefi,hd,network &
The bootstrap KVM menu is displayed, as shown in the following figure:
When the installation process is complete, KVM reboots into the hard disk, as shown in the following figure:
[core@csah-pri ~]$ ssh bootstrap sudo ss -tulpn | grep -E '6443|22623|2379'
tcp LISTEN 0 128 *:22623 *:* users:(("machine-config-",pid=6972,fd=8))
tcp LISTEN 0 128 *:6443 *:* users:(("kube-apiserver",pid=7998,fd=8))
tcp LISTEN 0 128 *:2379 *:* users:(("etcd",pid=6036,fd=5))