In addition to the default BareMetalHostProfile
object installed
with Mirantis Container Cloud, you can create custom profiles
for managed clusters using Container Cloud API.
Note
The procedure below also applies to the Container Cloud management clusters.
To create a custom bare metal host profile:
Select from the following options:
For a management cluster, log in to the bare metal seed node that will be used to bootstrap the management cluster.
For a managed cluster, log in to the local machine where you management
cluster kubeconfig
is located and where kubectl
is installed.
Note
The management cluster kubeconfig
is created automatically
during the last stage of the management cluster bootstrap.
Select from the following options:
For a management cluster, open
templates/bm/baremetalhostprofiles.yaml.template
for editing.
For a managed cluster, create a new bare metal host profile
under the templates/bm/
directory.
Edit the host profile using the example template below to meet your hardware configuration requirements:
apiVersion: metal3.io/v1alpha1
kind: BareMetalHostProfile
metadata:
name: <PROFILE_NAME>
namespace: <PROJECT_NAME>
spec:
devices:
# From the HW node, obtain the first device, which size is at least 60Gib
- device:
minSizeGiB: 60
wipe: true
partitions:
- name: bios_grub
partflags:
- bios_grub
sizeGiB: 0.00390625
wipe: true
- name: uefi
partflags:
- esp
sizeGiB: 0.2
wipe: true
- name: config-2
sizeGiB: 0.0625
wipe: true
- name: lvm_root_part
sizeGiB: 0
wipe: true
# From the HW node, obtain the second device, which size is at least 60Gib
# If a device exists but does not fit the size,
# the BareMetalHostProfile will not be applied to the node
- device:
minSizeGiB: 30
wipe: true
# From the HW node, obtain the disk device with the exact name
- device:
byName: /dev/nvme0n1
minSizeGiB: 30
wipe: true
partitions:
- name: lvm_lvp_part
sizeGiB: 0
wipe: true
# Example of wiping a device w\o partitioning it.
# Mandatory for the case when a disk is supposed to be used for Ceph back end
# later
- device:
byName: /dev/sde
wipe: true
fileSystems:
- fileSystem: vfat
partition: config-2
- fileSystem: vfat
mountPoint: /boot/efi
partition: uefi
- fileSystem: ext4
logicalVolume: root
mountPoint: /
- fileSystem: ext4
logicalVolume: lvp
mountPoint: /mnt/local-volumes/
logicalVolumes:
- name: root
sizeGiB: 0
vg: lvm_root
- name: lvp
sizeGiB: 0
vg: lvm_lvp
postDeployScript: |
#!/bin/bash -ex
echo $(date) 'post_deploy_script done' >> /root/post_deploy_done
preDeployScript: |
#!/bin/bash -ex
echo $(date) 'pre_deploy_script done' >> /root/pre_deploy_done
volumeGroups:
- devices:
- partition: lvm_root_part
name: lvm_root
- devices:
- partition: lvm_lvp_part
name: lvm_lvp
grubConfig:
defaultGrubOptions:
- GRUB_DISABLE_RECOVERY="true"
- GRUB_PRELOAD_MODULES=lvm
- GRUB_TIMEOUT=20
kernelParameters:
sysctl:
kernel.panic: "900"
kernel.dmesg_restrict: "1"
kernel.core_uses_pid: "1"
fs.file-max: "9223372036854775807"
fs.aio-max-nr: "1048576"
fs.inotify.max_user_instances: "4096"
vm.max_map_count: "262144"
Add or edit the mandatory parameters in the new BareMetalHostProfile
object. For the parameters description, see
API: BareMetalHostProfile spec.
Select from the following options:
For a management cluster, proceed with the cluster bootstrap procedure as described in Deployment Guide: Bootstrap a management cluster.
For a managed cluster:
Add the bare metal host profile to your management cluster:
kubectl --kubeconfig <pathToManagementClusterKubeconfig> -n <projectName> apply -f <pathToBareMetalHostProfileFile>
If required, further modify the host profile:
kubectl --kubeconfig <pathToManagementClusterKubeconfig> -n <projectName> edit baremetalhostprofile <hostProfileName>
Proceed with creating a managed cluster as described in Create a managed cluster.