Оператор директора OSP создает набор пользовательских определений ресурсов в дополнение к OpenShift для управления ресурсами, обычно создаваемыми UnderCloud Tripleo. Эти CRD разделены на два типа для обеспечения аппаратного обеспечения и конфигурации программного обеспечения.
Оператор директора OSP устанавливается и управляется через Manager Lifecycle Operator Oper Operator. OLM установлен автоматически с вашей установкой OpenShift. Чтобы получить последний снимок оператора OSP Director, вам необходимо создать соответствующий каталогсурсе, операторную группу и подписку для управления установкой с помощью OLM:
oc new-project openstack
apiVersion : operators.coreos.com/v1alpha1
kind : CatalogSource
metadata :
name : osp-director-operator-index
namespace : openstack
spec :
sourceType : grpc
image : quay.io/openstack-k8s-operators/osp-director-operator-index:0.0.1
apiVersion : operators.coreos.com/v1
kind : OperatorGroup
metadata :
name : " osp-director-operator-group "
namespace : openstack
spec :
targetNamespaces :
- openstack
apiVersion : operators.coreos.com/v1alpha1
kind : Subscription
metadata :
name : osp-director-operator-subscription
namespace : openstack
spec :
config :
env :
- name : WATCH_NAMESPACE
value : openstack,openshift-machine-api,openshift-sriov-network-operator
source : osp-director-operator-index
sourceNamespace : openstack
name : osp-director-operator
startingCSV : osp-director-operator.v0.0.1
channel : alpha
У нас есть скрипт для автоматизации установки здесь с OLM для определенного тега: скрипт для автоматизации установки
ПРИМЕЧАНИЕ . В какой -то момент в будущем мы можем интегрироваться в OperatorHub, чтобы оператор директора OSP был доступен автоматически в ваших источниках по умолчанию OLM по умолчанию.
Создайте базовый объем данных RHEL до развертывания OpenStack. Это будет использоваться виртуальными машинами контроллера, которые обеспечиваются с помощью виртуализации OpenShift. Подход к этому следующим образом:
virtctl
: sudo subscription-manager repos --enable=cnv-2.6-for-rhel-8-x86_64-rpms
sudo dnf install -y kubevirt-virtctl
curl -O http://download.devel.redhat.com/brewroot/packages/rhel-guest-image/8.4/1168/images/rhel-guest-image-8.4-1168.x86_64.qcow2
dnf install -y libguestfs-tools-c
virt-customize -a < rhel guest image > --run-command ' sed -i -e "s/^(kernelopts=.*)net.ifnames=0 (.*)/12/" /boot/grub2/grubenv '
virt-customize -a < rhel guest image > --run-command ' sed -i -e "s/^(GRUB_CMDLINE_LINUX=.*)net.ifnames=0 (.*)/12/" /etc/default/grub '
/etc/hosts
: <cluster ingress VIP> cdi-uploadproxy-openshift-cnv.apps.<cluster name>.<domain name>
virtctl
: virtctl image-upload dv openstack-base-img -n openstack --size=50Gi --image-path=<local path to image> --storage-class <desired storage class> --insecure
storage-class
выше, выберите тот, который вы хотите использовать из показанных в: oc get storageclass
Определите свой пользовательский ресурс OpenStcknetConfig. По крайней мере одна сеть требуется для CTLPLANE. При желании вы можете определить несколько сетей в CR, которые будут использоваться с архитектурой изоляции сети Tripleo. В дополнение к определению сети, OpenStackNet включает информацию, которая используется для определения политики конфигурации сети, используемой для прикрепления любых виртуальных машин к этой сети с помощью виртуализации OpenShift. Ниже приведен пример простой сети IPv4 CTLPLANE, которая использует мост Linux для конфигурации хоста.
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackNetConfig
metadata :
name : openstacknetconfig
spec :
attachConfigurations :
br-osp :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp7s0
description : Linux bridge with enp7s0 as a port
name : br-osp
state : up
type : linux-bridge
mtu : 1500
# optional DnsServers list
dnsServers :
- 192.168.25.1
# optional DnsSearchDomains list
dnsSearchDomains :
- osptest.test.metalkube.org
- some.other.domain
# DomainName of the OSP environment
domainName : osptest.test.metalkube.org
networks :
- name : Control
nameLower : ctlplane
subnets :
- name : ctlplane
ipv4 :
allocationEnd : 192.168.25.250
allocationStart : 192.168.25.100
cidr : 192.168.25.0/24
gateway : 192.168.25.1
attachConfiguration : br-osp
# optional: (OSP17 only) specify all phys networks with optional MAC address prefix, used to
# create static OVN Bridge MAC address mappings. Unique OVN bridge mac address per node is
# dynamically allocated by creating OpenStackMACAddress resource and create a MAC per physnet per node.
# - If PhysNetworks is not provided, the tripleo default physnet datacentre gets created.
# - If the macPrefix is not specified for a physnet, the default macPrefix "fa:16:3a" is used.
# - If PreserveReservations is not specified, the default is true.
ovnBridgeMacMappings :
preserveReservations : True
physNetworks :
- macPrefix : fa:16:3a
name : datacentre
- macPrefix : fa:16:3b
name : datacentre2
# optional: configure static mapping for the networks per nodes. If there is none, a random gets created
reservations :
controller-0 :
macReservations :
datacentre : fa:16:3a:aa:aa:aa
datacentre2 : fa:16:3b:aa:aa:aa
compute-0 :
macReservations :
datacentre : fa:16:3a:bb:bb:bb
datacentre2 : fa:16:3b:bb:bb:bb
Если вы напишите вышеупомянутый YAML в файл с именем networkconfig.yaml, вы можете создать OpenStCkTeCtonfig с помощью этой команды:
oc create -n openstack -f networkconfig.yaml
Для использования сетевой изоляции с использованием VLAN добавьте идентификатор VLAN в спецификацию определения сети
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackNetConfig
metadata :
name : openstacknetconfig
spec :
attachConfigurations :
br-osp :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp7s0
description : Linux bridge with enp7s0 as a port
name : br-osp
state : up
type : linux-bridge
mtu : 1500
br-ex :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp6s0
description : Linux bridge with enp6s0 as a port
name : br-ex-osp
state : up
type : linux-bridge
mtu : 1500
# optional DnsServers list
dnsServers :
- 192.168.25.1
# optional DnsSearchDomains list
dnsSearchDomains :
- osptest.test.metalkube.org
- some.other.domain
# DomainName of the OSP environment
domainName : osptest.test.metalkube.org
networks :
- name : Control
nameLower : ctlplane
subnets :
- name : ctlplane
ipv4 :
allocationEnd : 192.168.25.250
allocationStart : 192.168.25.100
cidr : 192.168.25.0/24
gateway : 192.168.25.1
attachConfiguration : br-osp
- name : InternalApi
nameLower : internal_api
mtu : 1350
subnets :
- name : internal_api
attachConfiguration : br-osp
vlan : 20
ipv4 :
allocationEnd : 172.17.0.250
allocationStart : 172.17.0.10
cidr : 172.17.0.0/24
- name : External
nameLower : external
subnets :
- name : external
ipv6 :
allocationEnd : 2001:db8:fd00:1000:ffff:ffff:ffff:fffe
allocationStart : 2001:db8:fd00:1000::10
cidr : 2001:db8:fd00:1000::/64
gateway : 2001:db8:fd00:1000::1
attachConfiguration : br-ex
- name : Storage
nameLower : storage
mtu : 1350
subnets :
- name : storage
ipv4 :
allocationEnd : 172.18.0.250
allocationStart : 172.18.0.10
cidr : 172.18.0.0/24
vlan : 30
attachConfiguration : br-osp
- name : StorageMgmt
nameLower : storage_mgmt
mtu : 1350
subnets :
- name : storage_mgmt
ipv4 :
allocationEnd : 172.19.0.250
allocationStart : 172.19.0.10
cidr : 172.19.0.0/24
vlan : 40
attachConfiguration : br-osp
- name : Tenant
nameLower : tenant
vip : False
mtu : 1350
subnets :
- name : tenant
ipv4 :
allocationEnd : 172.20.0.250
allocationStart : 172.20.0.10
cidr : 172.20.0.0/24
vlan : 50
attachConfiguration : br-osp
При использовании VLAN для выделения сети с Linux-Bridge
Примечание . Чтобы использовать Jumbo рамки для моста, создайте конфигурацию для устройства для настройки Correnct MTU:
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackNetConfig
metadata :
name : openstacknetconfig
spec :
attachConfigurations :
br-osp :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp7s0
description : Linux bridge with enp7s0 as a port
name : br-osp
state : up
type : linux-bridge
mtu : 9000
- name : enp7s0
description : Configuring enp7s0 on workers
type : ethernet
state : up
mtu : 9000
Создайте ConfigMaps, которые определяют любые пользовательские тепловые среды, шаблоны тепла и пользовательские роли -файл (имя должно быть roles_data.yaml
), используемые для конфигурации сети Tripleo. Любой администратор, определенные файлы тепловой среды, могут быть предоставлены в ConfigMap и будут использоваться в качестве соглашения в последующих шагах, используемых для создания теплового стека для развертывания Overcloud. В качестве соглашения в каждой установке директора OSP будет использоваться 2 ConfigMaps с именем heat-env-config
и tripleo-tarball-config
для предоставления этой информации. ConfigMap heat-env-config
содержит все файлы среды развертывания, где каждый файл добавляется как -e file.yaml
в команду openstack stack create
. Хороший пример:
«Карта конфигурации тарбола» может использоваться для обеспечения (бинарных) тарболов, которые извлечены в тройных газетных образцах при получении пьес. Каждый брелок должен содержать каталог файлов относительно корня каталога THT. Вы захотите хранить такие вещи, как следующие примеры в карте конфигурации, содержащей пользовательские тарболы:
Файлы с сети-конфигурацией.
Среда с чистой конфигурацией
ПРИМЕЧАНИЕ . Файлы Net-Config для виртуальных машин создаются оператором, но могут быть перезаписаны с помощью «карты конфигурации Tarball». Чтобы перезаписать предварительно Рендерированный сетевой конфигрирование. Используйте <role lowercase>-nic-template.yaml
Имя файла для OSP16.2 или <role lowercase>-nic-template.j2
для OSP17. ПРИМЕЧАНИЕ . Имена сетевых интерфейсов для виртуальной машины, созданной контроллером OpenStCkVMSet, алфавитно упорядочены сетью именами, назначенными роли виртуальной машины. Исключением является сетевой интерфейс default
VM POD, который всегда будет первым интерфейсом. Полученный раздел Inteface определения виртуальной машины будет выглядеть следующим образом:
interfaces :
- masquerade : {}
model : virtio
name : default
- bridge : {}
model : virtio
name : ctlplane
- bridge : {}
model : virtio
name : external
- bridge : {}
model : virtio
name : internalapi
- bridge : {}
model : virtio
name : storage
- bridge : {}
model : virtio
name : storagemgmt
- bridge : {}
model : virtio
name : tenant
С этим интерфейс CTLPLANE - NIC2, внешний NIC3, ... и так далее.
Примечание : FIP -трафик не переходит в сеть арендаторов VLAN с ML2/OVN и DVR. DVR включен по умолчанию. Если вам нужны сети арендаторов VLAN с OVN, вы можете отключить DVR. Чтобы отключить DVR, включите следующие строки в файл среды:
parameter_defaults :
NeutronEnableDVR : false
Поддержка «распределенного трафика VLAN в OVN» отслеживается в управлении MAC -адресами для «Добавить поддержку в Tripleo для распределенного трафика VLAN в OVN» (https://bugs.launchpad.net/tripleo/+bug/1881593)
[GIT Repo Config Map] Эта конфигурация содержит ключ SSH и URL для GIT Repo, используемого для хранения сгенерированных игроков (ниже)
После настройки вышеуказанного шаблона/примеров для вашей среды вы можете создать ConfigMaps как для конфигурапа «тепло-env-config», так и для «Tripleo-tarball-config» (Tarballs), используя эти примеры команды в файлах, содержащих каждый соответствующий тип конфигурации. (Один каталог для каждого типа конфигурации):
# create the configmap for heat-env-config
oc create configmap -n openstack heat-env-config --from-file=heat-env-config/ --dry-run=client -o yaml | oc apply -f -
# create the configmap containing a tarball of t-h-t network config files. NOTE: these files may overwrite default t-h-t files so keep this in mind when naming them.
cd < dir with net config files >
tar -cvzf net-config.tar.gz * .yaml
oc create configmap -n openstack tripleo-tarball-config --from-file=tarball-config.tar.gz
# create the Git secret used for the repo where Ansible playbooks are stored
oc create secret generic git-secret -n openstack --from-file=git_ssh_identity= < path to git id_rsa > --from-literal=git_url= < your git server URL (git@...) >
(Необязательно) Создайте секрет для вашего OpenStckControlplane. Этот секрет предоставит пароль по умолчанию для вашей виртуальной машины и Baremetal Hosts. Если не будет предоставлен секрет, вы сможете войти в систему только с клавишами SSH, определенными в секрете OSP-Controlplane-SSH-Keys.
apiVersion : v1
kind : Secret
metadata :
name : userpassword
namespace : openstack
data :
# 12345678
NodeRootPassword : MTIzNDU2Nzg=
Если вы напишите вышеуказанный YAML в файл с именем ctlplane-secret.yaml, вы можете создать секрет с помощью этой команды:
oc create -n openstack -f ctlplane-secret.yaml
Определите свой пользовательский ресурс OpenStCkControlPlane. Пользовательский ресурс OpenStackControlplane предоставляет центральное место для создания и масштабирования виртуальных машин, используемых для контроллеров OSP, а также любые дополнительные виртуальные сети для вашего развертывания. По крайней мере 1 контроллер виртуальной машины требуется для основной демонстрационной установки, и рекомендуется рекомендовать руководство по высокой доступности OSP 3 VMS.
ПРИМЕЧАНИЕ . Если в качестве базы используется в качестве базы для развертывания виртуальных машин OpenStStCkControlPlane, обязательно убрать параметр ядра net.ifNames = 0 из изображения, чтобы иметь именование сетевого интерфейса BioSDEV. Это можно сделать так:
dnf install -y libguestfs-tools-c
virt-customize -a bms-image.qcow2 --run-command ' sed -i -e "s/^(kernelopts=.*)net.ifnames=0 (.*)/12/" /boot/grub2/grubenv '
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackControlPlane
metadata :
name : overcloud
namespace : openstack
spec :
openStackClientImageURL : quay.io/openstack-k8s-operators/rhosp16-openstack-tripleoclient:16.2_20210713.1
openStackClientNetworks :
- ctlplane
- external
- internalapi
# openStackClientStorageClass must support RWX
# https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes
openStackClientStorageClass : host-nfs-storageclass
passwordSecret : userpassword
gitSecret : git-secret
virtualMachineRoles :
controller :
roleName : Controller
roleCount : 3
networks :
- ctlplane
- internalapi
- external
- tenant
- storage
- storagemgmt
cores : 6
memory : 12
rootDisk :
diskSize : 50
baseImageVolumeName : openstack-base-img
# storageClass must support RWX to be able to live migrate VMs
storageClass : host-nfs-storageclass
storageAccessMode : ReadWriteMany
# When using OpenShift Virtualization with OpenShift Container Platform Container Storage,
# specify RBD block mode persistent volume claims (PVCs) when creating virtual machine disks. With virtual machine disks,
# RBD block mode volumes are more efficient and provide better performance than Ceph FS or RBD filesystem-mode PVCs.
# To specify RBD block mode PVCs, use the 'ocs-storagecluster-ceph-rbd' storage class and VolumeMode: Block.
storageVolumeMode : Filesystem
# Optional
# DedicatedIOThread - Disks with dedicatedIOThread set to true will be allocated an exclusive thread.
# This is generally useful if a specific Disk is expected to have heavy I/O traffic, e.g. a database spindle.
dedicatedIOThread : false
additionalDisks :
# name must be uniqe and must not be rootDisk
- name : dataDisk1
diskSize : 100
storageClass : host-nfs-storageclass
storageAccessMode : ReadWriteMany
storageVolumeMode : Filesystem
# Optional block storage settings
# IOThreadsPolicy - IO thread policy for the domain. Currently valid policies are shared and auto.
# However, if any disk requests a dedicated IOThread, ioThreadsPolicy will be enabled and default to shared.
# When ioThreadsPolicy is set to auto IOThreads will also be "isolated" from the vCPUs and placed on the same physical CPU as the QEMU emulator thread.
# An ioThreadsPolicy of shared indicates that KubeVirt should use one thread that will be shared by all disk devices.
ioThreadsPolicy : auto
# Block Multi-Queue is a framework for the Linux block layer that maps Device I/O queries to multiple queues.
# This splits I/O processing up across multiple threads, and therefor multiple CPUs. libvirt recommends that the
# number of queues used should match the number of CPUs allocated for optimal performance.
blockMultiQueue : false
Если вы напишите вышеуказанный YAML в файл с именем openstackcontrolplane.yaml, вы можете создать OpenStCkControlPlane с помощью этой команды:
oc create -f openstackcontrolplane.yaml
Примечание виртуальных машин в одном и том же VMSE (роль VM) распределяется по всем имеющимся узлам рабочих, используя правило антиффинности POD (PrefendredDuringSchedulingIgnedDuringExecution). При этом все еще возможно, что несколько виртуальных машин роли оказываются на одном и том же рабочем узле, если нет других ресурсов (например, перезагрузка работника во время обновления). Не происходит автоматической живой миграции, если, например, узел появляется после технического обслуживания/перезагрузки. При следующем запросе планирования виртуальная машина снова перемещается.
Определите OpenStackBareMetalset, чтобы масштабировать OSP Compute Hoss. Ресурс OpenStackBareMetal может использоваться для определения и масштабирования вычислений ресурсов и, опционально использоваться для определения и масштабирования хостов Baremetal для других типов ролей Tripleo. Пример ниже определяет один вычисленный хост, который будет создан.
ПРИМЕЧАНИЕ . Если в качестве базы используется Rhel-Guest-Image для развертывания вычислительных узлов OpenStackBareMetalSet, обязательно удалите параметр ядра net.ifNames = 0, чтобы иметь именование сетевого интерфейса BioSDEV. Это можно сделать так:
dnf install -y libguestfs-tools-c
virt-customize -a bms-image.qcow2 --run-command ' sed -i -e "s/^(kernelopts=.*)net.ifnames=0 (.*)/12/" /boot/grub2/grubenv '
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBaremetalSet
metadata :
name : compute
namespace : openstack
spec :
# How many nodes to provision
count : 1
# The image to install on the provisioned nodes. NOTE: needs to be accessible on the OpenShift Metal3 provisioning network.
baseImageUrl : http://host/images/rhel-image-8.4.x86_64.qcow2
# NOTE: these are automatically created via the OpenStackControlplane CR above
deploymentSSHSecret : osp-controlplane-ssh-keys
# The interface on the nodes that will be assigned an IP from the mgmtCidr
ctlplaneInterface : enp7s0
# Networks to associate with this host
networks :
- ctlplane
- internalapi
- tenant
- storage
roleName : Compute
passwordSecret : userpassword
Если вы напишите вышеуказанный YAML в файл с именем Compute.yaml, вы можете создать OpenStackBareMetalSet с помощью этой команды:
oc create -f compute.yaml
Регистрация узлов (зарегистрируйте системы Overcloud на необходимые каналы)
Подождите, пока вышеупомянутый ресурс завершит развертывание (Compute и ControlPane). Как только ресурсы закончат развертывание, перейти с регистрацией узлов.
Используйте процедуру, как описано в 5.9. Запуск регистрации на основе Ansible вручную делает это.
Примечание. Мы рекомендуем использовать ручную регистрацию, поскольку она работает независимо от выбора базового изображения. Если вы используете Overcloud-Full в качестве изображения базового развертывания, то автоматическая регистрация RHSM может использоваться с помощью роли/файла среды RHSM.yaml в качестве альтернативы этому подходу.
oc rsh openstackclient
bash
cd /home/cloud-admin
< create the ansible playbook for the overcloud nodes - e.g. rhsm.yaml >
# register the overcloud nodes to required repositories
ansible-playbook -i /home/cloud-admin/ctlplane-ansible-inventory ./rhsm.yaml
(Необязательно) Создайте роли файл a) Используйте стручок OpenStackClient, чтобы сгенерировать пользовательский файл ролей
oc rsh openstackclient
unset OS_CLOUD
cd /home/cloud-admin/
openstack overcloud roles generate Controller ComputeHCI > roles_data.yaml
exit
б) Скопируйте файл пользовательских ролей из модуля OpenStackClient
oc cp openstackclient:/home/cloud-admin/roles_data.yaml roles_data.yaml
Обновите tarballConfigMap
ConfigMap, чтобы добавить файл roles_data.yaml
в Tarball и обновите ConfigMap.
ПРИМЕЧАНИЕ . Обязательно используйте roles_data.yaml
в качестве имени файла.
Определите OpenStCkConfigGenerator для создания Ansible Playbooks для развертывания кластера OSP.
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackConfigGenerator
metadata :
name : default
namespace : openstack
spec :
enableFencing : False
imageURL : quay.io/openstack-k8s-operators/rhosp16-openstack-tripleoclient:16.2_20210713.1
gitSecret : git-secret
heatEnvConfigMap : heat-env-config
tarballConfigMap : tripleo-tarball-config
# (optional) for debugging it is possible to set the interactive mode.
# In this mode the playbooks won't get rendered automatically. Just the environment to start the rendering gets created
# interactive: true
# (optional) provide custom registry or specific container versions via the ephemeralHeatSettings
# ephemeralHeatSettings:
# heatAPIImageURL: quay.io/tripleotraincentos8/centos-binary-heat-api:current-tripleo
# heatEngineImageURL: quay.io/tripleotraincentos8/centos-binary-heat-engine:current-tripleo
# mariadbImageURL: quay.io/tripleotraincentos8/centos-binary-mariadb:current-tripleo
# rabbitImageURL: quay.io/tripleotraincentos8/centos-binary-rabbitmq:current-tripleo
Если вы напишите вышеуказанный YAML в файл с именем Generator.yaml, вы можете создать OpenStCkConfigGenerator с помощью этой команды:
oc create -f generator.yaml
Созданный выше Osconfiggenerator будет автоматически генерировать пейзаторы в любое время, когда вы масштабируете или изменяете ConfigMaps для развертывания OSP. Генерация этих книг занимает несколько минут. Вы можете отслеживать состояние состояния Osconfiggenerator, чтобы он закончил.
Получите последнюю Osconfigversion (Ansible Playbooks). Выберите хэш/дадест последней Osconfigversion для использования на следующем шаге.
oc get -n openstack --sort-by {.metadata.creationTimestamp} osconfigversions -o json
ПРИМЕЧАНИЕ. Объекты Osconfigversion также имеют атрибут «git diff», который можно использовать для легкового сравнения изменений между версиями Ansible Playbook.
Создайте Osdeploy (выполняет Ansible Playbooks)
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackDeploy
metadata :
name : default
spec :
configVersion : n5fch96h548h75hf4hbdhb8hfdh676h57bh96h5c5h59hf4h88h...
configGenerator : default
Если вы напишите вышеуказанный YAML в файл с именем Deploy.yaml, вы можете создать OpenStCkDeploy с помощью этой команды:
oc create -f deploy.yaml
По мере запуска развертывания он создаст задание Kubernetes для выполнения Ansible Playbooks. Вы можете провести журналы этой работы/капсула, чтобы посмотреть, как запускаются Ansible Playbooks. Кроме того, вы можете вручную получить доступ к выполненным Ansible Playbooks, войдя в капсул «OpenStackClient», перейдя в каталог/Home/Cloud-Admin/Work //. Там вы найдете Ansible Playbooks вместе с файлом ansible.log для выполнения развертывания.
Можно развернуть гипер-конверкурную инфраструктуру Tripleo, где вычислительные узлы также действуют как узлы Ceph OSD. Рабочий процесс для установки Ceph через Tripleo будет:
Обязательно используйте quay.io/openstack-k8s-operators/rhosp16-openstack-tripleoclient:16.2_20210521.1
или позже для OpenStackClient openStackClientImageURL
.
Иметь вычислительные узлы с дополнительными дисками, которые будут использоваться в качестве OSDS, и создайте Baremetalset для роли ComputeHCI, которая имеет сеть StorageMgmt в дополнение к сетям вычислений по умолчанию и параметра IsHCI
установленную TRUE.
ПРИМЕЧАНИЕ . Если в качестве базы используется в качестве базы, если для развертывания развертывания вычислительных узлов OpenStackBareMetalSet вычислите параметр ядра. Это можно сделать так:
dnf install -y libguestfs-tools-c
virt-customize -a bms-image.qcow2 --run-command ' sed -i -e "s/^(kernelopts=.*)net.ifnames=0 (.*)/12/" /boot/grub2/grubenv '
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBaremetalSet
metadata :
name : computehci
namespace : openstack
spec :
# How many nodes to provision
replicas : 2
# The image to install on the provisioned nodes
baseImageUrl : http://host/images/rhel-image-8.4.x86_64.qcow2
# The secret containing the SSH pub key to place on the provisioned nodes
deploymentSSHSecret : osp-controlplane-ssh-keys
# The interface on the nodes that will be assigned an IP from the mgmtCidr
ctlplaneInterface : enp7s0
# Networks to associate with this host
networks :
- ctlplane
- internalapi
- tenant
- storage
- storagemgmt
roleName : ComputeHCI
passwordSecret : userpassword
Deploying OpenStack once you have the OSP Director Operator installed
, который включает в себя роль ComputeHCI/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml
и любая другая настройка для Tripleo Deploy ConfigMap, например, storage-backend.yaml
: resource_registry :
OS::TripleO::Services::CephMgr : deployment/ceph-ansible/ceph-mgr.yaml
OS::TripleO::Services::CephMon : deployment/ceph-ansible/ceph-mon.yaml
OS::TripleO::Services::CephOSD : deployment/ceph-ansible/ceph-osd.yaml
OS::TripleO::Services::CephClient : deployment/ceph-ansible/ceph-client.yaml
parameter_defaults :
# needed for now because of the repo used to create tripleo-deploy image
CephAnsibleRepo : " rhelosp-ceph-4-tools "
CephAnsiblePlaybookVerbosity : 3
CinderEnableIscsiBackend : false
CinderEnableRbdBackend : true
CinderBackupBackend : ceph
CinderEnableNfsBackend : false
NovaEnableRbdBackend : true
GlanceBackend : rbd
CinderRbdPoolName : " volumes "
NovaRbdPoolName : " vms "
GlanceRbdPoolName : " images "
CephPoolDefaultPgNum : 32
CephPoolDefaultSize : 2
CephAnsibleDisksConfig :
devices :
- ' /dev/sdb '
- ' /dev/sdc '
- ' /dev/sdd '
osd_scenario : lvm
osd_objectstore : bluestore
CephAnsibleExtraConfig :
is_hci : true
CephConfigOverrides :
rgw_swift_enforce_content_length : true
rgw_swift_versioning_enabled : true
После настройки приведенного выше шаблона/примеров для вашей среды создайте/обновите ConfigMaps, как объяснено в Deploying OpenStack once you have the OSP Director Operator installed
Deploying OpenStack once you have the OSP Director Operator installed
, и укажите сгенерированный ролей. ПРИМЕЧАНИЕ . Обязательно используйте quay.io/openstack-k8s-operators/rhosp16-openstack-tripleoclient:16.2_20210521.1
или позже для Osconfiggenerator imageURL
.
Подождите, пока OpenStCkConfigGenerator завершит работу по рендеринге.
Получите хэш/дадест последней OpenstackConfigversion.
Создайте OpenStackDeploy для указанной OpenStckconfigversion. Это развернет Ansible Playbooks.
Удаление хоста Baremetal Compute требует следующих шагов:
В случае удаления вычислительного узла, отключите сервис вычисления на исходящем узле на Overcloud, чтобы предотвратить планирование новых экземпляров.
openstack compute service list
openstack compute service set < hostname > nova-compute --disable
Аннотация ресурса BMH
oc annotate -n openshift-machine-api bmh/openshift-worker-3 osp-director.openstack.org/delete-host=true --overwrite
Статус аннотации отражается в OsbareMetalset/OSVMSE с использованием параметра annotatedForDeletion
:
oc get osbms computehci -o json | jq .status
{
" baremetalHosts " : {
" computehci-0 " : {
" annotatedForDeletion " : true,
" ctlplaneIP " : " 192.168.25.105/24 " ,
" hostRef " : " openshift-worker-3 " ,
" hostname " : " computehci-0 " ,
" networkDataSecretName " : " computehci-cloudinit-networkdata-openshift-worker-3 " ,
" provisioningState " : " provisioned " ,
" userDataSecretName " : " computehci-cloudinit-userdata-openshift-worker-3 "
},
" computehci-1 " : {
" annotatedForDeletion " : false,
" ctlplaneIP " : " 192.168.25.106/24 " ,
" hostRef " : " openshift-worker-4 " ,
" hostname " : " computehci-1 " ,
" networkDataSecretName " : " computehci-cloudinit-networkdata-openshift-worker-4 " ,
" provisioningState " : " provisioned " ,
" userDataSecretName " : " computehci-cloudinit-userdata-openshift-worker-4 "
}
},
" provisioningStatus " : {
" readyCount " : 2,
" reason " : " All requested BaremetalHosts have been provisioned " ,
" state " : " provisioned "
}
}
Сокращение количества ресурсов OsbareMetalset запустит контроллер CorrenSponding для обработки удаления ресурсов
oc patch osbms computehci --type=merge --patch ' {"spec":{"count":1}} '
Как результат:
oc get osnet ctlplane -o json | jq .status.roleReservations.ComputeHCI
{
" addToPredictableIPs " : true,
" reservations " : [
{
" deleted " : true,
" hostname " : " computehci-0 " ,
" ip " : " 192.168.25.105 " ,
" vip " : false
},
{
" deleted " : false,
" hostname " : " computehci-1 " ,
" ip " : " 192.168.25.106 " ,
" vip " : false
}
]
}
Это приводит к следующему поведению
Прямо сейчас, если вычислительный узел был удален, на плоскости управления OpenStack есть несколько оставшихся записей. Чтобы очистить их, выполните следующие шаги.
openstack compute service list
openstack compute service delete < service-id >
openstack network agent list
for AGENT in $( openstack network agent list --host < scaled-down-node > -c ID -f value ) ; do openstack network agent delete $AGENT ; done
Удаление виртуальной машины требует следующих шагов:
Если виртуальная машина проводит любую службу OSP, которая должна быть отключена до удаления, сделайте это.
Аннотация ресурса виртуальной машины
oc annotate -n openstack vm/controller-1 osp-director.openstack.org/delete-host=true --overwrite
Сокращение ресурса Rolecount of VirtualMachinerles в OpenStCkControlPlane CR. Контроллер CorrenSponding для обработки удаления ресурсов
oc patch osctlplane overcloud --type=merge --patch ' {"spec":{"virtualMachineRoles":{"<RoleName>":{"roleCount":2}}}} '
Как результат:
Это приводит к следующему поведению
Если виртуальная машина действительно организовала любую службу OSP, которая должна быть удалена, удалите службу, используя соответствующую команду OpenStack.
Можно развернуть архитектуру маршрутизированных сети Tripleo (Spine/Leaf Network) для настройки сети Overcloud Leaf. Используйте параметр подсету, чтобы определить дополнительные подсети листьев с помощью базовой сети.
Сейчас ограничение состоит в том, что может быть только одна сеть для Metal3.
Рабочий процесс для установления Overcloud с использованием нескольких подсетей будет:
Определите свой пользовательский ресурс OpenStackNetConfig и укажите все подсети для сетей Overcloud. Оператор отобразит Tripleo network_data.yaml для выпуска использованного OSP.
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackNetConfig
metadata :
name : openstacknetconfig
spec :
attachConfigurations :
br-osp :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp7s0
description : Linux bridge with enp7s0 as a port
name : br-osp
state : up
type : linux-bridge
mtu : 1500
br-ex :
nodeNetworkConfigurationPolicy :
nodeSelector :
node-role.kubernetes.io/worker : " "
desiredState :
interfaces :
- bridge :
options :
stp :
enabled : false
port :
- name : enp6s0
description : Linux bridge with enp6s0 as a port
name : br-ex-osp
state : up
type : linux-bridge
mtu : 1500
# optional DnsServers list
dnsServers :
- 192.168.25.1
# optional DnsSearchDomains list
dnsSearchDomains :
- osptest.test.metalkube.org
- some.other.domain
# DomainName of the OSP environment
domainName : osptest.test.metalkube.org
networks :
- name : Control
nameLower : ctlplane
subnets :
- name : ctlplane
ipv4 :
allocationEnd : 192.168.25.250
allocationStart : 192.168.25.100
cidr : 192.168.25.0/24
gateway : 192.168.25.1
attachConfiguration : br-osp
- name : InternalApi
nameLower : internal_api
mtu : 1350
subnets :
- name : internal_api
ipv4 :
allocationEnd : 172.17.0.250
allocationStart : 172.17.0.10
cidr : 172.17.0.0/24
routes :
- destination : 172.17.1.0/24
nexthop : 172.17.0.1
- destination : 172.17.2.0/24
nexthop : 172.17.0.1
vlan : 20
attachConfiguration : br-osp
- name : internal_api_leaf1
ipv4 :
allocationEnd : 172.17.1.250
allocationStart : 172.17.1.10
cidr : 172.17.1.0/24
routes :
- destination : 172.17.0.0/24
nexthop : 172.17.1.1
- destination : 172.17.2.0/24
nexthop : 172.17.1.1
vlan : 21
attachConfiguration : br-osp
- name : internal_api_leaf2
ipv4 :
allocationEnd : 172.17.2.250
allocationStart : 172.17.2.10
cidr : 172.17.2.0/24
routes :
- destination : 172.17.1.0/24
nexthop : 172.17.2.1
- destination : 172.17.0.0/24
nexthop : 172.17.2.1
vlan : 22
attachConfiguration : br-osp
- name : External
nameLower : external
subnets :
- name : external
ipv4 :
allocationEnd : 10.0.0.250
allocationStart : 10.0.0.10
cidr : 10.0.0.0/24
gateway : 10.0.0.1
attachConfiguration : br-ex
- name : Storage
nameLower : storage
mtu : 1350
subnets :
- name : storage
ipv4 :
allocationEnd : 172.18.0.250
allocationStart : 172.18.0.10
cidr : 172.18.0.0/24
routes :
- destination : 172.18.1.0/24
nexthop : 172.18.0.1
- destination : 172.18.2.0/24
nexthop : 172.18.0.1
vlan : 30
attachConfiguration : br-osp
- name : storage_leaf1
ipv4 :
allocationEnd : 172.18.1.250
allocationStart : 172.18.1.10
cidr : 172.18.1.0/24
routes :
- destination : 172.18.0.0/24
nexthop : 172.18.1.1
- destination : 172.18.2.0/24
nexthop : 172.18.1.1
vlan : 31
attachConfiguration : br-osp
- name : storage_leaf2
ipv4 :
allocationEnd : 172.18.2.250
allocationStart : 172.18.2.10
cidr : 172.18.2.0/24
routes :
- destination : 172.18.0.0/24
nexthop : 172.18.2.1
- destination : 172.18.1.0/24
nexthop : 172.18.2.1
vlan : 32
attachConfiguration : br-osp
- name : StorageMgmt
nameLower : storage_mgmt
mtu : 1350
subnets :
- name : storage_mgmt
ipv4 :
allocationEnd : 172.19.0.250
allocationStart : 172.19.0.10
cidr : 172.19.0.0/24
routes :
- destination : 172.19.1.0/24
nexthop : 172.19.0.1
- destination : 172.19.2.0/24
nexthop : 172.19.0.1
vlan : 40
attachConfiguration : br-osp
- name : storage_mgmt_leaf1
ipv4 :
allocationEnd : 172.19.1.250
allocationStart : 172.19.1.10
cidr : 172.19.1.0/24
routes :
- destination : 172.19.0.0/24
nexthop : 172.19.1.1
- destination : 172.19.2.0/24
nexthop : 172.19.1.1
vlan : 41
attachConfiguration : br-osp
- name : storage_mgmt_leaf2
ipv4 :
allocationEnd : 172.19.2.250
allocationStart : 172.19.2.10
cidr : 172.19.2.0/24
routes :
- destination : 172.19.0.0/24
nexthop : 172.19.2.1
- destination : 172.19.1.0/24
nexthop : 172.19.2.1
vlan : 42
attachConfiguration : br-osp
- name : Tenant
nameLower : tenant
vip : False
mtu : 1350
subnets :
- name : tenant
ipv4 :
allocationEnd : 172.20.0.250
allocationStart : 172.20.0.10
cidr : 172.20.0.0/24
routes :
- destination : 172.20.1.0/24
nexthop : 172.20.0.1
- destination : 172.20.2.0/24
nexthop : 172.20.0.1
vlan : 50
attachConfiguration : br-osp
- name : tenant_leaf1
ipv4 :
allocationEnd : 172.20.1.250
allocationStart : 172.20.1.10
cidr : 172.20.1.0/24
routes :
- destination : 172.20.0.0/24
nexthop : 172.20.1.1
- destination : 172.20.2.0/24
nexthop : 172.20.1.1
vlan : 51
attachConfiguration : br-osp
- name : tenant_leaf2
ipv4 :
allocationEnd : 172.20.2.250
allocationStart : 172.20.2.10
cidr : 172.20.2.0/24
routes :
- destination : 172.20.0.0/24
nexthop : 172.20.2.1
- destination : 172.20.1.0/24
nexthop : 172.20.2.1
vlan : 52
attachConfiguration : br-osp
Если вы напишите вышеупомянутый YAML в файл с именем networkconfig.yaml, вы можете создать OpenStCkTeCtonfig с помощью этой команды:
oc create -n openstack -f networkconfig.yaml
...
# ##############################################################################
# Role: ComputeLeaf1 #
# ##############################################################################
- name : ComputeLeaf1
description : |
Basic ComputeLeaf1 Node role
# Create external Neutron bridge (unset if using ML2/OVS without DVR)
tags :
- external_bridge
networks :
InternalApi :
subnet : internal_api_leaf1
Tenant :
subnet : tenant_leaf1
Storage :
subnet : storage_leaf1
HostnameFormatDefault : ' %stackname%-novacompute-leaf1-%index% '
...
# ##############################################################################
# Role: ComputeLeaf2 #
# ##############################################################################
- name : ComputeLeaf2
description : |
Basic ComputeLeaf1 Node role
# Create external Neutron bridge (unset if using ML2/OVS without DVR)
tags :
- external_bridge
networks :
InternalApi :
subnet : internal_api_leaf2
Tenant :
subnet : tenant_leaf2
Storage :
subnet : storage_leaf2
HostnameFormatDefault : ' %stackname%-novacompute-leaf2-%index% '
...
Обновите tarballConfigMap
ConfigMap, чтобы добавить файл roles_data.yaml
в Tarball и обновите ConfigMap.
ПРИМЕЧАНИЕ . Обязательно используйте roles_data.yaml
в качестве имени файла.
Шаблоны OSP 16.2 Tripleo NIC имеют параметр Interfaceroutes для по умолчанию. Параметр маршрутов, отображаемый в средах/сетевой среде. Поскольку нет нейтрона, необходимо добавить маршрут {{network.name}} в шаблон NIC, где это необходимо, и Cocat два списка:
parameters:
...
{{ $net.Name }}Routes:
default: []
description: >
Routes for the storage network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type: json
...
- type: interface
...
routes:
list_concat_unique:
- get_param: {{ $net.Name }}Routes
- get_param: {{ $net.Name }}InterfaceRoutes
Информация о подсети маршрутов получает автоматическое отображение в файловых environments/network-environment.yaml
. Таким образом, в шаблонах NIC используйте routes_ <ubnet_name>, например, Storageroutes_storage_Leaf1, чтобы установить правильную маршрутизацию на хосте.
Для роли Computeleaf1 Suncheate шаблон NIC должен быть изменен для их использования:
...
StorageRoutes_storage_leaf1 :
default : []
description : >
Routes for the storage network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type : json
...
InternalApiRoutes_internal_api_leaf1 :
default : []
description : >
Routes for the internal_api network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type : json
...
TenantRoutes_tenant_leaf1 :
default : []
description : >
Routes for the internal_api network traffic.
JSON route e.g. [{'destination':'10.0.0.0/16', 'nexthop':'10.0.0.1'}]
Unless the default is changed, the parameter is automatically resolved
from the subnet host_routes attribute.
type : json
...
get_param : StorageIpSubnet
routes :
list_concat_unique :
- get_param : StorageRoutes_storage_leaf1
- type : vlan
...
get_param : InternalApiIpSubnet
routes :
list_concat_unique :
- get_param : InternalApiRoutes_internal_api_leaf1
...
get_param : TenantIpSubnet
routes :
list_concat_unique :
- get_param : TenantRoutes_tenant_leaf1
- type : ovs_bridge
...
Обновите tarballConfigMap
ConfigMap, чтобы добавить файл NIC roles_data.yaml
в Tarball и обновите ConfigMap.
ПРИМЕЧАНИЕ . Обязательно используйте roles_data.yaml
в качестве имени файла.
До сих пор только OSP16.2 был протестирован с помощью множественного развертывания подсети и совместимо с одной подсети OSP17.0.
TBD
Обязательно добавьте новые созданные шаблоны NIC в файл среды в resource_registry
для новых ролей узла:
resource_registry :
OS::TripleO::Compute::Net::SoftwareConfig : net-config-two-nic-vlan-compute.yaml
OS::TripleO::ComputeLeaf1::Net::SoftwareConfig : net-config-two-nic-vlan-compute_leaf1.yaml
OS::TripleO::ComputeLeaf2::Net::SoftwareConfig : net-config-two-nic-vlan-compute_leaf2.yaml
На этом этапе мы можем предоставить переоценку.
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackControlPlane
metadata :
name : overcloud
namespace : openstack
spec :
gitSecret : git-secret
openStackClientImageURL : registry.redhat.io/rhosp-rhel8/openstack-tripleoclient:16.2
openStackClientNetworks :
- ctlplane
- external
- internal_api
- internal_api_leaf1 # optionally the openstackclient can also be connected to subnets
openStackClientStorageClass : host-nfs-storageclass
passwordSecret : userpassword
domainName : ostest.test.metalkube.org
virtualMachineRoles :
Controller :
roleName : Controller
roleCount : 1
networks :
- ctlplane
- internal_api
- external
- tenant
- storage
- storage_mgmt
cores : 6
memory : 20
rootDisk :
diskSize : 40
baseImageVolumeName : controller-base-img
storageClass : host-nfs-storageclass
storageAccessMode : ReadWriteMany
storageVolumeMode : Filesystem
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBaremetalSet
metadata :
name : computeleaf1
namespace : openstack
spec :
# How many nodes to provision
count : 1
# The image to install on the provisioned nodes
baseImageUrl : http://192.168.111.1/images/rhel-guest-image-8.4-1168.x86_64.qcow2
provisionServerName : openstack
# The secret containing the SSH pub key to place on the provisioned nodes
deploymentSSHSecret : osp-controlplane-ssh-keys
# The interface on the nodes that will be assigned an IP from the mgmtCidr
ctlplaneInterface : enp7s0
# Networks to associate with this host
networks :
- ctlplane
- internal_api_leaf1
- external
- tenant_leaf1
- storage_leaf1
roleName : ComputeLeaf1
passwordSecret : userpassword
apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBaremetalSet
metadata :
name : computeleaf2
namespace : openstack
spec :
# How many nodes to provision
count : 1
# The image to install on the provisioned nodes
baseImageUrl : http://192.168.111.1/images/rhel-guest-image-8.4-1168.x86_64.qcow2
provisionServerName : openstack
# The secret containing the SSH pub key to place on the provisioned nodes
deploymentSSHSecret : osp-controlplane-ssh-keys
# The interface on the nodes that will be assigned an IP from the mgmtCidr
ctlplaneInterface : enp7s0
# Networks to associate with this host
networks :
- ctlplane
- internal_api_leaf2
- external
- tenant_leaf2
- storage_leaf2
roleName : ComputeLeaf2
passwordSecret : userpassword
Определите OpenStCkConfigGenerator для создания Ansible Playbooks для развертывания кластера OSP, как при Deploying OpenStack once you have the OSP Director Operator installed
, и укажите сгенерированный ролей.
Как описано ранее при Run the software deployment
, подайте заявку, зарегистрируйте узлы Overcloud в требуемые репозитории и запустите развертывание SOFWARE изнутри PodStackClient Pod.
OSP-D Operator предоставляет API для создания и восстановления резервных копий своих текущих CR, ConfigMap и секретных конфигураций. Этот API состоит из двух CRD:
OpenStackBackupRequest
OpenStackBackup
CRD OpenStackBackupRequest
используется для инициирования создания или восстановления резервной копии, в то время как CRD OpenStackBackup
используется для фактического хранения CR, ConfigMap и секретных данных, принадлежащих оператору. Это допускает несколько преимуществ:
OpenStackBackup
CR, пользователю не нужно вручную экспортировать/импортировать каждую часть конфигурации оператораOpenStackBackup
, создайте OpenStackBackupRequest
с mode
установленным для save
в ее спецификации. Например: apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBackupRequest
metadata :
name : openstackbackupsave
namespace : openstack
spec :
mode : save
additionalConfigMaps : []
additionalSecrets : []
Спецификационные поля следующие:
mode: save
указывает, что это запрос для создания резервной копии.additionalConfigMaps
и additionalSecrets
могут использоваться для включения дополнительных конфигураций и секретов, о которых оператор в противном случае не знает (т.е. configmaps и секреты, созданные вручную для определенных целей).OpenStackControlPlane
, OpenStackBaremetalSet
и т. Д.) В пространство имен, не требуя, чтобы пользователь включал их в эти дополнительные списки.OpenStackBackupRequest
отслеживайте его статус: oc get -n openstack osbackuprequest openstackbackupsave
Что -то подобное должно появиться:
NAME OPERATION SOURCE STATUS COMPLETION TIMESTAMP
openstackbackupsave save Quiescing
Состояние Quiescing
указывает на то, что оператор ждет обеспечения состояния всех операторов OSP-D, чтобы достичь своего «законченного» эквивалента. Требуемое время для этого будет варьироваться в зависимости от количества оператора OSP-D CRS и случая их текущего состояния подготовки. Примечание. Возможно, что оператор никогда не будет полностью покоиться из -за ошибок и/или состояний «ожидания» в существующих CRS. Чтобы увидеть, какие CRD/CRS предотвращают покоя, исследуйте журналы оператора. Например:
oc logs < OSP-D operator pod > -c manager -f
...
2022-01-11T18:26:15.180Z INFO controllers.OpenStackBackupRequest Quiesce for save for OpenStackBackupRequest openstackbackupsave is waiting for: [OpenStackBaremetalSet: compute, OpenStackControlPlane: overcloud, OpenStackVMSet: controller]
Если OpenStackBackupRequest
входит в состояние Error
, посмотрите на его полное содержимое, чтобы увидеть ошибку, с которой столкнулась ( oc get -n openstack openstackbackuprequest <name> -o yaml
).
OpenStackBackupRequest
был удостоен чести создания и сохранения OpenStackBackup
представляющего текущую конфигурацию оператора OSP-D, он введет Saved
состояние. Например: oc get -n openstack osbackuprequest
NAME OPERATION SOURCE STATUS COMPLETION TIMESTAMP
openstackbackupsave save Saved 2022-01-11T19:12:58Z
Соответствующий OpenStackBackup
также будет создан. Например:
oc get -n openstack osbackup
NAME AGE
openstackbackupsave-1641928378 6m7s
OpenStackBackup
, создайте OpenStackBackupRequest
с mode
установленным для restore
в ее спецификации. Например: apiVersion : osp-director.openstack.org/v1beta1
kind : OpenStackBackupRequest
metadata :
name : openstackbackuprestore
namespace : openstack
spec :
mode : restore
restoreSource : openstackbackupsave-1641928378
Спецификационные поля следующие:
mode: restore
указывает, что это запрос для восстановления существующего OpenStackBackup
.restoreSource
указывает, какой OpenStackBackup
должен быть восстановлен. С помощью mode
установленного для restore
, оператор OSP-D примет содержимое restoreSource
OpenStackBackup
и попытается применить их против существующих CRS, ConfigMaps и Secrets, в настоящее время присутствующих в пространстве имен. Таким образом, он будет перезаписать любые существующие ресурсы оператора OSP-D в пространстве имен с теми же именами, что и в OpenStackBackup
, и создаст новые ресурсы для тех, кто в настоящее время не найден в пространстве имен. При желании, mode
может быть установлен на cleanRestore
чтобы полностью уничтожить существующие ресурсы оператора OSP-D в пространстве имен, прежде чем пытаться восстановить, так что все ресурсы в OpenStackBackup
созданы полностью заново.
OpenStackBackupRequest
отслеживайте его статус: oc get -n openstack osbackuprequest openstackbackuprestore
Что -то подобное должно показать, что все ресурсы от OpenStackBackup
применяются против кластера:
NAME OPERATION SOURCE STATUS COMPLETION TIMESTAMP
openstackbackuprestore restore openstackbackupsave-1641928378 Loading
Затем, как только все ресурсы будут загружены, оператор начнет согласовываться, чтобы попытаться предоставить все ресурсы:
NAME OPERATION SOURCE STATUS COMPLETION TIMESTAMP
openstackbackuprestore restore openstackbackupsave-1641928378 Reconciling
Если OpenStackBackupRequest
входит в состояние Error
, посмотрите на его полное содержимое, чтобы увидеть ошибку, с которой столкнулась ( oc get -n openstack openstackbackuprequest <name> -o yaml
).
OpenStackBackupRequest
был удостоен чести полностью восстановившимся OpenStackBackup
, он войдет в Restored
состояние. Например: oc get -n openstack osbackuprequest
NAME OPERATION SOURCE STATUS COMPLETION TIMESTAMP
openstackbackuprestore restore openstackbackupsave-1641928378 Restored 2022-01-12T13:48:57Z
На этом этапе все ресурсы, содержащиеся с выбранным OpenStackBackup
должны быть восстановлены и полностью подготовлены.
Оператор директора OSP автоматически создает ConfigMap после того, как каждый ресурс Osdeploy завершает выполнение. Эта конфигурация названа в честь имени ресурса Osdeploy и префиксирован с помощью тройного экспорта. Например, Triple-Exports-Default будет названием ConfigMap для ресурса OsDeploy «по умолчанию». Каждый конфигурация содержит 2 файла YAML:
Имя файла | Описание | Командный эквивалент Tripleo |
---|---|---|
ctlplane-export.yaml | Используется с несколькими стеками для DCN | Evercloud Export |
CTLPLANE-EXPORT-FILTERED.YAML | Используется для нескольких стеков со стеками «контроллер» сотовой связи | Evercloud Cell Export |
Используйте команду ниже, чтобы извлечь файлы YAML из ConfigMap. После извлечения файлы YAML могут быть добавлены в пользовательские параметры тепла на ресурсах OsconfigGenerator.
oc extract cm/tripleo-exports-default
Примечание. Оператор директора OSP еще не генерирует экспорт для стеков CEPH.
При необходимости можно изменить ЦП/ОЗУ на OpenStackVMSet, настроенный через OpenStCkControlPlane. Рабочий процесс выглядит следующим образом:
Например, чтобы изменить VirtualMachinerole контроллера, чтобы иметь 8 ядер и 22 ГБ оперативной памяти:
oc patch -n openstack osctlplane overcloud --type= ' json ' -p= ' [{"op": "add", "path": "/spec/virtualMachineRoles/controller/cores", "value": 8 }] '
oc patch -n openstack osctlplane overcloud --type= ' json ' -p= ' [{"op": "add", "path": "/spec/virtualMachineRoles/controller/memory", "value": 22 }] '
oc get osvmset
NAME CORES RAM DESIRED READY STATUS REASON
controller 8 22 1 1 Provisioned All requested VirtualMachines have been provisioned
virtctl start <VM>
для включения виртуальной машины. См. Документ процесса обновления OSP