SOP по добавлению узла OCP4 в существующий кластер

Данную SOP следует применять в следующем случае:
  • Кластер Red Hat OpenShift Container Platform 4.x был установлен некоторое время назад (более 1 дня) и требуются дополнительные рабочие узлы для увеличения ёмкости кластера.

Шаги

  1. Добавьте новые узлы в файл инвентаря Ansible в соответствующую группу.

    напр.:

    [ocp_workers]
    worker01.ocp.rdu3.fedoraproject.org
    worker02.ocp.rdu3.fedoraproject.org
    worker03.ocp.rdu3.fedoraproject.org
    
    
    [ocp_workers_stg]
    worker01.ocp.stg.rdu3.fedoraproject.org
    worker02.ocp.stg.rdu3.fedoraproject.org
    worker03.ocp.stg.rdu3.fedoraproject.org
    worker04.ocp.stg.rdu3.fedoraproject.org
    worker05.ocp.stg.rdu3.fedoraproject.org
  2. Добавьте новые hostvars для каждого добавляемого хоста, см. следующие примеры для хостов VM и baremetal.

    # ВМ control plane
    inventory/host_vars/ocp01.ocp.rdu3.fedoraproject.org
    
    # вычислительный baremetal
    inventory/host_vars/worker01.ocp.rdu3.fedoraproject.org
  3. Если узлы являются compute или worker, они также должны быть добавлены в следующие group_vars: proxies для production, proxies_stg для тестового экземпляра

    inventory/group_vars/proxies:ocp_nodes:
    inventory/group_vars/proxies_stg:ocp_nodes_stg:
  4. Необходимо внести изменения в файл roles/dhcp_server/files/dhcpd.conf.noc01.rdu3.fedoraproject.org для DHCP, чтобы узел получил IP-адрес на основе своего MAC-адреса, а также чтобы узлу было указано обращаться к next-server, где он может найти конфигурацию загрузки UEFI.

    host worker01-ocp {                        # ОБНОВИТЕ ЭТО
         hardware ethernet 68:05:CA:CE:A3:C9;  # ОБНОВИТЕ ЭТО
         fixed-address 10.16.163.123;           # ОБНОВИТЕ ЭТО
         filename "uefi/grubx64.efi";
         next-server 10.16.163.10;
         option routers 10.16.163.254;
         option subnet-mask 255.255.255.0;
    }
  5. Необходимо внести изменения в DNS. Для этого нужно быть участником группы sysadmin-main; если вы не являетесь таковым, необходимо отправить запрос с патчем в список рассылки Fedora Infra для проверки, который затем будет объединён участниками sysadmin-main.

    См. следующие примеры для узлов worker01.ocp для production и staging.

    master/163.3.10.in-addr.arpa:123      IN        PTR      worker01.ocp.rdu3.fedoraproject.org.
    master/166.3.10.in-addr.arpa:118      IN        PTR      worker01.ocp.stg.rdu3.fedoraproject.org.
    master/rdu3.fedoraproject.org:worker01.ocp            IN      A       10.16.163.123
    master/stg.rdu3.fedoraproject.org:worker01.ocp            IN      A       10.16.166.118
  6. Запустите плейбук для обновления конфигурации haproxy для мониторинга новых узлов и добавления их в балансировщик нагрузки.

    sudo rbac-playbook groups/noc.yml -t "tftp_server,dhcp_server"
    sudo rbac-playbook groups/proxies.yml -t 'haproxy,httpd'
  7. DHCP указывает узлу обращаться к next-server при получении IP-адреса. next-server запускает tftp-сервер, содержащий ядро, initramfs и конфигурацию загрузки UEFI. uefi/grub.cfg. В этом grub.cfg содержится следующее, относящееся к узлам OCP4:

    menuentry 'RHCOS 4.8 worker staging' {
      linuxefi images/RHCOS/4.8/x86_64/rhcos-4.8.2-x86_64-live-kernel-x86_64 ip=dhcp nameserver=10.16.163.33 coreos.inst.install_dev=/dev/sda
    coreos.live.rootfs_url=http://10.16.166.50/rhcos/rhcos-4.8.2-x86_64-live-rootfs.x86_64.img coreos.inst.ignition_url=http://10.16.166.50/rhcos/worker.ign
      initrdefi images/RHCOS/4.8/x86_64/rhcos-4.8.2-x86_64-live-initramfs.x86_64.img
    }
    menuentry 'RHCOS 4.8 worker production' {
      linuxefi images/RHCOS/4.8/x86_64/rhcos-4.8.2-x86_64-live-kernel-x86_64 ip=dhcp nameserver=10.16.163.33 coreos.inst.install_dev=/dev/sda
    coreos.live.rootfs_url=http://10.16.163.65/rhcos/rhcos-4.8.2-x86_64-live-rootfs.x86_64.img coreos.inst.ignition_url=http://10.16.163.65/rhcos/worker.ign
      initrdefi images/RHCOS/4.8/x86_64/rhcos-4.8.2-x86_64-live-initramfs.x86_64.img
    }

    При загрузке узла и чтении этой конфигурации загрузки UEFI необходимо вручную выбрать пункт меню:

    • Чтобы добавить узел в тестовый кластер, выберите: RHCOS 4.8 worker staging

    • Чтобы добавить узел в производственный кластер, выберите: RHCOS 4.8 worker production

  8. Подключитесь к узлу os-control01, соответствующему среде, в которую добавляется новый узел.

    Убедитесь, что вы аутентифицированы в кластере OpenShift как пользователь system:admin.

    oc whoami
    system:admin
  9. В конфигурации загрузочного меню UEFI содержатся ссылки на веб-сервер, работающий на хосте os-control01, специфичном для среды. Этот сервер должен запускаться только при переустановке существующего узла или установке нового. Запустите его вручную с помощью systemctl:

    systemctl start httpd.service
  10. Загрузите узел и выберите соответствующий пункт меню для установки узла в нужный кластер. Дождитесь появления приглашения SSH с именем узла. В процессе он может перезагружаться несколько раз.

  11. По мере подготовки новых узлов они будут пытаться присоединиться к кластеру. Их необходимо сначала принять. На узле os-control01 выполните следующее:

    # Список сертификатов. Если вы видите статус pending, это рабочие/вычислительные узлы пытаются присоединиться к кластеру. Их необходимо утвердить.
    oc get csr
    
    # Принять все CSR узлов одной строкой
    oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve

    Этот процесс обычно необходимо повторить дважды для каждого нового узла.

Для получения более подробной информации о добавлении новых рабочих/вычислительных узлов в кластер OCP4 на основе инфраструктуры, подготовленной пользователем, см. подробные шаги в [1], [2].