GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So richten Sie eine private Docker-Registrierung in Kubernetes (k8s) ein

Es wird immer empfohlen, eine private Docker-Registrierung oder ein privates Repository in Ihrem Kubernetes-Cluster zu haben. Die private Docker-Registrierung ermöglicht es den Entwicklern, ihre privaten Container-Images zu pushen und zu pullen. Sobald die Container der Anwendung in die private Registrierung übertragen wurden, können Entwickler den Pfad ihrer privaten Registrierung verwenden, während sie ihre YAML-Dateien erstellen und bereitstellen.

In diesem Artikel erfahren wir, wie wir die private Docker-Registrierung als Bereitstellung auf dem Kubernetes-Cluster bereitstellen können. Ich gehe davon aus, dass der Kubernetes-Cluster bereits betriebsbereit ist.

Kubernetes-Labdetails zum Einrichten einer privaten Docker-Registrierung

  • k8s-master – 192.168.1.40 – CentOS 7
  • k8s-worker-1 – 192.168.1.41 – CentOS 7
  • k8s-worker-2 – 192.168.1.42 – CentOS 7
  • kadmin-Benutzer mit sudo-Rechten
  • NFS-Freigabe „/opt/certs“ &„/opt/registry“

Hinweis:  In meinem Fall habe ich den NFS-Server auf dem Master-Knoten eingerichtet und /opt/certs und /opt/registry als NFS-Freigabe exportiert.

Bevor Sie mit der Bereitstellung der privaten Registrierung beginnen, stellen Sie bitte sicher, dass diese NFS-Freigaben auf jedem Worker-Knoten gemountet sind. Führen Sie die folgenden Befehle auf jedem Worker-Knoten aus.

$ sudo mkdir /opt/certs /opt/registry$ sudo mount 192.168.1.40:/opt/certs /opt/certs$ sudo mount 192.168.1.40:/opt/registry /opt/registry

Fügen Sie für eine permanente Einbindung nfs-Einträge in die Datei /etc/fstab hinzu.

Anstatt diese nfs-Freigaben zu mounten, können wir auch nfs-basierte persistente Volumes erstellen und diese persistenten Volumes später in der yaml-Datei verwenden.

Lassen Sie uns in die Installations- und Konfigurationsschritte der privaten Docker-Registrierung in Kubernetes eintauchen.

Schritt 1) ​​Generieren Sie selbstsignierte Zertifikate für die private Registrierung

Melden Sie sich bei Ihrer Steuerungsebene oder Ihrem Masterknoten an und verwenden Sie den Befehl openssl, um selbstsignierte Zertifikate für das private Docker-Repository zu generieren.

$ cd /opt $ sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout \ ./certs/registry.key -x509 -days 365 -out ./certs/registry.crt

Sobald die Schlüssel- und Zertifikatsdatei generiert sind, verwenden Sie den Befehl ls, um sie zu überprüfen,

[[email protected] opt]$ ls -l certs/total 8-rw-r--r--. 1 root root 2114 Sep 26 03:26 Registry.crt-rw-r--r--. 1 root root 3272 26. September 03:26 Registry.key[[email protected] opt]$

Schritt 2) Stellen Sie die private Registrierung als Bereitstellung über eine Yaml-Datei bereit

Erstellen Sie auf Ihrem Master-Knoten eine private-registry.yaml-Datei mit folgendem Inhalt

[[email protected] ~]$ mkdir docker-repo[[email protected] ~]$ cd docker-repo/[[email protected] docker-repo]$ vi private-registry.yamlapiVersion:apps/v1kind:Bereitstellungsmetadaten - Name:CERTS-VOL Hostpath:Pfad:/ Opt / Certs-Typ:Verzeichnis - Name:Registry-Vol. Hostpath:Pfad:/ Opt / Registrierungsart:Verzeichniscontainer:- Bild:Registriert:2 Name:Private-Repository-K8S ImagePullPolicy:IFNOTPRESENT ENV:- NAME:Registry_HTTP_TLS_CERTIFICATE-Wert:"/certs/registry.crt" - Name:Registry_HTTP_TLS_KEY-Wert:"/certs/registry.key" Ports:- Containerport:5000 VolumMounts:- name:certs-vol            mountPath:/certs          - name:Registry-vol            mountPath:/var/lib/registry

Speichern und schließen Sie die Yaml-Datei

Führen Sie den folgenden kubectl-Befehl aus, um die private Registrierung mithilfe der oben erstellten Yaml-Datei bereitzustellen,

[[email protected] docker-repo]$ kubectl create -f private-registry.yamldeployment.apps/private-repository-k8s created[[email protected] docker-repo]$

Führen Sie die folgenden kubectl-Befehle aus, um den Status der Registrierungsbereitstellung und ihres Pods zu überprüfen.

[[email protected] ~]$ kubectl Get Deployments private-repository-k8sNAME                     BEREIT   AKTUELL   VERFÜGBAR   AGEprivate-repository-k8s   1/1     1            1           3m32 ~]$ kubectl erhält Pods | grep -i private-repoprivate-repository-k8s-85cf76b9d7-qsjxq   1/1     Läuft   0          5m14s[[email protected] ~]$

Perfekt, die obige Ausgabe bestätigt, dass die Registrierung erfolgreich bereitgestellt wurde. Kopieren Sie nun die Registrierungszertifikatsdatei auf die Worker-Knoten und den Master-Knoten im Ordner „/etc/pki/ca-trust/source/anchors“. Führen Sie die folgenden Befehle auf dem Master-Knoten und jedem Worker-Knoten aus

$ sudo cp /opt/certs/registry.crt /etc/pki/ca-trust/source/anchors/$ sudo update-ca-trust$ sudo systemctl docker neu starten

Schritt 3) Bereitstellen der Registrierungsbereitstellung als Nodeport-Diensttyp

Um die Registrierungsbereitstellung als Nodeport-Diensttyp verfügbar zu machen, erstellen Sie die folgende YAML-Datei mit den folgenden Inhalten:

[[email protected] ~]$ cd docker-repo/[[email protected] docker-repo]$ vi private-registry-svc.yamlapiVersion:v1kind:Servicemetadata:  label:    app:private-repository-k8s  name:private-repository-k8sspec:  ports:  - port:5000    nodePort:31320    protocol:TCP    targetPort:5000  selector:    app:private-repository-k8s  type:NodePort

Speichern und schließen Sie die Datei.

Stellen Sie nun den Dienst bereit, indem Sie den folgenden kubectl-Befehl ausführen:

$ kubectl create -f private-registry-svc.yamlservice/private-repository-k8s created$

Führen Sie den folgenden kubectl-Befehl aus, um den Dienststatus zu überprüfen,

[[email protected] ~]$ kubectl get svc private-repository-k8sNAME                   TYPE     CLUSTER-IP    EXTERNAL-IP PORT(S)        AGEprivate-repository-k8s NodePort 10.100.113.39       5000 E-Mail-geschützt] ~]$

Schritt 4) Testen und verwenden Sie die private Docker-Registrierung in k8s

Um die private Registrierung zu testen, laden wir das nginx-Image lokal herunter und laden dieses Image dann in die private Registrierung hoch. Führen Sie vom Master-Knoten aus den folgenden Befehlssatz aus,

$ sudo docker pull nginx$ sudo docker tag nginx:latest k8s-master:31320/nginx:1.17$ sudo docker push k8s-master:31320/nginx:1.17

Die Ausgabe des obigen Befehls würde wie folgt aussehen:

Führen Sie den folgenden Docker-Befehl aus, um zu überprüfen, ob nginx in das private Repository hochgeladen wurde oder nicht.

[[email protected] ~]$ sudo docker image ls | grep -i nginxnginx                     latest   7e4d58f0e5f3        vor 2 Wochen      133MBk8s-master:31320/nginx    1.17     7e4d58f0e5f3        vor 2 Wochen       

Lassen Sie uns nun eine nginx-basierte Bereitstellung bereitstellen und in der yaml-Datei den Pfad des Bildes als unsere private Docker-Registrierung angeben. Beispiel ist unten gezeigt:

[[email protected] ~]$ vi nginx-test-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:  name:nginx-test-deployment  labels:    app:nginxspec:  replicas:3  selector:    matchLabels:      app:nginx  template :    Metadaten:      Labels:        App:nginx    Spezifikation:      Container:      - Name:nginx-1-17        Bild:k8s-master:31320/nginx:1.17        Ports:        - ContainerPort:80

Speichern und schließen Sie die Datei

Führen Sie die folgenden kubectl-Befehle aus,

[[email protected] ~]$ kubectl create -f nginx-test-deployment.yamldeployment.apps/nginx-test-deployment created[[email protected] ~]$ kubectl get deploys  nginx-test-deploymentNAME                     READY   UP- BIS DATUM   VERFÜGBAR   AGEnginx-test-deployment   3/3     3            3           13s[[email protected] ~]$[[email protected] ~]$ kubectl get  pods | GREP NginX-Test-DeprimmentGinx-Test-Deployment-F488694B5-2RVMV 1/1 Ausführen 0 80sGinx-Test-Deployment-F488694B5-8KB6c 1/1 Ausführen 0 80sGinx-Test-Deployment-F488694B5-DGCXL 1/1 Laufen 0 80s [[ E-Mail-geschützt] ~]$

Versuchen Sie, einen beliebigen Pod mit dem Befehl „kubectl describe“ zu beschreiben und den Bildpfad zu überprüfen

$ kubectl description pod nginx-test-deployment-f488694b5-2rvmv

Die Ausgabe des obigen Befehls wäre,

Die obige Ausgabe bestätigt, dass der Image-Pfad des Containers unsere private Docker-Registrierung ist, was bedeutet, dass das nginx-Image von der privaten Registrierung heruntergeladen wurde. Das war alles aus diesem Artikel. Ich hoffe, diese Schritte helfen Ihnen beim Einrichten einer privaten Docker-Registrierung in Ihrem Kubernetes-Cluster. Bitte teilen Sie Ihr Feedback und Ihre Kommentare im Kommentarbereich unten mit.

Auch lesenSo richten Sie Kubernetes-Cluster auf der Google Cloud Platform (GCP) ein

Auch lesenSo richten Sie den NGINX Ingress Controller in Kubernetes ein


Docker
  1. So richten Sie eine private Docker-Registrierung ein und verwenden sie

  2. So installieren Sie Kubernetes unter Ubuntu 18.04

  3. Anleitung zum Einrichten einer privaten Docker-Registrierung unter Rocky Linux 8

  4. Was ist containerd und in welcher Beziehung steht es zu Docker und Kubernetes?

  5. So richten Sie einen einfachen Apache-Webserver in einem Docker-Container ein

So richten Sie MySQL mit Docker unter Linux ein

Docker – So richten Sie Jupyter hinter dem Nginx-Proxy ein

So richten Sie Home Assistant auf einem Raspberry Pi mit Docker ein

So stellen Sie Docker Compose Stacks mit Kompose in Kubernetes bereit

So skalieren Sie Docker-Container serverübergreifend mit Kubernetes

So erstellen Sie eine private Docker-Registrierung unter Ubuntu Linux