GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nastavit soukromý registr dockerů v Kubernetes (k8s)

Vždy se doporučuje mít v clusteru Kubernetes soukromý registr dockeru nebo úložiště. Soukromý registr Docker umožňuje vývojářům vkládat a stahovat jejich soukromé obrázky kontejnerů. Jakmile jsou kontejnery aplikace přesunuty do soukromého registru, mohou vývojáři použít cestu svého soukromého registru při vytváření a nasazování svých souborů yaml.

V tomto článku se dozvíme, jak můžeme nasadit soukromý registr dockerů jako nasazení nad clusterem Kubernetes. Předpokládám, že cluster Kubernetes je již spuštěn.

Podrobnosti laboratoře Kubernetes pro nastavení soukromého registru dockerů

  • 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
  • uživatel kadmin s právy sudo
  • Sdílení NFS „/opt/certs“ &„/opt/registry“

Poznámka:  V mém případě jsem nastavil nfs server na hlavním uzlu a exportoval /opt/certs a /opt/registry jako sdílení nfs.

Před zahájením nasazení soukromého registru se prosím ujistěte, že tyto sdílené položky nfs jsou připojeny ke každému pracovnímu uzlu. Spusťte následující příkazy na každém pracovním uzlu.

$ 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

Pro trvalé připojení přidejte položky nfs do souboru /etc/fstab.

Místo připojení těchto sdílených souborů nfs můžeme také vytvořit trvalé svazky založené na nfs a později můžeme tyto trvalé svazky použít v souboru yaml.

Pojďme se ponořit do kroků instalace a konfigurace soukromého registru dockerů v Kubernetes.

Krok 1) Vygenerujte certifikáty s vlastním podpisem pro soukromý registr

Přihlaste se do své řídicí roviny nebo hlavního uzlu a pomocí příkazu openssl vygenerujte certifikáty s vlastním podpisem pro soukromé úložiště dockerů.

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

Po vygenerování souboru klíče a certifikátu je ověřte pomocí příkazu ls,

[[e-mail chráněný] opt]$ ls -l certifikáty/celkem 8-rw-r--r--. 1 kořenový kořen 2114 26. září 03:26 registry.crt-rw-r--r--. 1 root root 3272 26. září 03:26 registry.key[[email protected] opt]$

Krok 2) Nasaďte soukromý registr jako nasazení prostřednictvím souboru yaml

Na hlavním uzlu vytvořte soubor private-registry.yaml s následujícím obsahem

[[chráněno e-mailem] ~]$ mkdir docker-repo[[chráněno e-mailem] ~]$ cd docker-repo/[[email protected] docker-repo]$ vi private-registry.yamlapiVersion:apps/v1kind:Deploymentmetadata :  název:private-repository-k8s  labels:    app:private-repository-k8sspec:  replics:1  selector:    matchLabels:      app:private-repository-k8s  template:    metadata:re       labels:         labels:          labels:         apps:         Název:CERTS-VOL HOSTPATH:PATH:/OPT /CERTS Typ:Adresář-Název:Registry-Vol Hostpath:Path:/Opt /Registry Typ:Directory Containers:-Obrázek:Registr:2 Název:Private-Repository-K8S ImagePullPolicy:IfNotPresent Env:- Name:Registry_http_tls_Certificate Hodnota:"/certs/registry.crt" - Name:Registry_http_tls_key Hodnota:"/certs/registry.key" Ports:- Containerport:5000 VolumeMounts:- - - - - - - - - - - - - - - - - - - - - - - - - - 5000 VolumeMounts:- - 5000 VolumeMounts:- 5000 VolumeMounts:název:certs-vol            mountPath:/certs          – název:registry-vol            mountPath:/var/lib/registry

uložte a zavřete soubor yaml

Spusťte následující příkaz kubectl nasaďte soukromý registr pomocí výše vytvořeného souboru yaml,

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

Provedením níže uvedených příkazů kubectl ověřte stav nasazení registru a jeho pod.

[[email protected] ~]$ kubectl získat nasazení private-repository-k8sNAME                      PŘIPRAVENO   AKTUÁLNĚ   DOSTUPNÉ   AGEprivate-repository-k8s     2 chráněno $ 3  chráněno  1 1        1 1       1      ~]$ kubectl get lusky | grep -i private-repoprivate-repository-k8s-85cf76b9d7-qsjxq   1/1     Běží   0          5 m14s[[email chráněno] ~]$

Perfektní, výše uvedený výstup potvrzuje, že registr byl úspěšně nasazen. Nyní zkopírujte soubor certifikátu registru do pracovních uzlů a hlavního uzlu do složky „/etc/pki/ca-trust/source/anchors“. Proveďte následující příkazy na hlavním uzlu a na každém pracovním uzlu

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

Krok 3) Vystavte nasazení registru jako typ služby nodeport

Chcete-li odhalit nasazení registru jako typ služby nodeport, vytvořte následující soubor yaml s obsahem pod ním,

[[chráněno e-mailem] ~]$ cd docker-repo/[[e-mailem chráněno] docker-repo]$ vi private-registry-svc.yamlapiVersion:v1kind:Servicemetadata:  labels:    app:private-repository-k8s  name:private-repository-k8sspec:  porty:  - port:5000    nodePort:31320    protokol:TCP    targetPort:5000  selector:    aplikace:private-repository-k8s  typ:NodePort

uložte a zavřete soubor.

Nyní nasaďte službu spuštěním následujícího příkazu kubectl,

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

Spuštěním příkazu kubectl ověřte stav služby

[[email protected] ~]$ kubectl get svc private-repository-k8sNAME                     TYP     CLUSTER-IP    EXTERNÍ-IP PORT(S)   0     AGEprivate-repository-s.10 m: 239 <10 TC.30 Port 30[č.150 3 39 <30/150 3 39 30/150 e-mail chráněno] ~]$

Krok 4) Otestujte a použijte soukromý registr dockerů v k8s

Abychom otestovali soukromý registr, stáhneme lokálně obraz nginx a poté jej nahrajeme do soukromého registru, z hlavního uzlu spusťte následující sadu příkazů,

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

Výstup výše uvedeného příkazu by chtěl níže:

Spusťte níže příkaz docker a ověřte, zda je nginx nahrán do soukromého úložiště nebo ne.

[[email chráněný] ~]$ sudo docker image ls | grep -i nginxnginx                      nejnovější   7e4d58f0e5f3        před 2 týdny      133 MBk8s-master:31320/f před 2 MB ] před 2 $] před 5 $] před     

Nyní nasadíme nasazení založené na nginx a v souboru yaml určete cestu k obrázku jako náš soukromý registr dockerů. Příklad je uveden níže:

[[email protected] ~]$ vi nginx-test-deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:  name:nginx-test-deployment  labels:    app:nginxspec:  replicas:3  selector:    shoda label :    metadata:      štítky:        aplikace:nginx    spec:      kontejnery:      – název:nginx-1-17        obrázek:k8s-master:31320/nginx:1.17    0       port:           port  

Uložte a zavřete soubor

Spusťte následující příkazy kubectl,

[[email protected] ~]$ kubectl create -f nginx-test-deployment.yamldeployment.apps/nginx-test-deployment created[[email protected] ~]$ kubectl get deployments  nginx-test-deploymentNAME      UP-      DY DODATUM   DOSTUPNÉ   AGEnginx-test-deployment   3/3     3            3           13s[[e-mail chráněný] ~]$[[email chráněn] ~]$ kubectl získat  pods | grep Nginx-test-deploymentnginx-test-nasazení-f488694b5-2rvmv 1/1 Spuštění 0 80snginx-test-nasazení-f488694b5-8kb6c 1/1 Běžecké 0 80snginx-test-nasazení-f488694b5-dgcxl 1/1 Běžecké 0 80s [[ e-mail chráněno] ~]$

Pokuste se popsat libovolný modul pomocí příkazu „kubectl description“ a ověřte cestu k obrázku

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

Výstup výše uvedeného příkazu by byl,

Výše uvedený výstup potvrzuje, že cesta k obrazu kontejneru je náš soukromý registr dockerů, takže to znamená, že obraz nginx byl stažen ze soukromého registru. To je vše z tohoto článku, doufám, že vám tyto kroky pomohou nastavit soukromý registr dockerů ve vašem clusteru Kubernetes. Prosím, podělte se o své názory a komentáře v sekci komentářů níže.

Přečtěte si takéJak nastavit Kubernetes Cluster na Google Cloud Platform (GCP)

Přečtěte si takéJak nastavit NGINX Ingress Controller v Kubernetes


Docker
  1. Jak nastavit soukromý registr dockerů na Rocky Linux 8

  2. Co je kontejner a jak to souvisí s Dockerem a Kubernetes?

  3. Jak nastavit jednoduchý webový server Apache v kontejneru Docker

  1. Jak nastavit a používat soukromý registr dockerů

  2. Jak nainstalovat Kubernetes na Ubuntu 18.04

  3. Docker vs. Kubernetes

  1. Jak nainstalovat Kubernetes (k8s) Cluster na RHEL 8

  2. Jak nastavit Kubernetes(k8s) Cluster v HA s Kubeadm

  3. Jak nastavit soukromý registr dockerů na Ubuntu 20.04