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ředNyní 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: portUlož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-2rvmvVý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
Jak spustit Jenkins Container jako službu Systemd pomocí Dockeru 20 užitečných příkladů příkazů Docker v LinuxuDocker