Ahoj technici, jak víte, Openshift poskytuje kontejnerovou platformu a lze ji nainstalovat buď na onprem, nebo do veřejného cloudu pomocí různých metod, jako je IPI (Installer Provisioned Installer), UPI (User Provisioned Infrastructure) a Assisted Bare Metal installer.
V tomto příspěvku si ukážeme, jak nainstalovat Openshift 4.9 na holé kovové uzly s přístupem UPI.
Pro demonstrační účely používám virtuální stroje KVM. Níže jsou uvedeny podrobnosti o nastavení mé laboratoře,
Celkový počet virtuálních strojů:7
Bastion Node:
- OS – Rocky Linux 8 / CentOS 8,
- RAM – 4 GB, vPCU-4,
- Disk – 120 GB
- Síť:Správa N/w – (169.144.104.228), OCP interní n/w – (192.168.110.115)
Bootstrap Node:
- OS:Základní OS
- RAM:8 GB
- vCPU:4
- Disk:40 GB
- Síť:Interní síť OCP (192.168.110.116)
Uzel řídicí roviny 1:
- OS:Základní OS
- RAM:10 GB
- vCPU:6
- Disk:60 GB
- Síť:Interní síť OCP (192.168.110.117)
Uzel řídicí roviny 2:
- OS:Základní OS
- RAM:10 GB
- vCPU:6
- Disk:60 GB
- Síť:Interní síť OCP (192.168.110.118)
Uzel řídicí roviny 3:
- OS:Základní OS
- RAM:10 GB
- vCPU:6
- Disk:60 GB
- Síť:Interní síť OCP (192.168.110.119)
Pracovní uzel 1:
- OS:Základní OS
- RAM:12 GB
- vCPU:8
- Disk:60 GB
- Síť:Interní síť OCP (192.168.110.120)
Pracovní uzel 2:
- OS:Základní OS
- RAM:12 GB
- vCPU:8
- Disk:60 GB
- Síť:Interní síť OCP (192.168.110.121)
Poznámka: V KVM hypervisoru jsme vytvořili pouze hostitelskou síť pro ocp-internal.
Pomocí následujícího souboru a příkazů vytvořte v KVM síť pouze hostitele,
$ cat hostonly.xml$ sudo virsh net-define hostonly.xml$ virsh net-start net-hostnet$ virsh autostart hostnet$ sudo systemctl restart libvirtd hostnet
Stáhněte si Openshift Software z portálu Red Hat
a) Přihlaste se k portálu Red Hat pomocí následující adresy URL:
https://cloud.redhat.com/openshift
b) Klikněte na Vytvořit cluster
c) Vyberte kartu Datacenter –> Klikněte na BareMetal
d) Vyberte Typ instalace jako „UPI“ (Infrastruktura poskytovaná uživatelem)
e) Stáhněte si následující
- Instalační program OpenShift
- Vytáhněte tajemství
- Rozhraní příkazového řádku
- RHCOS ISO
- RHCOS RAW
Pojďme nyní přejít k instalačním krokům OpenShift
Krok 1) Připravte Bastion Node
Vytvořte virtuální stroj s výše uvedenými prostředky pro baštu, můžete nainstalovat OS Rocky Linux 8 nebo CentOS 8. Přidělte IP adresu ze správy a vnitřní sítě ocp.
Podobně vytvořte bootstrap, řiďte virtuální počítače a pracovní virtuální počítače a připojte síť OCP (hostnet) k rozhraní a poznamenejte si jejich mac adresu. Takže v mém případě následují MAC adresy,
- 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
Krok 2) Nakonfigurujte služby v uzlu bastion
Přeneste stažený software Openshift včetně tajemství do uzlu bastion do kořenové složky.
Extrahujte soubor tar klienta openshift pomocí následujícího příkazu tar,
# tar xvf openshift-client-linux.tar.gz# mv oc kubectl /usr/local/bin
Potvrďte instalaci klientského nástroje openshift a jeho verzi spuštěním
# oc verze# verze kubectl
Výstup výše uvedeného příkazu bude vypadat následovně:
Rozbalte soubor tar instalačního programu Openshift,
# tar xpvf openshift-install-linux.tar.gzREADME.mdopenshift-install#
Konfigurace zón a maskování (SNAT)
V mém bastionovém uzlu mám dvě lan karty, ens3 a ens8. Na ens3 je nakonfigurována externí síť nebo síť pro správu a na ens8 je nakonfigurována interní síť ocp. Definujte tedy následující zóny a povolte maskování v obou zónách.
# připojení nmcli upravit ens8 connection.zone internal# nmcli connection upravit 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
Ověřte nastavení zóny spuštěním následujících příkazů firewall-cmd,
# firewall-cmd --list-all --zone=internal# firewall-cmd --list-all --zone=external
Nyní nakonfigurujeme DNS, DHCP, Apache, HAProxy a NFS Service.
Poznámka:Pro účely demonstrace používám „linuxtechi.lan“ jako základní doménu.
Konfigurace serveru DNS
Chcete-li nainstalovat DNS server a jeho závislosti, spusťte následující příkaz dnf
# dnf install bind bind-utils -y
Upravte /etc/named.conf a ujistěte se, že soubor má následující obsah,
# vi /etc/named.conf
Nyní vytvořte soubor dopředné a zpětné zóny
# mkdir /etc/named/zones# vi /etc/named/zones/db.linuxtechi.lan
Uložte a ukončete soubor.
Vytvořte soubor reverzní zóny s následujícími položkami,
# vi /etc/named/zones/db.reverse
Uložte a zavřete soubor a poté spusťte a povolte službu DNS
# spuštění systemctl pojmenované# povolení systemctl pojmenované
Povolte port DNS ve firewallu, spusťte
# firewall-cmd --add-port=53/udp --zone=internal --permanent# firewall-cmd --reload
Konfigurace serveru DHCP
Nainstalujte a nakonfigurujte server dhcp, svažte mac adresu bootstrapu, řídicích rovin a pracovních uzlů s jejich příslušnými IP. Spusťte níže uvedený příkaz a nainstalujte balíček dhcp,
# dnf install -y dhcp-server
Upravte soubor /etc/dhcp/dhcpd.conf a přidejte následující obsah, použijte mac adresy, které jsme shromáždili v kroku 1, a zadejte IP adresy uzlů podle záznamů DNS. Takže v mém případě bude obsah souboru vypadat níže,
[[email protected] ~]# vi /etc/dhcp/dhcpd.confauthoritative;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 maska sítě 255.255.255.0 { option routers 192.168.110.215; # lan option maska podsítě 255.255.255.0; možnost název domény „linuxtechi.lan“; možnost servery doménových jmen 192.168.110.215; rozsah 192.168.110.216 192.168.110.245;}hostitel ocp-bootstrap { hardwarový ethernet 52:54:00:bf:60:a3; pevná adresa 192.168.110.216;}host cp1 { hardwarový ethernet 52:54:00:98:49:40; pevná adresa 192.168.110.217;}host cp2 { hardwarový ethernet 52:54:00:fe:8a:7c; pevná adresa 192.168.110.218;}host cp3 { hardwarový ethernet 52:54:00:58:d3:31; pevná adresa 192.168.110.219;}hostitel w1 { hardwarový ethernet 52:54:00:38:8c:dd; pevná adresa 192.168.110.220;}hostitel w2 { hardwarový ethernet 52:54:00:b8:84:40; pevná adresa 192.168.110.221;}
Uložte a zavřete soubor.
Spusťte službu DHCP a povolte službu dhcp pro vnitřní zónu ve firewallu, spusťte
[[e-mail chráněný] ~]# systemctl spuštění dhcpd[[e-mail chráněný] ~]# systemctl povolení dhcpd[[e-mail chráněný] ~]# firewall-cmd --add-service=dhcp --zone=internal -- permanentsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#
Konfigurace webového serveru Apache
Potřebujeme apache, aby obsluhoval zapalování a soubor rhcos, takže jej nejprve nainstalujme pomocí níže uvedeného příkazu,
[[email protected] ~]# instalace dnf -y httpd
Změňte výchozí port pro naslouchání Apache z 80 na 8080 spuštěním příkazu sed
[[email protected] ~]# sed -i 's/Listen 80/Listen 0.0.0.0:8080/' /etc/httpd/conf/httpd.conf
Spusťte a povolte službu apache pomocí níže uvedeného příkazu,
[[e-mail chráněný] ~]# systemctl start httpd[[email protected] ~]# systemctl povolení httpd
Povolit port služby Apache (8080) pro vnitřní zónu,
[[e-mail chráněný] ~]# cmd brány firewall --add-port=8080/tcp --zone=internal --permanent[[e-mail chráněný] ~]# cmd brány firewall --reload
Nakonfigurujte HAProxy
K vyvážení zatížení služeb Openshift jako ectd, ingress http a ingress https a aplikací jako konzole openshift použijeme haproxy.
Nejprve tedy nainstalujme haproxy spuštěním následujícího příkazu dnf,
[[email protected] ~]# dnf install -y haproxy
Upravte haproxy confile a přidejte do něj následující obsah
[[email protected] ~]# vi /etc/haproxy/haproxy.cfg# Globální nastavení#-------------------------- -------------------------------------------globální maxconn 20000 log /dev/ log local0 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid uživatel haproxy skupina haproxy démon -------------------------------------------------- ----------# běžné výchozí hodnoty, které všechny sekce 'naslouchat' a 'backend' # použijí, pokud nejsou označeny ve svém bloku#---------------- -------------------------------------------------- --- Výchozí hodnoty protokolu Globální režim HTTP HTTPLOG Volba HTTPlog Volba HTTP-Server-Close Option Option Redispatch Coption FordFor s výjimkou 127.0.0.0/8 opakování 3 MAXCONN 20000 TIMEOUT HTTP-PLATBA 10000MS TIMEOUT HTTP -Keepe-Alive 10000ms Timeout Check 10000ms Timeout Connect 40000ms Timeout Connect 40000ms Timeout Client 300000ms Timeout Server 300000ms TimeOut Queue 0000MS # Povolit HAPROXY Statistika Statistiky Bind:9000 Statistiky HAPROXY Statistika Statistiky:9000 Statistiky URI / statistiky Statistiky Aktualizace 10000ms # Kube API ServerFrontend K8S_API_FRONTEND VÁS:6443 Default_backend K8S_API_BACKEND TCPBACKEND K8S_API_BACBACEND MODE TCPBACKEND K8S_API_BAPENDENT TCP bilance zdrojový server ocp-bootstrap 192.168.110.216:6443 kontrola serveru CP1 192.168.110.217:6443 check serveru CP2 192.168.110.218:6443 check serveru CP3 192.168.110.219:6443 check # OCP Machine Config Serverfrontend ocp_machine_config_server_frontend režim tcp bind:22.623 default_backend ocp_machine_config_server_backendbackend ocp_machine_config_server_backend režim tcp zdroj zůstatku server ocp-bootstrap 192.168.110.216:22623 kontrola server cp1 192.168.110.217:22623 kontrola server 0.2 18. 11 server 22623 check server cp3 192.168.110.219:22623 check# OCP Ingress – režim tcp vrstvy 4 pro každého. Ingress Controller bude zpracovávat vrstvu 7.Frontend OCP_HTTP_ingress_frontend vázat:80 Default_backend OCP_HTTP_INGRESS_BACKENDENT TCPBACKEND OCP_HTTP_INGRESS_BACKEND Zůstatek Zdrojový režim TCP Server CP1 192.168.110.217:80 Zkontrolujte server CP2 192.168.110.218:80 Zkontrolujte server CP3 192.168.110.219:80 Zkontrolujte server W1 192.168.110.220 :80 Kontrola serveru W2 192.168.110.221:80 CheckFrontend OCP_HTTPS_INGRESS_FRONTEND BIND *:443 Default_backend OCP_HTTPS_INGRESS_BACKENDENT TCPBACKEND OCP_HTTPS_INGRESS_BACKEND MODE OCP_HTTPS_INGRESS_BACKENDENT OCP_HTTPS_INGRESS_BACKENDENT OCP_HTTPS_INGRESS_BACKENDENT w1 192.168.110.220:443 zkontrolovat server w2 192.168.110.221:443 zkontrolovat
uložte a ukončete soubor.
Spusťte a povolte haproxy k provedení výše uvedených změn v efektu
[[email protected] ~]# setsebool -P haproxy_connect_any 1[[email protected] ~]# systemctl start haproxy[[email protected] ~]# systemctl povolení haproxy
Povolit HAProxy porty, které jsme definovali v jeho konfiguračním souboru v OS firewall. Spustit pod příkazy,
[[e-mail chráněný] ~]# firewall-cmd --add-port=6443/tcp --zone=interní --permanent[[e-mail chráněný] ~]# firewall-cmd --add-port=6443/ tcp --zone=external --permanent[[e-mail protected] ~]# firewall-cmd --add-port=22623/tcp --zone=internal --permanent[[e-mail protected] ~]# firewall-cmd -- add-service=http --zone=internal --permanent[[e-mail protected] ~]# firewall-cmd --add-service=http --zone=external --permanent[[email protected] ~]# firewall-cmd --add-service=https --zone=interní --permanent[[e-mail chráněný] ~]# firewall-cmd --add-service=https --zone=external --permanent[[e-mail chráněný] ~]# firewall -cmd --add-port=9000/tcp --zone=external --permanent[[e-mail chráněný] ~]# firewall-cmd --reload[[e-mail chráněný] ~]#
Konfigurace serveru NFS
Potřebujeme server NFS, který poskytne trvalé úložiště registru OpenShift.
Spusťte následující příkaz pro instalaci serveru nfs,
[[e-mail chráněný] ~]# instalace dnf nfs-utils -y
Vytvořte následující adresář a nastavte požadovaná oprávnění. Tento adresář bude exportován jako sdílená složka NFS,
[[e-mail chráněný] ~]# mkdir -p /shares/registry[[email protected] ~]# chown -R Nobody:nobody /shares/registry[[email protected] ~]# chmod -R 777 /shares /registry
Nyní exportujte sdílenou složku přidáním následujícího řádku do souboru /etc/exports.
[[email protected] ~]# vi /etc/exports/shares/registry 192.168.110.0/24(rw,sync,root_squash,no_subtree_check,no_wdelay)
Uložte a zavřete soubor a spusťte ‚exportfs -rv‘ pro export adresáře
[[email protected] ~]# exportfs -rvexporting 192.168.110.0/24:/shares/registry[[email protected] ~]#
Spusťte a povolte službu NFS
[[e-mail chráněný] ~]# systemctl start nfs-server rpcbind nfs-mountd[[email protected] ~]# systemctl povolení nfs-server rpcbind
Povolte službu NFS v bráně firewall OS, spusťte následující příkazy
[[chráněno e-mailem] ~]# firewall-cmd --zone=interní --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
Krok 3) Vygenerujte soubory manifestů a zapalování
Chcete-li vygenerovat zapalovací soubory pro bootstrap, řídicí rovinu a pracovní uzly, postupujte podle následujících kroků
a) Vygenerujte klíče SSH
[[email protected] ~]# ssh-keygen
Tyto ssh klíče budou použity pro vzdálený přístup k bootstrapu, řídicí rovině a pracovním uzlům.
b) Vytvořte soubor install-config.yaml s následujícím obsahem
[[email protected] ~]# vi /ocp-install/install-config.yamlapiVersion:v1baseDomain:linuxtechi.lan #základní název doménycompute: - hyperthreading:Povoleno název:worker repliky:0 # Musí být nastaveno na 0 pro Uživatelem zajišťovaná instalace jako pracovní uzly bude nasazena ručně.controlPlane: hyperthreading:Povoleno název:hlavní repliky:3metadata: název:laboratoř # Název clusteru síť: clusterNetwork: - cidr:10.128.0.0/14 3 síť Předpona T7: 3 Síť 3 Předpona hostiteleT7: 0 .0.0/16platform: none:{}fips:falsepullSecret:'{"auths":...}' # Zkopírujte pullsecret heresshKey:"ssh-ed25519 AAAA..." # Sem zkopírujte veřejný klíč sshNa řádku 23 a 24 zkopírujte obsah vyžádaného tajného a veřejného klíče, který jsme vygenerovali výše.
Po provedení změn bude soubor vypadat takto:
c) Vygenerujte soubor manifestů
Spusťte následující příkaz openshift-install
[[email protected] ~]# ~/openshift-install vytvořit manifest --dir ~/ocp-install
Výše uvedená varovná zpráva říká, že hlavní uzly jsou plánovatelné, to znamená, že můžeme mít pracovní zátěž na řídicích rovinách (kontrolní roviny budou také fungovat jako pracovní uzly). Pokud to chcete zakázat, spusťte následující příkaz sed,
# sed -i 's/mastersSchedulable:true/mastersSchedulable:false/' ~/ocp-install/manifests/cluster-scheduler-02-config.ymlPoznámka:V mém případě to nevypínám.
d) Generovat zapalování a auth soubor
Spusťte pod příkazem openshift-install,
[[email protected] ~]# ~/openshift-install vytvoření zapalování-configs --dir ~/ocp-install/Výstup,
e) Poskytovat manifesty, zapalování a soubor obrazu jádra OS prostřednictvím webového serveru
Vytvořte adresář /var/www/html/ocp4 a zkopírujte všechny soubory z „/root/ocp-install“ do ocp4.
[[chráněn e-mailem] ~]# mkdir /var/www/html/ocp4[[chráněn e-mailem] ~]# cp -R ~/ocp-install/* /var/www/html/ocp4[[chráněn e-mailem ] ~]# mv ~/rhcos-metal.x86_64.raw.gz /var/www/html/ocp4/rhcosNastavte požadovaná oprávnění pro adresář ocp4
[[e-mail chráněný] ~]# chcon -R -t httpd_sys_content_t /var/www/html/ocp4/[[e-mail chráněný] ~]# chown -R apache:/var/www/html/ocp4/[[ e-mail chráněno] ~]# chmod 755 /var/www/html/ocp4/Ověřte, zda jsou tyto soubory přístupné nebo ne pomocí příkazu curl
[[email protected] ~]# curl 192.168.110.215:8080/ocp4/Výstup by měl vypadat takto
Perfektní, nyní jsme připraveni zahájit nasazení.
Krok 4) Spusťte nasazení OpenShift
Spusťte bootstrap VM pomocí souboru ISO rhcos-live. Zobrazí se nám následující obrazovka
Když se spustí se souborem ISO, zobrazí se následující obrazovka,
Zadejte příkaz coreos-installer a stiskněte enter
$ instalace sudo coreos-installer /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-ignitionPo dokončení instalace se zobrazí následující obrazovka
Restartujte uzel bootstrap, aby se tentokrát spustil z pevného disku.
Restart $ sudoPodobně spusťte všechny uzly tří řídicích rovin pomocí souboru ISO RHEL Core OS (rhcos). Po spuštění řídicích uzlů spusťte následující příkaz a stiskněte enter
$ instalace sudo coreos-installer /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
Restartujte řídicí rovinu a spusťte ji z pevného disku.
Opakujte tento postup pro zbytek řídicích rovin a sledujte proces bootstrap pomocí následujícího příkazu.
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debugNyní spusťte oba pracovní uzly pomocí souboru ISO Core OS a jakmile se spustí, spusťte na uzlech následující příkaz
$ instalace sudo coreos-installer /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-ignitionProces bootstrapu pro řídicí roviny a pracovní uzly může trvat 10 až 15 minut v závislosti na vaší infrastruktuře. Zkontrolujte stav uzlů pomocí následujících příkazů
[[email protected] ~]# export KUBECONFIG=~/ocp-install/auth/kubeconfig[[email protected] ~]# oc get nodesNAME STAV ROLE tech 9 tech master VERZE .22.0-rc.0+894a78bcp2.lab.linuxtechi.lan Připraveno master,worker 66m v1.22.0-rc.0+894a78bcp3.lab.linuxtechi.lan [. Připraveno master,worker .8 e-mail chráněný] ~]#Nyní schvalte všechny čekající CSR pro pracovní uzly, aby se mohly připojit ke clusteru a být připraveny. Spuštěním následujícího příkazu oc zobrazíte čekající CSR
[[email protected] ~]# oc get csrSpusťte následující příkaz oc pro schválení čekajících CSR
[[email protected] ~]# oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n" }}{{end}}{{end}}' | xargs oc adm certifikát schválenVýstup dvou výše uvedených příkazů bude vypadat takto:
Po několika minutách by se pracovní uzly měly připojit ke clusteru a měly by být v připraveném stavu, spusťte pod příkazy totéž.
[[email protected] ~]# oc get uzly
Skvělé, výše potvrzuje, že se oba pracovní uzly připojí ke clusteru a jsou ve stavu připravenosti.
Zkontrolujte také stav bootstrapu a ve výstupu bychom měli dostat následující,
[[email protected] ~]# ~/openshift-install --dir ~/ocp-install wait-for bootstrap-complete --log-level=debug
Výše uvedené potvrzuje, že proces bootstrap je také dokončen a je dobré zastavit a odstranit prostředky bootstrap VM a položky bootstrap ze souboru haproxy.
Tímto končí článek; Doufám, že to považujete za informativní. Podělte se prosím o své názory a komentáře.
Přečtěte si také :Jak nastavit jeden uzel OpenShift Cluster na RHEL 8
Jak spustit příkaz / skript Linux Shell na pozadí Jak spravovat virtuální stroje KVM pomocí webové konzole CockpitLinux