GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar OpenShift 4.9 en Bare Metal (UPI)

Hola Techies, como saben, Openshift proporciona una plataforma de contenedores y puede instalarse en las instalaciones o en la nube pública utilizando diferentes métodos como IPI (instalador aprovisionado por el instalador), UPI (infraestructura aprovisionada por el usuario) e instalador asistido sin sistema operativo.

En esta publicación, demostraremos cómo instalar Openshift 4.9 en nodos bare metal con enfoque UPI.

Para fines de demostración, estoy usando máquinas virtuales KVM. Los siguientes son los detalles de configuración de mi laboratorio,

Total de máquinas virtuales:7

Nodo bastión:

  • SO:Rocky Linux 8 / CentOS 8,
  • RAM:4 GB, vPCU-4,
  • Disco:120 GB
  • Red:Administración N/w:(169.144.104.228), ocp interno n/w:(192.168.110.115)

Nodo de arranque:

  • SO:SO central
  • RAM:8GB
  • vCPU:4
  • Disco:40 GB
  • Red:Red interna de OCP (192.168.110.116)

Nodo del plano de control 1:

  • SO:SO principal
  • RAM:10GB
  • vCPU:6
  • Disco:60 GB
  • Red:Red interna de OCP (192.168.110.117)

Nodo del plano de control 2:

  • SO:SO principal
  • RAM:10GB
  • vCPU:6
  • Disco:60 GB
  • Red:Red interna de OCP (192.168.110.118)

Nodo del plano de control 3:

  • SO:SO central
  • RAM:10GB
  • vCPU:6
  • Disco:60 GB
  • Red:Red interna de OCP (192.168.110.119)

Nodo trabajador 1:

  • SO:SO central
  • RAM:12GB
  • vCPU:8
  • Disco:60 GB
  • Red:Red interna de OCP (192.168.110.120)

Nodo trabajador 2:

  • SO:SO central
  • RAM:12GB
  • vCPU:8
  • Disco:60 GB
  • Red:Red interna de OCP (192.168.110.121)

Nota: En el hipervisor KVM, hemos creado una red solo de host para ocp-internal.

Use el siguiente archivo y comandos para crear una red solo de host en KVM,

$ cat hostonly.xml
<network>
  <name>hostnet</name>
  <bridge name='virbr2' stp='on' delay='0'/>
  <ip address='192.168.110.1' netmask='255.255.255.0'>
      <range start='192.168.110.10' end='192.168.110.254'/>
  </ip>
</network>
$ sudo virsh net-define hostonly.xml
$ virsh net-start hostnet
$ virsh net-autostart hostnet
$ sudo systemctl restart libvirtd

Descargue el software Openshift desde el portal de Red Hat

a)    Inicie sesión en Red Hat Portal utilizando la siguiente URL:

https://cloud.redhat.com/openshift

b)    Haga clic en Crear clúster

c)     Elija la pestaña Centro de datos -> Haga clic en BareMetal

d)    Seleccione el tipo de instalación como "UPI" (infraestructura proporcionada por el usuario)

e)    Descargar lo siguiente

  • Instalador de OpenShift
  • Extraer secreto
  • Interfaz de línea de comandos
  • ISO de RHCOS
  • RHCOS CRUDO

Pasemos ahora a los pasos de instalación de OpenShift

Paso 1) Preparar el nodo bastión

Cree una máquina virtual con los recursos mencionados anteriormente para el bastión, puede instalar el sistema operativo Rocky Linux 8 o CentOS 8. Asigne la dirección IP de la red interna de administración y ocp.

Del mismo modo, cree bootstrap, control plane VM y Worker VM y conecte la red OCP (hostnet) a la interfaz y anote su dirección mac. Entonces, en mi caso, las siguientes son las direcciones MAC,

  • Bootstrap:  52:54:00:bf:60:a3
  • ocp-cp1:52:54:00:98:49:40
  • ocp-cp2:52:54:00:fe:8a:7c
  • ocp-cp3:52:54:00:58:d3:31
  • ocp-w1:52:54:00:38:8c:dd
  • ocp-w2:52:54:00:b8:84:40

Paso 2) Configurar servicios en el nodo bastión

Transfiera el software Openshift descargado, incluido el secreto, al nodo de bastión en la carpeta raíz.

Extraiga el archivo tar del cliente openshift usando el siguiente comando tar,

# tar xvf openshift-client-linux.tar.gz
# mv oc kubectl /usr/local/bin

Confirme la instalación de la herramienta de cliente OpenShift y su versión ejecutando,

# oc version
# kubectl version

La salida del comando anterior se vería a continuación:

Extraiga el archivo tar del instalador de Openshift,

# tar xpvf openshift-install-linux.tar.gz
README.md
openshift-install
#

Configurar zonas y enmascaramiento (SNAT)

En mi nodo bastión, tengo dos tarjetas LAN, ens3 y ens8. En ens3, se configura la red externa o de administración y en ens8, se configura la red interna ocp. Por lo tanto, defina las siguientes zonas y habilite el enmascaramiento en ambas zonas.

# nmcli connection modify ens8 connection.zone internal
# nmcli connection modify ens3 connection.zone external
# firewall-cmd --get-active-zones
# firewall-cmd --zone=external --add-masquerade --permanent
# firewall-cmd --zone=internal --add-masquerade --permanent
# firewall-cmd --reload

Verifique la configuración de la zona ejecutando los siguientes comandos de firewall-cmd,

# firewall-cmd --list-all --zone=internal
# firewall-cmd --list-all --zone=external

Ahora vamos a configurar el servicio DNS, DHCP, Apache, HAProxy y NFS.

Nota:Para fines de demostración, estoy usando 'linuxtechi.lan' como dominio base.

Configurar servidor DNS

Para instalar el servidor DNS y sus dependencias, ejecute el siguiente comando dnf

# dnf install bind bind-utils -y

Edite /etc/named.conf y asegúrese de que el archivo tenga el siguiente contenido,

# vi /etc/named.conf

Ahora cree un archivo de zona de avance y retroceso,

# mkdir /etc/named/zones
# vi /etc/named/zones/db.linuxtechi.lan

Guarde y salga del archivo.

Cree un archivo de zona inversa con las siguientes entradas,

# vi /etc/named/zones/db.reverse

Guarde y cierre el archivo y luego inicie y habilite el servicio dns

# systemctl start named
# systemctl enable named

Permita el puerto DNS en el firewall, ejecute

# firewall-cmd --add-port=53/udp --zone=internal --permanent
# firewall-cmd --reload

Configurar servidor DHCP 

Instale y configure el servidor dhcp, vincule la dirección mac de bootstrap, los planos de control y los nodos de trabajo a sus respectivas IP. Ejecute el siguiente comando para instalar el paquete dhcp,

# dnf install -y dhcp-server

Edite el archivo /etc/dhcp/dhcpd.conf y agregue los siguientes contenidos, use las direcciones mac que hemos recopilado en el paso 1 y especifique la dirección IP de los nodos según las entradas de DNS. Entonces, en mi caso, el contenido del archivo se verá a continuación,

[[email protected] ~]# vi /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
allow booting;
allow bootp;
allow unknown-clients;
ignore client-updates;
default-lease-time 14400;
max-lease-time 14400;
subnet 192.168.110.0 netmask 255.255.255.0 {
 option routers                  192.168.110.215; # lan
 option subnet-mask              255.255.255.0;
 option domain-name              "linuxtechi.lan";
 option domain-name-servers       192.168.110.215;
 range 192.168.110.216 192.168.110.245;
}

host ocp-bootstrap {
 hardware ethernet 52:54:00:bf:60:a3;
 fixed-address 192.168.110.216;
}

host cp1 {
 hardware ethernet 52:54:00:98:49:40;
 fixed-address 192.168.110.217;
}

host cp2 {
 hardware ethernet 52:54:00:fe:8a:7c;
 fixed-address 192.168.110.218;
}

host cp3 {
 hardware ethernet 52:54:00:58:d3:31;
 fixed-address 192.168.110.219;
}

host w1 {
 hardware ethernet 52:54:00:38:8c:dd;
 fixed-address 192.168.110.220;
}

host w2 {
 hardware ethernet 52:54:00:b8:84:40;
 fixed-address 192.168.110.221;
}

Guarde y cierre el archivo.

Inicie el servicio DHCP y permita el servicio dhcp para la zona interna en el firewall, ejecute

[[email protected] ~]# systemctl start dhcpd
[[email protected] ~]# systemctl enable dhcpd
[[email protected] ~]# firewall-cmd --add-service=dhcp --zone=internal --permanent
success
[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]#

Configurar servidor web Apache

Necesitamos apache para servir el archivo de encendido y rhcos, así que primero lo instalaremos usando el siguiente comando,

[[email protected] ~]# dnf install -y  httpd

Cambie el puerto de escucha predeterminado de Apache de 80 a 8080 ejecutando el comando sed

[[email protected] ~]# sed -i 's/Listen 80/Listen 0.0.0.0:8080/' /etc/httpd/conf/httpd.conf

Inicie y habilite el servicio apache a través del siguiente comando,

[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd

Permitir el puerto de servicio de Apache (8080) para la zona interna,

[[email protected] ~]# firewall-cmd --add-port=8080/tcp --zone=internal --permanent
[[email protected] ~]# firewall-cmd --reload

Configurar HAProxy

Usaremos haproxy para equilibrar la carga de los servicios de Openshift como ectd, ingreso de http e ingreso de https y aplicaciones como la consola de openshift.

Entonces, primero instalemos haproxy ejecutando el siguiente comando dnf,

[[email protected] ~]#  dnf install -y haproxy

Edite el archivo haproxy y agréguele los siguientes contenidos

[[email protected] ~]# vi /etc/haproxy/haproxy.cfg
# Global settings
#---------------------------------------------------------------------
global
    maxconn     20000
    log         /dev/log local0 info
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    log                     global
    mode                    http
    option                  httplog
    option                  dontlognull
    option http-server-close
    option redispatch
    option forwardfor       except 127.0.0.0/8
    retries                 3
    maxconn                 20000
    timeout http-request    10000ms
    timeout http-keep-alive 10000ms
    timeout check           10000ms
    timeout connect         40000ms
    timeout client          300000ms
    timeout server          300000ms
    timeout queue           50000ms

# Enable HAProxy stats
listen stats
    bind :9000
    stats uri /stats
    stats refresh 10000ms

# Kube API Server
frontend k8s_api_frontend
    bind :6443
    default_backend k8s_api_backend
    mode tcp

backend k8s_api_backend
    mode tcp
    balance source
    server      ocp-bootstrap 192.168.110.216:6443 check
    server      cp1 192.168.110.217:6443 check
    server      cp2 192.168.110.218:6443 check
    server      cp3 192.168.110.219:6443 check

# OCP Machine Config Server
frontend ocp_machine_config_server_frontend
    mode tcp
    bind :22623
    default_backend ocp_machine_config_server_backend

backend ocp_machine_config_server_backend
    mode tcp
    balance source
    server      ocp-bootstrap 192.168.110.216:22623 check
    server      cp1 192.168.110.217:22623 check
    server      cp2 192.168.110.218:22623 check
    server      cp3 192.168.110.219:22623 check

# OCP Ingress - layer 4 tcp mode for each. Ingress Controller will handle layer 7.
frontend ocp_http_ingress_frontend
    bind :80
    default_backend ocp_http_ingress_backend
    mode tcp

backend ocp_http_ingress_backend
    balance source
    mode tcp
    server cp1 192.168.110.217:80 check
    server cp2 192.168.110.218:80 check
    server cp3 192.168.110.219:80 check
    server w1 192.168.110.220:80 check
    server w2 192.168.110.221:80 check

frontend ocp_https_ingress_frontend
    bind *:443
    default_backend ocp_https_ingress_backend
    mode tcp

backend ocp_https_ingress_backend
    mode tcp
    balance source
    server cp1 192.168.110.217:443 check
    server cp2 192.168.110.218:443 check
    server cp3 192.168.110.219:443 check
    server w1 192.168.110.220:443 check
    server w2 192.168.110.221:443 check

guardar y salir del archivo.

Inicie y habilite haproxy para realizar los cambios anteriores en el efecto

[[email protected] ~]# setsebool -P haproxy_connect_any 1
[[email protected] ~]# systemctl start haproxy
[[email protected] ~]# systemctl enable haproxy

Permita los puertos HAProxy que hemos definido en su archivo de configuración en el firewall del sistema operativo. Ejecutar debajo de los comandos,

[[email protected] ~]# firewall-cmd --add-port=6443/tcp --zone=internal --permanent
[[email protected] ~]# firewall-cmd --add-port=6443/tcp --zone=external --permanent
[[email protected] ~]# firewall-cmd --add-port=22623/tcp --zone=internal --permanent
[[email protected] ~]# firewall-cmd --add-service=http --zone=internal --permanent
[[email protected] ~]# firewall-cmd --add-service=http --zone=external --permanent
[[email protected] ~]# firewall-cmd --add-service=https --zone=internal --permanent
[[email protected] ~]# firewall-cmd --add-service=https --zone=external --permanent
[[email protected] ~]# firewall-cmd --add-port=9000/tcp --zone=external --permanent
[[email protected] ~]# firewall-cmd --reload
[[email protected] ~]#

Configurar servidor NFS

Necesitamos un servidor NFS para proporcionar el almacenamiento persistente al registro de OpenShift.

Ejecute el siguiente comando para instalar el servidor nfs,

[[email protected] ~]# dnf install nfs-utils -y

Cree el siguiente directorio y establezca los permisos necesarios. Este directorio se exportará como recurso compartido NFS,

[[email protected] ~]# mkdir -p /shares/registry
[[email protected] ~]# chown -R nobody:nobody /shares/registry
[[email protected] ~]# chmod -R 777 /shares/registry

Ahora exporte el recurso compartido agregando la siguiente línea al archivo /etc/exports.

[[email protected] ~]# vi /etc/exports
/shares/registry  192.168.110.0/24(rw,sync,root_squash,no_subtree_check,no_wdelay)

Guarde y cierre el archivo y ejecute 'exportfs -rv' para exportar el directorio

[[email protected] ~]# exportfs -rv
exporting 192.168.110.0/24:/shares/registry
[[email protected] ~]#

Iniciar y habilitar el servicio NFS

[[email protected] ~]# systemctl start nfs-server rpcbind nfs-mountd
[[email protected] ~]# systemctl enable nfs-server rpcbind

Permita el servicio NFS en el firewall del sistema operativo, ejecute los siguientes comandos,

[[email protected] ~]# firewall-cmd --zone=internal --add-service mountd --permanent
[[email protected] ~]# firewall-cmd --zone=internal --add-service rpc-bind --permanent
[[email protected] ~]# firewall-cmd --zone=internal --add-service nfs --permanent
[[email protected] ~]# firewall-cmd --reload

Paso 3) Generar manifiestos y archivos de encendido

Para generar archivos de encendido para nodos de arranque, plano de control y trabajadores, consulte los siguientes pasos

a)    Generar claves SSH

[[email protected] ~]# ssh-keygen

Estas claves ssh se utilizarán para acceder de forma remota a los nodos bootstrap, control plane y worker.

b)    Cree el archivo install-config.yaml con los siguientes contenidos

[[email protected] ~]# vi /ocp-install/install-config.yaml
apiVersion: v1
baseDomain: linuxtechi.lan        #base domain name
compute:
  - hyperthreading: Enabled
    name: worker
    replicas: 0 # Must be set to 0 for User Provisioned Installation as worker nodes will be manually deployed.
controlPlane:
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
  name: lab # Cluster name
networking:
  clusterNetwork:
    - cidr: 10.128.0.0/14
     hostPrefix: 23
  networkType: OpenShiftSDN
  serviceNetwork:
    - 172.30.0.0/16

platform:
  none: {}
fips: false
pullSecret: '{"auths": ...}'           # Copy the pullsecret here
sshKey: "ssh-ed25519 AAAA..."          # Copy ssh public key here

En las líneas 23 y 24, copie el contenido de la clave pública y secreta de extracción que generamos anteriormente.

Después de realizar los cambios, el archivo se verá como se muestra a continuación:

c)   Generar archivo de manifiestos

Ejecute siguiendo el comando openshift-install,

[[email protected] ~]# ~/openshift-install create manifests --dir ~/ocp-install

El mensaje de advertencia anterior dice que los nodos maestros son programables, lo que significa que podemos tener una carga de trabajo en los planos de control (los planos de control también funcionarán como nodos de trabajo). Si desea deshabilitar esto, ejecute el siguiente comando sed,

# sed -i 's/mastersSchedulable: true/mastersSchedulable: false/' ~/ocp-install/manifests/cluster-scheduler-02-config.yml

Nota:En mi caso, no lo estoy deshabilitando.

d)    Generar archivo de encendido y autenticación

Ejecutar debajo del comando openshift-install,

[[email protected] ~]# ~/openshift-install create ignition-configs --dir ~/ocp-install/

Salida,

e)    Servir manifiestos, encendido y archivo de imagen del sistema operativo central a través del servidor web

Cree el directorio /var/www/html/ocp4 y copie todos los archivos de '/root/ocp-install' a ocp4.

[[email protected] ~]# mkdir /var/www/html/ocp4
[[email protected] ~]# cp -R ~/ocp-install/* /var/www/html/ocp4
[[email protected] ~]# mv ~/rhcos-metal.x86_64.raw.gz /var/www/html/ocp4/rhcos

Establezca los permisos requeridos en el directorio ocp4

[[email protected] ~]# chcon -R -t httpd_sys_content_t /var/www/html/ocp4/
[[email protected] ~]# chown -R apache: /var/www/html/ocp4/
[[email protected] ~]# chmod 755 /var/www/html/ocp4/

Verifique si estos archivos son accesibles o no a través del comando curl

[[email protected] ~]# curl 192.168.110.215:8080/ocp4/

La salida debería verse como a continuación

Perfecto, ahora estamos listos para comenzar la implementación.

Paso 4) Iniciar la implementación de OpenShift

Inicie la máquina virtual de arranque con el archivo ISO rhcos-live. Obtendremos la siguiente pantalla

Cuando arranque con el archivo ISO, obtendremos la siguiente pantalla,

Escriba el comando coreos-installer y presione enter

$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos  --ignition-url http://192.168.110.215:8080/ocp4/bootstrap.ign --insecure-ignition

Una vez completada la instalación, obtendremos la siguiente pantalla,

Reinicie el nodo de arranque para que arranque con el disco duro esta vez.

$ sudo reboot

Del mismo modo, inicie todos los nodos del plano de tres controles con el archivo ISO de RHEL Core OS (rhcos). Una vez que se inicien los nodos de control, ejecute el siguiente comando y presione enter

$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos  --ignition-url http://192.168.110.215:8080/ocp4/master.ign --insecure-ignition

Reinicie el plano de control y arránquelo con el disco duro.

Repita este procedimiento para el resto de los planos de control y monitoree el proceso de arranque usando el siguiente comando.

[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug

Ahora, inicie ambos nodos de trabajo con el archivo ISO Core OS y una vez que se inicie, ejecute el siguiente comando en los nodos

$ sudo coreos-installer install /dev/sda --insecure --image-url http://192.168.110.215:8080/ocp4/rhcos  --ignition-url http://192.168.110.215:8080/ocp4/worker.ign --insecure-ignition

El proceso de arranque para los planos de control y los nodos de trabajo puede demorar de 10 a 15 minutos, según su infraestructura. Verifique el estado de los nodos usando los siguientes comandos

[[email protected] ~]# export KUBECONFIG=~/ocp-install/auth/kubeconfig
[[email protected] ~]# oc get nodes
NAME                     STATUS   ROLES           AGE   VERSION
cp1.lab.linuxtechi.lan   Ready    master,worker   69m   v1.22.0-rc.0+894a78b
cp2.lab.linuxtechi.lan   Ready    master,worker   66m   v1.22.0-rc.0+894a78b
cp3.lab.linuxtechi.lan   Ready    master,worker   68m   v1.22.0-rc.0+894a78b
[[email protected] ~]#

Ahora apruebe todos los CSR pendientes para los nodos trabajadores para que puedan unirse al clúster y estar listos. Ejecute el siguiente comando oc para ver la CSR pendiente

[[email protected] ~]# oc get csr

Ejecute el siguiente comando oc para aprobar las CSR pendientes

[[email protected] ~]# oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve

La salida de los dos comandos anteriores se vería a continuación:

Después de un par de minutos, los nodos de trabajo deberían unirse al clúster y deberían estar en estado listo, ejecute debajo de los comandos para confirmar lo mismo.

[[email protected] ~]# oc get nodes

Genial, lo anterior confirma que ambos nodos trabajadores se unen al clúster y están listos.

También verifique el estado de arranque y en la salida deberíamos obtener lo siguiente,

[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug

Lo anterior confirma que el proceso de arranque también se completó, y podemos detener y eliminar los recursos de VM de arranque y las entradas de arranque del archivo haproxy.

Esto concluye el artículo; Espero que lo hayas encontrado informativo. Comparta sus opiniones y comentarios.

Leer también :Cómo configurar un clúster de OpenShift de un solo nodo en RHEL 8


Linux
  1. Cómo instalar Python en Linux

  2. Cómo instalar el monitoreo de red VnStat en CentOS 7

  3. Cómo instalar Wireshark en Ubuntu 16.04 LTS

  4. ¿Cómo instalar Ubuntu Server sin conexión de red?

  5. Cómo migrar una instalación de Linux bare metal a una máquina virtual

Cómo instalar Wireshark Network Analyzer en Debian 11

Cómo instalar la herramienta de monitoreo de red Ntopng en Ubuntu 20.04

Cómo instalar OmniOS ce

Cómo instalar Cacti Network Monitoring en CentOS 8

Cómo instalar la red social Elgg en Ubuntu 20.04

Cómo instalar FreeNAS 11.1