Hinzufügen eines Worker-Knotens
Verwenden Sie diese Prozedur, um einem OpenShift-Cluster einen Worker-Knoten hinzuzufügen.
Wir bieten dieses Beispielverfahren ausschließlich zu Informationszwecken an. Das offizielle Verfahren finden Sie in der Dokumentation zu Red Hat OpenShift (https://docs.openshift.com/).
Dieses Verfahren zeigt ein Beispiel für die frühe Bindung. Bei der frühen Bindung generieren Sie eine ISO, die für den vorhandenen Cluster vorkonfiguriert ist. Wenn der Knoten mit dieser ISO startet, erreicht der Knoten automatisch den vorhandenen Cluster.
Dadurch werden ein oder mehrere CertificateSigningRequests (CSRs) vom neuen Knoten an den vorhandenen Cluster gesendet. Eine CSR ist einfach eine Anfrage, um die Clientzertifikate für den (vorhandenen) Cluster zu erhalten. Sie müssen diesen Anforderungen explizit zustimmen. Nach der Genehmigung stellt der vorhandene Cluster die Client-Zertifikate für den neuen Knoten bereit, und der neue Knoten darf dem vorhandenen Cluster beitreten.
- Melden Sie sich bei dem Computer (VM oder BMS) an, den Sie als Client für das unterstützte Installationsprogramm verwenden. Auf dem Client-Computer des assistierten Installers führen Sie assistierte Installer-API-Aufrufe an den assistierten Installer-Service aus, der von Red Hat gehostet wird.
- Bereiten Sie die Bereitstellung vor, indem Sie die Umgebungsvariablen festlegen, die Sie in späteren Schritten verwenden werden.
- Richten Sie den gleichen SSH-Schlüssel ein, den Sie für den vorhandenen Cluster verwenden.
In diesem Beispiel rufen wir diesen SSH-Schlüssel von seinem Standardspeicherort ~/.ssh/id_rsa.pub ab und speichern sie in einer Variablen.
export CLUSTER_SSHKEY=$(cat ~/.ssh/id_rsa.pub)
- Wenn Sie das Image Pull Secret nicht mehr haben, laden Sie das Bild Pull Secret von Ihrem Red Hat-Konto auf Ihren lokalen Computer herunter. Der Pull Secret ermöglicht Ihrer Installation den Zugriff auf Services und Registrierungen, die Container-Images für OpenShift-Komponenten bereitstellen.
Wenn Sie das von Red Hat gehostete Installationsprogramm verwenden, können Sie die Pull Secret-Datei (Pull-Secret) von der https://console.redhat.com/openshift/downloads-Seite herunterladen. Kopieren Sie die Pull-Secret-Datei auf den Client-Computer des assistierten Installers. In diesem Beispiel speichern wir den Pull-Secret in einer Datei namens pull-secret.txt.
Leerzeichen löschen, Inhalte in JSON-Zeichenfolgenformat konvertieren und in einer Umgebungsvariable speichern, wie folgt:
export PULL_SECRET=$(sed '/^[[:space:]]*$/d' pull-secret.txt | jq -R .)
- Wenn Sie Ihr Offline-Zugriffstoken nicht mehr haben, kopieren Sie das Offline-Zugriffstoken aus Ihrem Red Hat-Konto. Das OpenShift-Cluster-Manager-API-Token ermöglicht Ihnen (auf dem Client-Computer des assistierten Installers) die Interaktion mit dem API-Service des assistierten Installers, der von Red Hat gehostet wird.
Das Token ist eine Zeichenfolge, die Sie kopieren und in eine lokale Umgebungsvariable einfügen können. Wenn Sie das von Red Hat gehostete unterstützte Installationsprogramm verwenden, können Sie das API-Token von https://console.redhat.com/openshift/downloads kopieren.
export OFFLINE_ACCESS_TOKEN='<paste offline access token here>'
- Generieren (aktualisieren) Sie das Token aus dem OFFLINE_ACCESS_TOKEN. Sie verwenden dieses generierte Token, wenn Sie API-Befehle ausstellen.
export TOKEN=$(curl --silent --data-urlencode "grant_type=refresh_token" --data-urlencode "client_id=cloud-services" --data-urlencode "refresh_token=${OFFLINE_ACCESS_TOKEN}" https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/token | jq -r .access_token)
Hinweis:Dieses Token läuft regelmäßig ab. Wenn dieses Token abläuft, erhalten Sie eine HTTP 4xx-Antwort, wenn Sie einen API-Befehl geben. Aktualisieren Sie das Token, wenn es abläuft, oder aktualisieren Sie das Token alternativ regelmäßig vor dem Ablauf. Die Aktualisierung des Token, wenn es noch nicht abgelaufen ist, schadet nicht.
- Holen Sie sich die OpenShift-Cluster-ID des vorhandenen Clusters.
Beispiel:
oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}' 1777102a-1fe1-407a-9441-9d0bad4f5968
export $OS_CLUSTER_ID="1777102a-1fe1-407a-9441-9d0bad4f5968"
- Richten Sie die verbleibenden Umgebungsvariablen ein.
Tabelle 1 listet alle Umgebungsvariablen auf, die Sie in dieser Prozedur festlegen müssen, einschließlich der in den vorherigen Schritten beschriebenen.
Tabelle 1: Umgebungsvariablen Beschreibungsbeispiel für Variablen CLUSTER_SSHKEY Der (öffentliche) SSH-Schlüssel, den Sie für den vorhandenen Cluster verwenden. Sie müssen denselben Schlüssel für den neuen Knoten verwenden, den Sie hinzufügen. – PULL_SECRET Das Image Pull Secret, das Sie heruntergeladen, entfernt und in das JSON-Zeichenfolgenformat konvertiert haben. – OFFLINE_ACCESS_TOKEN Das openShift Cluster Manager API-Token, das Sie kopiert haben. – TOKEN Das Token, das Sie aus dem OFFLINE_ACCESS_TOKEN generiert (aktualisiert) haben. – CLUSTER_NAME Der Name des vorhandenen Clusters. mycluster CLUSTER_DOMAIN Die Basisdomäne des vorhandenen Clusters. contrail.lan OS_CLUSTER_ID Die OpenShift-Cluster-ID des vorhandenen Clusters. 1777102a-1fe1-407a-9441-9d0bad4f5968 AI_URL Die URL des Service für unterstützte Installationsprogramme. In diesem Beispiel wird das von Red Hat gehostete unterstützte Installationsprogramm verwendet. https://api.openshift.com
- Richten Sie den gleichen SSH-Schlüssel ein, den Sie für den vorhandenen Cluster verwenden.
- Importieren Sie den vorhandenen Cluster.
curl -X POST "$AI_URL/api/assisted-install/v2/clusters/import" -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d "{\"name\":\"$CLUSTER_NAME\",\"openshift_cluster_id\":\"$OS_CLUSTER_ID\",\"api_vip_dnsname\":\"api.$CLUSTER_NAME.$CLUSTER_DOMAIN\"}"
Wenn Sie den Cluster importieren, gibt der Assistierte Installer eine Cluster-ID für AddHostsCluster zurück. Achten Sie sorgfältig auf die in der Antwort eingebettete Cluster-ID. Zum Beispiel:
"id":"19b809b5-69c4-42d8-9e5e-56aae4aba386"
- Generieren Sie die Erkennungs-Boot-ISO. Sie verwenden diese ISO, um den Knoten zu starten, den Sie dem Cluster hinzufügen.
Die ISO wird an Ihre Infrastruktur angepasst, basierend auf der Infrastrukturumgebung, die Sie einrichten werden.
- Erstellen Sie eine Datei, die die Infrastrukturumgebung beschreibt. In diesem Beispiel nennen wir es infra-envs-addhost.json.
cat << EOF > ./infra-envs-addhost.json { "name": "<InfraEnv Name>", "ssh_authorized_key": "$CLUSTER_SSHKEY", "pull_secret": $PULL_SECRET, "cluster_id": "<AddHostsCluster ID>", "openshift_version": "4.8", "user_managed_networking": <same as for existing cluster>, "vip_dhcp_allocation": <same as for existing cluster>, "base_dns_domain": "$CLUSTER_DOMAIN", } EOF
- InfraEnv Name ist der Name, den Sie InfraEnv nennen möchten.
- AddHostsCluster ID ist die Cluster-ID des AddHostsCluster (erhalten im vorherigen Schritt).
user_managed_networking
undvip_dhcp_allocation
sind auf die gleichen Werte wie für den vorhandenen Cluster festgelegt.
- Registrieren Sie den InfraEnv. Daraufhin weist der Assistierte Installer eine InfraEnv-ID zu und erstellt die Erkennungs-Boot-ISO basierend auf der angegebenen Infrastrukturumgebung.
curl -X POST "$AI_URL/api/assisted-install/v2/infra-envs" -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" -d @infra-envs-addhosts.json
Wenn Sie InfraEnv registrieren, gibt der Service für unterstützte Installationsprogramme eine InfraEnv-ID aus. Achten Sie sorgfältig auf die in der Antwort eingebettete InfraEnv-ID. Zum Beispiel:
"id":"78d20699-f25b-462c-bc1d-4738590a9344"
Speichern Sie die InfraEnv-ID in einer Variablen. Zum Beispiel:
export INFRA_ENV_ID="78d20699-f25b-462c-bc1d-4738590a9344"
- Laden Sie die Bild-Download-URL herunter.
curl -s $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/downloads/image-url -H "accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" | jq '.url'
- Laden Sie die ISO herunter und speichern Sie sie in einer Datei. In diesem Beispiel speichern wir es in ai-liveiso-addhosts.iso.
curl -L "<image URL>" -H "Authorization: Bearer $TOKEN" -o ./ai-liveiso-addhosts.iso
- Erstellen Sie eine Datei, die die Infrastrukturumgebung beschreibt. In diesem Beispiel nennen wir es infra-envs-addhost.json.
- Starten Sie den neuen Workerknoten mit der Erkennungs-Boot-ISO. Wählen Sie die für Ihre Infrastruktur am besten geeignete Boot-Methode. Stellen Sie sicher, dass der neue Knoten an ein Netzwerk angeschlossen ist, das Zugriff auf den von Red Hat gehosteten assistierten Installer hat.
- Installieren Sie den neuen Knoten im vorhandenen Cluster.
- Prüfen Sie den neuen Knoten, um sicherzustellen, dass seine Rolle auf Worker festgelegt ist.
curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq '.'
Fahren Sie nur fort, wenn die Hostrolle auf Worker festgelegt ist.
- Holen Sie sich die Host-ID des neuen Knotens.
export HOST_ID=$(curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq -r '.[].id')
- Installieren Sie den neuen Knoten.
curl -X POST "$AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts/$HOST_ID/actions/install" -H "accept: application/json" -H "Authorization: Bearer $TOKEN" | jq -r
- Überprüfen Sie den Installationsfortschritt.
curl -s -X GET --header "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $AI_URL/api/assisted-install/v2/infra-envs/$INFRA_ENV_ID/hosts | jq '.'
- Prüfen Sie den neuen Knoten, um sicherzustellen, dass seine Rolle auf Worker festgelegt ist.
- Sobald der neue Knoten neu gestartet wurde, versucht er, dem vorhandenen Cluster beizutreten. Dadurch werden ein oder mehrere CertificateSigningRequests (CSRs) vom neuen Knoten an den vorhandenen Cluster gesendet. Sie müssen die CSR-Anforderungen genehmigen.
- Prüfung auf noch ausstehende CSRs.
Zum Beispiel:
root@ai-client:~/contrail# oc get csr -A NAME AGE SIGNERNAME REQUESTOR CONDITION csr-gblnm 20s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
Sie müssen diesen Befehl möglicherweise in regelmäßigen Abständen wiederholen, bis sie eine anstehende CSR sehen.
- Genehmigen Sie die CSRs.
Zum Beispiel:
root@ai-client:~/contrail# oc adm certificate approve csr-gblnm certificatesigningrequest.certificates.k8s.io/csr-gblnm approved
- Prüfung auf noch ausstehende CSRs.
- Stellen Sie sicher, dass der neue Knoten im vorhandenen Cluster ausgeführt wird.
oc get nodes