Voraussetzungen: 1. Auf dem Docker-Server wurde der Fernzugriff aktiviert. Weitere Informationen finden Sie unter „Remote-Docker-Server mit Zertifikatverbindung“. 2. Der K8S-Cluster wurde auf dem Server erstellt. Dieser Artikel verwendet zum Testen einen K8S-Single-Point-Cluster. Im vorherigen Artikel haben wir getestet, dass der Remote-Docker-Server normal über das Idea-Docker-Plugin aufgerufen werden kann. Obwohl dieses Docker-Plugin auch zum Verpacken und Pushen von Docker-Images verwendet werden kann, wird in diesem Artikel eine andere Möglichkeit verwendet, nämlich das Docker-Maven-Plugin-Plugin von Maven zum Verpacken und Pushen von Docker-Images auf den Remote-Docker-Server zu verwenden. 1. Docker-DateiDie Dockerfile-Datei wird verwendet, um unsere Anwendung in ein Docker-Image umzuwandeln # Geben Sie die JDK-Umgebungsversion an und erstellen Sie ein Image basierend auf Java8 FROM java:8 # Mounten Sie das temporäre Verzeichnis VOLUME /tmp # Fügen Sie dem Container das angegebene JAR-Paket hinzu [Dies ist der vollständige Name des durch die Projektverpackung generierten JAR-Pakets] Füge practice-job-0.0.1-SNAPSHOT.jar /practice-job.jar hinzu # Die vom Container freigegebene Portnummer (bezieht sich auf die vom Projekt belegte Portnummer) EXPOSE 8081 # Befehle, die ausgeführt werden, nachdem der Container gestartet wurde ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/practice-job.jar" ] 2. POM-KonfigurationDie entsprechende Konfiguration der POM-Datei lautet wie folgt. Achten Sie darauf, die IP-Adresse des Remote-Servers einzugeben und den Pfad der obigen Docker-Datei sowie den Pfad der PEM-Zertifikatdatei anzugeben, die für den Zugriff auf den Remote-Docker erforderlich ist. <Bauen> <Plugins> <Plugin> <groupId>org.springframework.boot</groupId> <artifactId>Spring-Boot-Maven-Plugin</artifactId> </plugin> <!--Verwenden Sie das Plugin „docker-maven-plugin“, um den Dienst in ein Image zu packen und es an den Docker-Server zu senden--> <Plugin> <groupId>com.spotify</groupId> <artifactId>Docker-Maven-Plugin</artifactId> <version>1.2.2</version> <!--Binden Sie das Plugin zur Ausführung an eine bestimmte Phase--> <Hinrichtungen> <Ausführung> <id>Bild erstellen</id> <!--Binden Sie das Plug-In an die Paketphase. Das heißt, Benutzer müssen nur das MVN-Paket ausführen, woraufhin automatisch MVN Docker:Build --> ausgeführt wird. <phase>Paket</phase> <Ziele> <goal>bauen</goal> </Ziele> </Ausführung> </Ausführungen> <Konfiguration> <forceTags>wahr</forceTags> <!--Geben Sie den Namen des generierten Bildes an. Ändern Sie dies in den Namen des Bildes, das Sie generieren möchten. --> <imageName>Praxisjob</imageName> <!--Tags angeben--> <BildTags> <imageTag>neueste</imageTag> </imageTags> <!-- Geben Sie den Dockerfile-Pfad an --> <dockerDirectory>${project.basedir}</dockerDirectory> <!--Geben Sie die Remote-Docker-Adresse an--> <dockerHost>https://öffentliches Netzwerk IP:2376</dockerHost> <!--Geben Sie die Adresse des PEM-Zertifikatdateipfads an--> <dockerCertPath>${project.basedir}/src/main/resources/pem</dockerCertPath> <!-- Hier ist die Konfiguration zum Kopieren des JAR-Pakets in das angegebene Verzeichnis des Docker-Containers--> <Ressourcen> <Ressource> <Zielpfad>/</Zielpfad> <!--Der Pfad, in dem sich das JAR-Paket befindet, entspricht dem Zielverzeichnis --> <Verzeichnis>${project.build.directory}</Verzeichnis> <!-- Das einzubindende JAR-Paket, das dem im Dockerfile hinzugefügten Dateinamen entspricht--> <include>${project.build.finalName}.jar</include> </Ressource> </Ressourcen> </Konfiguration> </plugin> </plugins> </bauen> 3. Bild-PushNachdem die oben genannten Vorbereitungen abgeschlossen sind, führen Sie den Installationsbefehl aus. Nach einer Weile wird in der folgenden Konsole BUILD SUCCESS angezeigt, was darauf hinweist, dass das Image-Push erfolgreich war. Gehen Sie dann zur Überprüfung zum Remote-Server und geben Sie den Befehl „Docker-Images“ ein, um das Container-Image anzuzeigen. Sie können sehen, dass unser Anwendungsimage erfolgreich übertragen wurde. Der nächste Schritt ist die Bereitstellungsphase. 4. K8s-BereitstellungWenn unsere Bereitstellungsumgebung in der Vergangenheit nur einen Docker-Container hatte, müssen wir hier nur unser Anwendungsimage per Docker ausführen, das Projekt im Docker-Container bereitstellen und darauf zugreifen. Aber jetzt ist unsere Bereitstellungsumgebung k8s+Docker, sodass wir unser Anwendungsimage für die Bereitstellung nicht direkt ausführen können. Fahren wir mit der Bereitstellung in k8s fort. Zuerst müssen Sie zwei YAML-Dateien erstellen: practice-job-deployment.yaml und practice-job-service.yaml. Die Funktionen dieser beiden Dateien beinhalten das Konzept von k8s. Das Konzept von k8s wird in nachfolgenden Artikeln erläutert. Hier müssen Sie nur wissen, dass die meisten Konfigurationen in k8s basierend auf YAML-Dateien definiert sind. vi Praxis-Job-Bereitstellung.yaml API-Version: v1 Art: Namespace Metadaten: Name: Praxis --- API-Version: Apps/v1 Art: Bereitstellung Metadaten: Name: Praxis-Job-Einsatz Namespace: Praxis Spezifikation: Replikate: 1 Wähler: Übereinstimmungsetiketten: App: Praxis-Job-Pod Vorlage: Metadaten: Beschriftungen: App: Praxis-Job-Pod Spezifikation: hostNetwork: wahr Behälter: - Name: Praxis-Job-Container image: practice-job:latest #Bildname + VersionimagePullPolicy: Nie #Gibt die Bildquelle an. Wenn NotPresent lokal nicht verfügbar ist, wird es aus dem Hub-Warehouse gezogen. Nie bedeutet nur von lokalen Ports: - ContainerPort: 8081 Umgebung: # Geben Sie den Pfad zur Protokolldatei an – Name: logging.path Wert: /var/logs vi Praxis-Job-Service.yaml API-Version: v1 Art: Dienstleistung Metadaten: Name: Praxis-Job-Service Namespace: Praxis Beschriftungen: App: Praxis-Job-Service Spezifikation: Typ: NodePort Wähler: App: Praxis-Job-Pod Häfen: - Name: http Protokoll: TCP Port: 8081 #Dienstport (intern) Zielport: 8081 #Pod-Port Knotenport: 32001 #Dienstport (extern) Führen Sie dann die Befehle einzeln aus: kubectl apply -f practice-job-deployment.yaml kubectl apply -f practice-job-service.yaml Führen Sie den Befehl aus: kubectl get pod --all-namespaces. Überprüfen Sie den Pod und Sie können sehen, dass der Pod unseres Projekts erfolgreich ausgeführt wurde. Führen Sie den Befehl kubectl logs practice-job-deployment-77d685767-glvgm -n practice aus, um die Ausführungsprotokolle der Anwendung anzuzeigen. Das Format ist: kubectl logs <Pod-Name> -n <Pod-Namespace>. Führen Sie den Befehl aus: docker ps Sie können sehen, dass das Projekt bereits im Container ausgeführt wird Führen Sie den Befehl aus: kubectl get service --all-namespaces. Sie können sehen, dass der der Anwendung entsprechende Dienst erfolgreich gestartet wurde und der freigegebene Port 32001 ist. Dies ist der Port, den wir zuvor in der YAML-Datei konfiguriert haben. Schließlich greift der Browser auf „öffentliches Netzwerk ip:32001/doc.html“ zu. Dieser Pfad ist nur für mein Projekt, verschiedene Projekte haben verschiedene Pfade. Beachten Sie, dass die Firewall die entsprechenden Ports öffnen muss. An diesem Punkt wird die Anwendung aus dem lokalen Docker-Image gepackt, auf den Server übertragen und dann im k8s+Docker-Container bereitgestellt. Dies ist das Ende dieses Artikels über die Schritte zum Verpacken des Docker-Images, zum Übertragen auf den Remote-Server und zum Bereitstellen auf K8s. Weitere relevante Informationen zum Verpacken und Bereitstellen von Docker-Images auf K8s finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Lösung zur inkonsistenten Anzeige der Cursorgröße im Eingabefeld
>>: So fügen Sie Wettervorhersagen in Ihre Website ein
Was Sie lernen werden 1. Softwareinstallation und...
Dieser Artikel enthält ein ausführliches Tutorial...
Vorwort Ich glaube, die meisten Leute haben MySQL...
Inhaltsverzeichnis 1. DOM & BOM bezogen 1. Üb...
Inhaltsverzeichnis 1. Planaufgaben anpassen 2. Ze...
Inhaltsverzeichnis 1. Konfigurieren Sie zunächst ...
Legen Sie Ihr eigenes Webprojekt im Verzeichnis w...
In diesem Artikelbeispiel wird der spezifische Co...
Bei der Verwendung von Nginx als Reverse-Proxy fü...
Gehen Sie zu https://dev.mysql.com/downloads/mysq...
Der Fortschrittsbalken ist nicht gleichmäßig Ich ...
Problembeschreibung Ich hatte kürzlich ein Proble...
1. Der in der Schaltfläche verwendete Wert bezieht...
Ubuntu 20.04 wurde veröffentlicht und bringt viel...
Inhaltsverzeichnis 1. Projektumgebung 2. Projektb...