GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare OpenShift 4.9 su Bare Metal (UPI)

Ciao Techies, come sai Openshift fornisce una piattaforma container e può essere installato sia in locale che nel cloud pubblico utilizzando diversi metodi come IPI (Installer Provisioned Installer), UPI (User Provisioned Infrastructure) e Assisted Bare Metal Installer.

In questo post dimostreremo come installare Openshift 4.9 su nodi bare metal con approccio UPI.

A scopo dimostrativo, sto utilizzando macchine virtuali KVM. Di seguito sono riportati i dettagli sulla configurazione del mio laboratorio,

Totale macchine virtuali:7

Nodo Bastione: 

  • OS – Rocky Linux 8 / CentOS 8,
  • RAM-4GB, vPCU-4,
  • Disco:120 GB
  • Rete:Gestione N/n – (169.144.104.228), ocp interna n/n – (192.168.110.115)

Nodo Bootstrap:

  • OS:sistema operativo principale
  • RAM:8 GB
  • vCPU:4
  • Disco:40 GB
  • Rete:rete interna OCP (192.168.110.116)

Nodo del piano di controllo 1:

  • OS:sistema operativo principale
  • RAM:10 GB
  • vCPU:6
  • Disco:60 GB
  • Rete:rete interna OCP (192.168.110.117)

Nodo del piano di controllo 2:

  • OS:sistema operativo principale
  • RAM:10 GB
  • vCPU:6
  • Disco:60 GB
  • Rete:rete interna OCP (192.168.110.118)

Nodo del piano di controllo 3:

  • OS:sistema operativo principale
  • RAM:10 GB
  • vCPU:6
  • Disco:60 GB
  • Rete:rete interna OCP (192.168.110.119)

Nodo lavoratore 1:

  • OS:sistema operativo principale
  • RAM:12 GB
  • vCPU:8
  • Disco:60 GB
  • Rete:rete interna OCP (192.168.110.120)

Nodo di lavoro 2:

  • OS:sistema operativo principale
  • RAM:12 GB
  • vCPU:8
  • Disco:60 GB
  • Rete:rete interna OCP (192.168.110.121)

Nota: Nell'hypervisor KVM, abbiamo creato una rete solo host per ocp-internal.

Usa il file e i comandi seguenti per creare una rete solo host in 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

Scarica il software Openshift dal portale Red Hat

a)    Accedi a Red Hat Portal utilizzando il seguente URL:

https://cloud.redhat.com/openshift

b)    Fai clic su Crea cluster

c)     Scegli la scheda Datacenter -> Fai clic su BareMetal

d)    Seleziona il tipo di installazione come "UPI" (infrastruttura fornita dall'utente)

e)    Scarica quanto segue

  • Programma di installazione OpenShift
  • Tira il segreto
  • Interfaccia della riga di comando
  • RHCOS ISO
  • RHCOS RAW

Passiamo ora ai passaggi di installazione di OpenShift

Passaggio 1) Prepara il nodo Bastion

Crea una macchina virtuale con le risorse sopra menzionate per bastion, puoi installare il sistema operativo Rocky Linux 8 o CentOS 8.  Assegna l'indirizzo IP dalla rete interna di gestione e ocp.

Allo stesso modo, crea bootstrap, controlla le VM del piano e le VM di lavoro e collega la rete OCP (hostnet) all'interfaccia e annota il loro indirizzo mac. Quindi, nel mio caso, di seguito sono riportati gli indirizzi MAC,

  • Cinturino:  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

Fase 2) Configura i servizi sul nodo bastion

Trasferisci il software Openshift scaricato, incluso il segreto nel nodo bastion nella cartella principale.

Estrai il file tar del client openshift usando il seguente comando tar,

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

Conferma l'installazione dello strumento client openshift e la sua versione eseguendo,

# oc version
# kubectl version

L'output del comando precedente sarebbe simile al seguente:

Estrai il file tar del programma di installazione di Openshift,

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

Configura zone e mascheramento (SNAT)

Nel mio nodo bastion, ho due carte lan, ens3 e ens8. Su ens3 è configurata la rete esterna o di gestione e su ens8 è configurata la rete interna ocp. Quindi, definisci le seguenti zone e abilita il masquerading su entrambe le zone.

# 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

Verifica le impostazioni della zona eseguendo i seguenti comandi firewall-cmd,

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

Ora configuriamo DNS, DHCP, Apache, HAProxy e NFS Service.

Nota:a scopo dimostrativo, sto utilizzando "linuxtechi.lan" come dominio di base.

Configura server DNS

Per installare il server DNS e le sue dipendenze, esegui il comando dnf

# dnf install bind bind-utils -y

Modifica /etc/named.conf e assicurati che il file abbia i seguenti contenuti,

# vi /etc/named.conf

Ora crea un file di zona avanti e indietro,

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

Salva ed esci dal file.

Crea un file di zona inversa con le seguenti voci,

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

Salva e chiudi il file, quindi avvia e abilita il servizio DNS

# systemctl start named
# systemctl enable named

Consenti la porta DNS nel firewall, esegui

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

Configura il server DHCP 

Installa e configura il server DHCP, associa l'indirizzo mac di bootstrap, i piani di controllo e i nodi di lavoro ai rispettivi IP. Esegui il comando seguente per installare il pacchetto DHCP,

# dnf install -y dhcp-server

Modifica il file /etc/dhcp/dhcpd.conf e aggiungi i seguenti contenuti, usa gli indirizzi mac che abbiamo raccolto nel passaggio 1 e specifica l'indirizzo IP dei nodi in base alle voci DNS. Quindi nel mio caso, il contenuto del file apparirà come di seguito,

[[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;
}

Salva e chiudi il file.

Avvia il servizio DHCP e consenti il ​​servizio DHCP per la zona interna nel firewall, esegui

[[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] ~]#

Configura server Web Apache

Abbiamo bisogno di apache per servire il file di accensione e rhcos, quindi installiamolo prima usando il comando seguente,

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

Cambia la porta di ascolto di apache predefinita da 80 a 8080 eseguendo sotto il comando sed

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

Avvia e abilita il servizio Apache tramite il comando sottostante,

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

Consenti la porta di servizio Apache (8080) per la zona interna,

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

Configura HAProxy

Useremo haproxy per bilanciare il carico dei servizi Openshift come ectd, ingress http e ingress https e app come openshift console.

Quindi, installiamo prima haproxy eseguendo il seguente comando dnf,

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

Modifica il file haproxy e aggiungi i seguenti contenuti

[[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

salva ed esci dal file.

Avvia e abilita haproxy per apportare le modifiche precedenti all'effetto

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

Consenti le porte HAProxy che abbiamo definito nel suo file di configurazione nel firewall del sistema operativo. Esegui sotto i comandi,

[[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] ~]#

Configura server NFS

Abbiamo bisogno del server NFS per fornire la memoria permanente al registro di OpenShift.

Esegui il comando seguente per installare il server nfs,

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

Crea la seguente directory e imposta le autorizzazioni richieste. Questa directory verrà esportata come condivisione NFS,

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

Ora esporta la condivisione aggiungendo la seguente riga al file /etc/exports.

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

Salva e chiudi il file ed esegui 'exportfs -rv' per esportare la directory

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

Avvia e abilita il servizio NFS

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

Consenti il ​​servizio NFS nel firewall del sistema operativo, esegui i seguenti comandi

[[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

Fase 3) Genera file manifest e Ignition

Per generare file di accensione per bootstrap, piano di controllo e nodi di lavoro, fai riferimento ai seguenti passaggi

a)    Genera chiavi SSH

[[email protected] ~]# ssh-keygen

Queste chiavi ssh verranno utilizzate per accedere in remoto al bootstrap, al piano di controllo e ai nodi di lavoro.

b)    Crea il file install-config.yaml con i seguenti contenuti

[[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

Nella riga 23 e 24 copia il contenuto del segreto pull e della chiave pubblica che abbiamo generato sopra.

Dopo aver apportato le modifiche, il file apparirà come di seguito:

c)   Genera file manifest

Esegui il seguente comando openshift-install,

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

Il messaggio di avviso sopra dice che i nodi master sono programmabili, significa che possiamo avere carico di lavoro sui piani di controllo (i piani di controllo funzioneranno anche come nodi di lavoro). Se desideri disabilitarlo, esegui il seguente comando sed,

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

Nota:nel mio caso, non lo disattivo.

d)    Genera file di accensione e autenticazione

Esegui sotto il comando openshift-install,

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

Uscita,

e)    Servire manifest, file di immagine del sistema operativo di accensione e di base tramite server Web

Crea la directory /var/www/html/ocp4 e copia tutti i file da '/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

Imposta i permessi richiesti sulla directory 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/

Verifica se questi file sono accessibili o meno tramite il comando curl

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

L'output dovrebbe apparire come sotto

Perfetto, ora siamo pronti per iniziare la distribuzione.

Passaggio 4) Avvia la distribuzione di OpenShift

Avvia la VM bootstrap con il file ISO rhcos-live. Avremo la seguente schermata

Quando si avvia con il file ISO, avremo la seguente schermata,

Digita il comando coreos-installer e premi invio

$ 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 volta completata l'installazione, avremo la seguente schermata,

Riavvia il nodo bootstrap in modo che questa volta si avvii con il disco rigido.

$ sudo reboot

Allo stesso modo, avvia tutti i tre nodi del piano di controllo con il file ISO RHEL Core OS (rhcos). Una volta che i nodi di controllo si avviano, esegui il comando seguente e premi invio

$ 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

Riavvia il piano di controllo e avvialo con il disco rigido.

Ripetere questa procedura per il resto dei piani di controllo e monitorare il processo di bootstrap utilizzando il comando seguente.

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

Ora, avvia entrambi i nodi di lavoro con il file ISO di Core OS e una volta avviato, esegui il seguente comando sui nodi

$ 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

Il processo di bootstrap per i piani di controllo e i nodi di lavoro può richiedere da 10 a 15 minuti a seconda dell'infrastruttura. Verifica lo stato dei nodi utilizzando i seguenti comandi

[[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] ~]#

Ora approva tutti i CSR in sospeso per i nodi di lavoro in modo che possano unirsi al cluster e diventare pronti. Esegui il seguente comando oc per visualizzare la CSR in sospeso

[[email protected] ~]# oc get csr

Esegui il seguente comando oc per approvare i CSR in sospeso

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

L'output dei due comandi precedenti sarebbe simile al seguente:

Dopo un paio di minuti, i nodi di lavoro dovrebbero entrare a far parte del cluster e dovrebbero essere in stato pronto, esegui sotto i comandi per confermare lo stesso.

[[email protected] ~]# oc get nodes

Ottimo, sopra conferma che entrambi i nodi di lavoro si uniscono al cluster e sono in stato pronto.

Controlla anche lo stato del bootstrap e nell'output dovremmo ottenere quanto segue,

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

Sopra conferma che anche il processo di bootstrap è stato completato e siamo pronti a interrompere ed eliminare le risorse della VM bootstrap e le voci di bootstrap dal file haproxy.

Questo conclude l'articolo; Spero che lo trovi informativo. Si prega di condividere feedback e commenti.

Leggi anche :Come configurare il cluster OpenShift a nodo singolo su RHEL 8


Linux
  1. Come installare Python su Linux

  2. Come installare VnStat Network Monitoring su CentOS 7

  3. Come installare Wireshark su Ubuntu 16.04 LTS

  4. Come installare il server Ubuntu senza connessione di rete?

  5. Come migrare un'installazione Linux bare metal su una macchina virtuale

Come installare Wireshark Network Analyzer su Debian 11

Come installare lo strumento di monitoraggio della rete Ntopng su Ubuntu 20.04

Come installare OmniOS ce

Come installare Cacti Network Monitoring su CentOS 8

Come installare Elgg Social Network su Ubuntu 20.04

Come installare FreeNAS 11.1