Skip to main content
Skip table of contents

Wie kann ich Services von Kubernetes Node Ports zuweisen?

Komponente

Kubernetes, MicroK8s

Version

1.19

Erstellt am

Zuletzt geändert am

Mon, 24 Feb 2025 12:57:42 GMT

Reviewstatus

Review: Approved (1/1)

KB-Artikelnummer

1213530227

Zusammenfassung

In diesem Artikel erfahren Sie, wie Sie Services von Kubernetes (z.B. MySQL-Datenbank von edoc automate oder edoc workplace) über NodePort veröffentlichen. Mit dem Veröffentlichen über NodePort erhält die Datenbank oder der Service einen von außerhalb der Kubernetes-Umgebung erreichbaren Port. Sie können auf diese Weise z.B. Stammdatentabellen in edoc automate befüllen oder in Supportfällen auf die Datenbanken zugreifen.

Wichtige Voraussetzungen

  • edoc platform (On-Premises)

  • SSH-Zugriff auf den Server mit sudo-Berechtigung

Lösung

Um einen NodePort für einen Service zu konfigurieren, benötigen Sie folgende Informationen:

  • $NAME: Name des neuen Services.

  • $NAMESPACE: Name des Kubernetes-Namespaces (master, test, staging, default).

  • $SELECTOR: Selector: (run=).

  • $NODEPORT: externer Zielport.

  • $PORT: interner Zielport (Port im Kubernetes-Container).

Mit dem folgenden Befehl werden alle Services in allen Namespaces inklusive Ports und Selector: (run=) aufgelistet.

CODE
kubectl get services -o wide -A

Beispielausgabe (gekürzt):

CODE
NAMESPACE     NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                   AGE    SELECTOR
master        workflow-session-socket-service   ClusterIP   10.152.183.248   <none>        80/TCP                    708d   run=workflow-session-socket-container
master        workflow-session-socket           ClusterIP   10.152.183.26    <none>        80/TCP                    708d   run=workflow-session-socket-container
master        workflow-service                  ClusterIP   10.152.183.227   <none>        80/TCP                    708d   run=workflow-container
master        workflow-redis                    ClusterIP   10.152.183.18    <none>        6379/TCP                  708d   run=workflow-redis-container
master        workflow-mysql                    ClusterIP   10.152.183.163   <none>        3306/TCP                  708d   run=workflow-mysql-container
master        workflow  

Alle benötigen Informationen stehen Ihnen nach dem Ausführen des Befehls zur Verfügung. Nachfolgend erstellen Sie mithilfe einer Vorlage einen neuen Service, der den Port von außen verfügbar macht.

Ersetzen Sie die Variablen durch die Werte, die Sie aus dem vorigen Befehl erhalten haben:

CODE
apiVersion: v1
kind: Service
metadata:
  name: $NAME
  namespace: $KUBERNETES_NAMESPACE
spec:
  type: NodePort
  selector:
    run: $SELECTOR
  ports:
    - port: $PORT
      nodePort: $NODEPORT

Speichern Sie die Datei auf dem Server z.B. in dem home-Verzeichnis des aktuellen Benutzers:

CODE
/home/$USER/$SERVICENAME.yaml

Mit folgendem Befehl aktivieren Sie den Service mit Kubernetes:

CODE
kubectl apply -f /home/$USER/$SERVICENAME.yaml

Der Service sollte nun unter dem definierten Port von außen bereit stehen. Prüfen Sie mit folgendem Befehl, ob der Service zur Verfügung steht:

CODE
kubectl get services -o wide -A

Der neue Service wird in der Liste angezeigt.

Beispiel: Veröffentlichen der MySQL-Datenbank von edoc workplace

Um die MySQL-Datenbank von edoc workplace in der master-Umgebung unter Port 31111 zu veröffentlichen, können Sie folgende Datei verwenden:

YAML
apiVersion: v1
kind: Service
metadata:
  name: workflow-mysql-extern
  namespace: master
spec:
  type: NodePort
  selector:
    run: workflow-mysql-container
  ports:
    - port: 3306
      nodePort: 31111
CODE
kubectl apply -f /home/$USER/workflow-mysql-extern.yaml

Nach dem Anwenden der Service-Definition steht der NodePort zur Verfügung. Die Verfügbarkeit können Sie mithilfe der folgenden Ausgabe der Services überprüfen:

CODE
kubectl get services -o wide -A
CODE
NAMESPACE     NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                   AGE    SELECTOR
master        workflow-mysql-extern             NodePort    10.152.183.215   <none>        3306:31111/TCP            18h    run=workflow-mysql-container

Der Port 31111 ist nun von außen verfügbar und stellt Port 3306 den Container workflow-mysql-container zur Verfügung.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.