[JAVA] Gachi-Anfänger richten Container mit Kubernetes ein? Bis···

Teilnahme an der Veranstaltung "Java Küche"!

Ein Artikel, der auf die Veranstaltung "Kubernetes Hackason ~ Zwei Tage, um in Docker und Kubernetes einzutauchen! ~" Zurückblickt, fand am 23. August 2019 statt.

Lehrer Microsoft-Anwalt: Kao Terada

Vielen Dank. m (_ _) m

fließen

Dieses Mal werden wir in Azure insgesamt drei Ressourcen erstellen: Ubuntu als Umgebung für Sprungbretter, Push-Ziel für Dockerfile und Umgebung zum Ausführen von Kubernetes.

Was den Inhalt betrifft, Erstellen Sie ein Docker-Image unter Ubuntu. Push an Azure Container Registry (ACR). Starten Sie den Container mit Azure Kubernetes Service (AKS). Stellen Sie sich vor bis.

Herr Terada hat die notwendigen Akten und Informationen sehr ordentlich zusammengestellt. GitHub-Link: https://github.com/yoshioterada/k8s-Azure-Container-Service-AKS--on-Azure

In Ordung! Machen wir das!

Erstellen Sie ein Outlook-Konto

Link: https://signup.live.com/signup

Erstellen Sie ein Azure-Konto und registrieren Sie sich mit einer Kreditkarte

Azure-Anmeldeseite: https://portal.azure.com/#home

Erstellen Sie Ubuntu-Ressourcen

Klicken Sie im Azure-Konsolenbildschirm auf "Ressource erstellen". Machen Sie Ubuntu 18.04 LTS Version Erstellen Sie eine neue Ressourcengruppe! Der Name der virtuellen Maschine ist identisch. Die Region ist "Ostjapan" Öffentlicher SSH-Schlüssel "Passwort" ssh erlauben

Greifen Sie mit ssh auf die erstellte Ubuntu-Umgebung zu.

Installieren Sie Docker

Referenzartikel: https://qiita.com/myyasuda/items/cb8e076f4dba5c41afbc

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable test edge"

sudo apt-get update

sudo apt-get install docker-ce

docker --version

Azure CLI-Installation

Danach möchte ich mit ACR und AKS zusammenarbeiten. Also werde ich die Azure CLI installieren! Referenzartikel: http://aka.ms/az-cli-install-jp curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

// Der Unterschied zwischen dem Erstellen einer Docker-Datei und einem Docker-Image ...

Git Klonen Sie die Docker-Datei

Bewegung cd FrontService

Schauen Sie sich das Dockerfile an cat 0-Dockerfile-for-Maven

docker build -t maven-include-localrepo:1.1 . -f 0-Dockerfile-for-Maven

Überprüfen Sie, ob Sie es früher erstellen konnten. docker images

Erstellen einer Azure-Containerregistrierung

// Kubernetes ist ein Image, das ein Docker-Image über ACR abruft. Ich denke, dass. // Private Version von Docker Hub Ist es nicht schön?

Ich möchte das erstellte Image in die zuvor erwähnte Azure Continer-Registrierung übertragen. Erstellen Sie es also zuerst.

Referenzartikel: https://github.com/yoshioterada/DEIS-k8s-ACS/blob/master/CreateAzureContainerRegistry.md Ressource im Browser erstellen Entscheiden Sie den Registrierungsnamen entsprechend. Die Ressourcengruppe ist neu und entsprechend festgelegt. Der Administrator hat es aktiviert.

Melden Sie sich dann bei ACR an

Docker-Image-Erstellung und Push-Vorbereitung

// Ich habe mich bei ACR authentifiziert. (Mit Docker-Login.)

Herr Terada hat eine Docker-Image-Erstellung zusammengestellt und in einer .sh-Datei (2-build-create.sh) an ACR gesendet. Es scheint also, dass Sie sh mit einem Befehl beginnen sollten. Geben Sie jedoch das zu pushende Bild an und bearbeiten Sie die beiden Stellen des Push-Ziel-Repositorys mit vi!

Drücken Sie auf ACR

Lassen Sie uns diesmal die Quelle ein wenig bearbeiten und ein Bild als v2 erstellen!

vi src/main/java/com/yoshio3/frontspring/FrontController.java Lassen Sie uns die Rückgabezeichenfolge ändern, die die beste von allen ist!

Okay, lass es uns basierend auf der geänderten Quelle erstellen ./2-build-create.sh 2.0

Funktionsprüfung

Bild starten Docker run -p 8080: 8080 -it [REPOSITORY-Name]: [x.x (TAG-Nummer)]

Öffnen wir es in einem anderen Tab und greifen mit Curl darauf zu, um es zu überprüfen! curl http://localhost:8080/sample/hello

Nächstes Ziel: Ich möchte einen Container mit AKS einrichten. Holen Sie sich zuerst das Bild in ACR!

Erstellen Sie auf der Azure-Seite einen Kubernetes-Cluster erstellen.

Auch die Ressourcengruppe ist neu! Ist der Clustername gleich? Region ist Ostjapan Auf Knotenanzahl 1 einstellen. Virtueller Knoten aktiviert

HTTP-Anwendung ・ ・ ・ Ja

Installieren des Kubectl-Befehls

az aks install-cli

Lassen Sie uns az-login

az login

Abrufen von Anmeldeinformationen für die AKS-Verbindung

az aks get-credentials --resource-group [xxxx] --name [xxxx]

Möchten Sie überprüfen, ob der Befehl als Testversion verwendet werden kann?

kubectl cluster-info Und kubectl get node

Ich möchte das Bild in ACR zu Kubernetes bringen

Kubernetes kann derzeit nicht auf den ACR zugreifen. Bearbeiten Sie also 3-create-secret4reg.sh mit vi.

kubectl create secret docker-registry docker-reg-credential --docker-server=〇〇〇〇.azurecr.io --docker-username=〇〇 --docker-password="〇〇〇〇" [email protected]

Okay, ich denke ich kann das Bild damit bekommen!

Korrigieren Sie den abgerufenen Bildnamen

In Ordung! Ich konnte das Bild für die Authentifizierung und Erfassung angeben.

Lauf

Überprüfen Sie, ob es läuft

kubectl get po -w

Funktionsprüfung

In einem anderen Tab ... curl localhost:8080/sample/hello #Ergebnisse werden angezeigt

Machen Sie v2 und bewerben Sie sich

Duplizieren Sie 4-create-deploy-svc.yaml, um 4-create-deploy-svc-v2.yaml zu erstellen. Bearbeiten Sie mit vi 4-create-deploy-svc-v2.yaml

kubectl apply -f 4-create-deployment-svc-v2.yaml

Bestätigung des Starts von v2

kubectl get po

// Zweitens ist es möglicherweise besser, den Port weiterzuleiten und zu überprüfen.

Jetzt haben wir erfolgreich zwei Container mit k8s eingerichtet! Hurra! !!

Lassen Sie uns filtern!

kubectl get po --selector app=[],version=[v1] -> Mit anderen Worten, Sie können einen Selektor schreiben, um zu steuern, auf welchen Pod Sie zugreifen möchten! !! !!

Als nächstes starten wir den v2-Container mit Kubernetes und aktualisieren v1 auf v2.

Über den Service

Lassen Sie uns einen Dienst erstellen und starten. Haben Sie das Gefühl, dass der Service den Zugang zum Pod vermittelt? ??

Wenn Sie pod ausführen, wird IP fest generiert. Wie schaffen Sie das? Handbuch ist schwer. Neben der IP-Adresse gibt es noch andere Möglichkeiten, auf den Pod zuzugreifen. Es ist nicht gut, dass sich die IP häufig ändert, nicht wahr?

Das Herzstück des Einsatzes => Solange Sie einen Dienst erstellen und sich diese eindeutige IP-Adresse merken, können Sie den Pod mit der Dienstauswahl ändern. Lassen Sie uns 11-Service.yaml überprüfen!

Dienst starten

kubectl apply -f 11-Service.yaml

Bestätigung

kubectl get svc

verdienen

Sie können zu neuen Pods wechseln, während Sie die normal funktionierenden Pods beibehalten. Sie können es sofort zurückgeben! Das ist das Tolle an Kubernetes! !! !! !! Es ist schwer, es selbst zu tun. Bearbeiten Sie einfach yaml.

Apropos

Normalerweise ist der Dienst vom Typ: ClusterIP! !! Wenn Sie es wirklich auch nur für einen Moment nach außen zeigen möchten, geben Sie Folgendes ein: LoadBalancer. Aber nicht gut. Achtung. Bitte seien Sie vorsichtig.

-> Wenn mehrere Dienste vorhanden sind, können Sie den aufzurufenden Dienst gemäß der URL verzweigen, indem Sie sie in Ingress gruppieren und den Pfad in den Ingress-Einstellungen festlegen.

Zusammenfassung: Es ist eine gute Idee, Ingress nach außen zu veröffentlichen.

Trennen Sie URLs mit Ingress! Verzweigen Sie den Pod mit Service. Das Image ist Service-Routing. Rezeptionist! !!

Eine praktische Funktion zum Bedienen von Mikrodiensten.

Ändern Sie Ingress und versuchen Sie es zu starten

vi 12-Ingress.yaml Änderung: -host: front-service. [〇〇〇〇.aksapp.io] Der Inhalt dieses Fixes wird aus der Ressource "HTTP-Anwendungsroutingdomäne" im Browser eingefügt.

Starten

kubectl apply -f 12-Ingress.yaml

Bestätigung

kubectl get ing

Zugriff

http://[front-service.〇〇〇〇.japaneast.aksapp.io]/sample/hello

Der Inhalt der Veranstaltung endet vorerst hier.

Die Idee des fairen Designs

Es ist besser, Kubernetes nicht zu berühren, es sei denn, Sie haben die Einstellung, Dinge unter der Voraussetzung zu machen, dass sie kaputt gehen. Dropdown-Liste. Reduzieren Sie den Einflussbereich. Es ist besser, unter der Voraussetzung zu denken, dass es fallen wird, als zu versuchen, zu verhindern, dass es fällt. Betrachten Sie den Fluss der Rekonstruktion, wenn er fällt. Wie weit wird das Design der Messe gehen? Es wird definitiv fallen.

Schließlich

Vielen Dank, Herr Terada! Um ehrlich zu sein, hatte Docker es 30 Minuten lang berührt, also verstand ich es irgendwie, aber Kubernetes war unwissend. Zum Glück war ich ein Mob-Profi und habe es geschafft, es zu beenden! !!

(´∀`)

Später machten wir drei dasselbe mit einem Bekannten. Dieser Artikel wurde basierend auf einem damals erfolgreichen Beispiel erstellt.

Es ist wichtig zu wiederholen.

Kubernetes ... Ich bin froh, dass ich mich ein wenig mikroservice gefühlt habe. Ich möchte es wieder tun! (^ ・ ^)

Recommended Posts

Gachi-Anfänger richten Container mit Kubernetes ein? Bis···
Richten Sie Gitolite unter CentOS 7 ein
Richten Sie ansible-playbook unter Ubuntu 20.04 ein
Richten Sie die Docker-Registrierung lokal unter CentOS 7 ein
Richten Sie den Metabasisdienst unter Windows Server 2012 ein
Richten Sie unter Ubuntu 20.04 einen SSH-Server ein, nämlich WSL2