Hallo Techies, wie Sie wissen, bietet Openshift eine Container-Plattform und kann entweder lokal oder in der Public Cloud mit verschiedenen Methoden wie IPI (Installer Provisioned Installer), UPI (User Provisioned Infrastructure) und Assisted Bare Metal Installer installiert werden.
In diesem Beitrag zeigen wir, wie Openshift 4.9 auf Bare-Metal-Knoten mit UPI-Ansatz installiert wird.
Zu Demonstrationszwecken verwende ich virtuelle KVM-Maschinen. Im Folgenden sind meine Laboreinrichtungsdetails aufgeführt,
Virtuelle Maschinen insgesamt:7
Bastion-Knoten:
- Betriebssystem – Rocky Linux 8 / CentOS 8,
- RAM-4 GB, vPCU-4,
- Festplatte – 120 GB
- Netzwerk:Management n/w – (169.144.104.228), ocp internal n/w – (192.168.110.115)
Bootstrap-Knoten:
- Betriebssystem:Core-Betriebssystem
- RAM:8 GB
- vCPU:4
- Festplatte:40 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.116)
Steuerebene 1 Knoten:
- Betriebssystem:Core-Betriebssystem
- RAM:10 GB
- vCPU:6
- Festplatte:60 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.117)
Steuerebenen-2-Knoten:
- Betriebssystem:Core-Betriebssystem
- RAM:10 GB
- vCPU:6
- Festplatte:60 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.118)
Steuerebenen-3-Knoten:
- Betriebssystem:Core-Betriebssystem
- RAM:10 GB
- vCPU:6
- Festplatte:60 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.119)
Worker-Knoten 1:
- Betriebssystem:Core-Betriebssystem
- RAM:12 GB
- vCPU:8
- Festplatte:60 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.120)
Worker-Knoten 2:
- Betriebssystem:Core-Betriebssystem
- RAM:12 GB
- vCPU:8
- Festplatte:60 GB
- Netzwerk:Internes OCP-Netzwerk (192.168.110.121)
Hinweis: Im KVM-Hypervisor haben wir ein Host-only-Netzwerk für ocp-internal erstellt.
Verwenden Sie die folgende Datei und die folgenden Befehle, um ein Nur-Host-Netzwerk in KVM zu erstellen,
$ 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
Laden Sie die Openshift-Software vom Red Hat-Portal herunter
a) Melden Sie sich über die folgende URL beim Red Hat Portal an:
https://cloud.redhat.com/openshift
b) Klicken Sie auf Cluster erstellen
c) Wählen Sie die Registerkarte „Rechenzentrum“ –> Klicken Sie auf „BareMetal“
d) Wählen Sie als Installationstyp „UPI“ (vom Benutzer bereitgestellte Infrastruktur) aus
e) Laden Sie Folgendes herunter
- OpenShift-Installationsprogramm
- Geheimnis ziehen
- Befehlszeilenschnittstelle
- RHCOS-ISO
- RHCOS RAW
Kommen wir nun zu den Installationsschritten von OpenShift
Schritt 1) Bastion-Knoten vorbereiten
Erstellen Sie eine virtuelle Maschine mit den oben genannten Ressourcen für Bastion. Sie können das Betriebssystem entweder Rocky Linux 8 oder CentOS 8 installieren. Weisen Sie die IP-Adresse von der Verwaltung und dem internen OCP-Netzwerk zu.
Erstellen Sie auf ähnliche Weise Bootstrap, Steuerungsebenen-VMs und Worker-VMs und hängen Sie das OCP-Netzwerk (Hostnet) an die Schnittstelle an und notieren Sie ihre Mac-Adresse. In meinem Fall folgen also die MAC-Adressen,
- 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
Schritt 2) Dienste auf dem Bastion-Knoten konfigurieren
Übertragen Sie die heruntergeladene Openshift-Software einschließlich des Geheimnisses auf den Bastion-Knoten im Stammordner.
Extrahieren Sie die Tar-Datei des OpenShift-Clients mit dem folgenden Tar-Befehl,
# tar xvf openshift-client-linux.tar.gz # mv oc kubectl /usr/local/bin
Bestätigen Sie die Installation des OpenShift-Client-Tools und dessen Version, indem Sie
ausführen# oc version # kubectl version
Die Ausgabe des obigen Befehls würde wie folgt aussehen:
Extrahieren Sie die Tar-Datei des Openshift-Installationsprogramms
# tar xpvf openshift-install-linux.tar.gz README.md openshift-install #
Zonen und Masquerading (SNAT) konfigurieren
In meinem Bastionsknoten habe ich zwei LAN-Karten, ens3 und ens8. Auf ens3 wird das externe oder Verwaltungsnetzwerk konfiguriert und auf ens8 wird das interne ocp-Netzwerk konfiguriert. Definieren Sie also die folgenden Zonen und aktivieren Sie das Masquerading für beide Zonen.
# 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
Überprüfen Sie die Zoneneinstellungen, indem Sie die folgenden Firewall-cmd-Befehle ausführen,
# firewall-cmd --list-all --zone=internal # firewall-cmd --list-all --zone=external
Lassen Sie uns nun DNS, DHCP, Apache, HAProxy und NFS Service konfigurieren.
Hinweis:Zu Demonstrationszwecken verwende ich „linuxtechi.lan“ als Basisdomäne.
DNS-Server konfigurieren
Um den DNS-Server und seine Abhängigkeiten zu installieren, führen Sie den folgenden dnf-Befehl
aus# dnf install bind bind-utils -y
Bearbeiten Sie /etc/named.conf und stellen Sie sicher, dass die Datei den folgenden Inhalt hat,
# vi /etc/named.conf
Erstellen Sie nun eine Forward- und Reverse-Zonendatei,
# mkdir /etc/named/zones # vi /etc/named/zones/db.linuxtechi.lan
Speichern und beenden Sie die Datei.
Erstellen Sie eine Reverse-Zone-Datei mit den folgenden Einträgen,
# vi /etc/named/zones/db.reverse
Speichern und schließen Sie die Datei und starten und aktivieren Sie dann den DNS-Dienst
# systemctl start named # systemctl enable named
Lassen Sie den DNS-Port in der Firewall zu, führen Sie
aus# firewall-cmd --add-port=53/udp --zone=internal --permanent # firewall-cmd --reload
DHCP-Server konfigurieren
Installieren und konfigurieren Sie den DHCP-Server, binden Sie die Mac-Adresse von Bootstrap, Control Planes und Worker Nodes an ihre jeweiligen IPs. Führen Sie den folgenden Befehl aus, um das DHCP-Paket zu installieren,
# dnf install -y dhcp-server
Bearbeiten Sie die Datei /etc/dhcp/dhcpd.conf und fügen Sie die folgenden Inhalte hinzu, verwenden Sie die Mac-Adressen, die wir in Schritt 1 gesammelt haben, und geben Sie die IP-Adresse der Knoten gemäß den DNS-Einträgen an. In meinem Fall sieht der Inhalt der Datei also wie folgt aus:
[[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; }
Speichern und schließen Sie die Datei.
Starten Sie den DHCP-Dienst und erlauben Sie den DHCP-Dienst für die interne Zone in der Firewall, führen Sie
aus[[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] ~]#
Apache-Webserver konfigurieren
Wir brauchen Apache, um die Zünd- und Rhcos-Datei bereitzustellen, also installieren wir es zuerst mit dem folgenden Befehl,
[[email protected] ~]# dnf install -y httpd
Ändern Sie den standardmäßigen Apache-Listening-Port von 80 auf 8080, indem Sie den Befehl unterhalb des Befehls sed ausführen
[[email protected] ~]# sed -i 's/Listen 80/Listen 0.0.0.0:8080/' /etc/httpd/conf/httpd.conf
Starten und aktivieren Sie den Apache-Dienst über den folgenden Befehl,
[[email protected] ~]# systemctl start httpd [[email protected] ~]# systemctl enable httpd
Apache-Dienstport (8080) für interne Zone zulassen,
[[email protected] ~]# firewall-cmd --add-port=8080/tcp --zone=internal --permanent [[email protected] ~]# firewall-cmd --reload
HAProxy konfigurieren
Wir werden Haproxy verwenden, um die Openshift-Dienste wie ectd, ingress http und ingress https und Apps wie die Openshift-Konsole auszugleichen.
Lassen Sie uns also zuerst Haproxy installieren, indem Sie den folgenden dnf-Befehl ausführen,
[[email protected] ~]# dnf install -y haproxy
Bearbeiten Sie das Haproxy-Konfile und fügen Sie den folgenden Inhalt hinzu
[[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
Speichern und beenden Sie die Datei.
Starten und aktivieren Sie Haproxy, um die obigen Änderungen am Effekt vorzunehmen
[[email protected] ~]# setsebool -P haproxy_connect_any 1 [[email protected] ~]# systemctl start haproxy [[email protected] ~]# systemctl enable haproxy
Lassen Sie HAProxy-Ports zu, die wir in seiner Konfigurationsdatei in der Betriebssystem-Firewall definiert haben. Run below-Befehle,
[[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] ~]#
NFS-Server konfigurieren
Wir benötigen einen NFS-Server, um den dauerhaften Speicher für die OpenShift-Registrierung bereitzustellen.
Führen Sie den folgenden Befehl aus, um den NFS-Server zu installieren,
[[email protected] ~]# dnf install nfs-utils -y
Erstellen Sie das folgende Verzeichnis und legen Sie die erforderlichen Berechtigungen fest. Dieses Verzeichnis wird als NFS-Freigabe exportiert,
[[email protected] ~]# mkdir -p /shares/registry [[email protected] ~]# chown -R nobody:nobody /shares/registry [[email protected] ~]# chmod -R 777 /shares/registry
Exportieren Sie nun die Freigabe, indem Sie die folgende Zeile zur Datei /etc/exports hinzufügen.
[[email protected] ~]# vi /etc/exports /shares/registry 192.168.110.0/24(rw,sync,root_squash,no_subtree_check,no_wdelay)
Speichern und schließen Sie die Datei und führen Sie „exportfs -rv“ aus, um das Verzeichnis zu exportieren
[[email protected] ~]# exportfs -rv exporting 192.168.110.0/24:/shares/registry [[email protected] ~]#
NFS-Dienst starten und aktivieren
[[email protected] ~]# systemctl start nfs-server rpcbind nfs-mountd [[email protected] ~]# systemctl enable nfs-server rpcbind
Erlauben Sie den NFS-Dienst in der Betriebssystem-Firewall, führen Sie die folgenden Befehle aus,
[[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
Schritt 3) Generieren Sie Manifeste und Ignition-Dateien
Um Ignition-Dateien für Bootstrap-, Control Plane- und Worker-Knoten zu generieren, befolgen Sie die folgenden Schritte
a) SSH-Schlüssel generieren
[[email protected] ~]# ssh-keygen
Diese SSH-Schlüssel werden für den Fernzugriff auf Bootstrap, Control Plane und Worker-Knoten verwendet.
b) Erstellen Sie die install-config.yaml-Datei mit folgendem Inhalt
[[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
Kopieren Sie in Zeile 23 und 24 den Inhalt von pull secret und public key, den wir oben generiert haben.
Nachdem Sie die Änderungen vorgenommen haben, sieht die Datei wie folgt aus:
c) Manifestdatei erstellen
Führen Sie den folgenden openshift-install-Befehl aus,
[[email protected] ~]# ~/openshift-install create manifests --dir ~/ocp-install
Die obige Warnmeldung besagt, dass Master-Knoten planbar sind, was bedeutet, dass wir Arbeitslast auf Steuerungsebenen haben können (Steuerungsebenen funktionieren auch als Worker-Knoten). Wenn Sie dies deaktivieren möchten, führen Sie den folgenden sed-Befehl aus,
# sed -i 's/mastersSchedulable: true/mastersSchedulable: false/' ~/ocp-install/manifests/cluster-scheduler-02-config.yml
Hinweis:In meinem Fall deaktiviere ich es nicht.
d) Ignition- und Authentifizierungsdatei generieren
Führen Sie den Befehl openshift-install aus,
[[email protected] ~]# ~/openshift-install create ignition-configs --dir ~/ocp-install/
Ausgabe,
e) Bereitstellen von Manifesten, Ignition- und Core-OS-Image-Datei über einen Webserver
Erstellen Sie das Verzeichnis /var/www/html/ocp4 und kopieren Sie alle Dateien von ‚/root/ocp-install‘ nach 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
Legen Sie die erforderlichen Berechtigungen für das ocp4-Verzeichnis fest
[[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/
Überprüfen Sie, ob auf diese Dateien zugegriffen werden kann oder nicht, indem Sie den Curl-Befehl verwenden
[[email protected] ~]# curl 192.168.110.215:8080/ocp4/
Die Ausgabe sollte wie unten aussehen
Perfekt, jetzt können wir mit der Bereitstellung beginnen.
Schritt 4) OpenShift-Bereitstellung starten
Booten Sie die Bootstrap-VM mit der rhcos-live-ISO-Datei. Wir erhalten den folgenden Bildschirm
Wenn es mit der ISO-Datei hochfährt, erhalten wir den folgenden Bildschirm,
Geben Sie den Befehl coreos-installer ein und drücken Sie die Eingabetaste
$ 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
Sobald die Installation abgeschlossen ist, erhalten wir den folgenden Bildschirm,
Starten Sie den Bootstrap-Knoten neu, sodass er dieses Mal mit der Festplatte hochfährt.
$ sudo reboot
Booten Sie auf ähnliche Weise alle Knoten mit drei Steuerungsebenen mit der RHEL Core OS (rhcos) ISO-Datei. Führen Sie nach dem Hochfahren der Steuerknoten den folgenden Befehl aus und drücken Sie die Eingabetaste
$ 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
Starten Sie die Steuerungsebene neu und booten Sie sie mit der Festplatte.
Wiederholen Sie diesen Vorgang für die restlichen Steuerungsebenen und überwachen Sie den Bootstrap-Prozess mit dem folgenden Befehl.
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug
Starten Sie nun beide Worker-Knoten mit der Core OS ISO-Datei und führen Sie nach dem Hochfahren den folgenden Befehl auf den Knoten aus
$ 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
Der Bootstrap-Prozess für Steuerungsebenen und Worker-Knoten kann je nach Infrastruktur 10 bis 15 Minuten dauern. Überprüfen Sie den Status der Knoten mit den folgenden Befehlen
[[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] ~]#
Genehmigen Sie jetzt alle ausstehenden CSR für die Worker-Knoten, damit sie dem Cluster beitreten und bereit werden können. Führen Sie den folgenden oc-Befehl aus, um die ausstehende CSR anzuzeigen
[[email protected] ~]# oc get csr
Führen Sie den folgenden oc-Befehl aus, um die ausstehenden CSRs zu genehmigen
[[email protected] ~]# oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
Die Ausgabe der beiden obigen Befehle würde wie folgt aussehen:
Nach ein paar Minuten sollten Worker-Knoten dem Cluster beitreten und bereit sein. Führen Sie die folgenden Befehle aus, um dasselbe zu bestätigen.
[[email protected] ~]# oc get nodes
Großartig, oben wird bestätigt, dass beide Worker-Knoten dem Cluster beitreten und bereit sind.
Überprüfen Sie auch den Status von Bootstrap und in der Ausgabe sollten wir Folgendes erhalten:
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug
Oben wird bestätigt, dass der Bootstrap-Prozess ebenfalls abgeschlossen ist und wir bereit sind, Bootstrap-VM-Ressourcen und Bootstrap-Einträge aus der Haproxy-Datei zu stoppen und zu löschen.
Damit ist der Artikel abgeschlossen; Ich hoffe, Sie finden es informativ. Bitte teilen Sie uns Ihr Feedback und Ihre Kommentare mit.
Auch lesen :So richten Sie OpenShift-Cluster mit einem Knoten auf RHEL 8 ein