GNU/Linux >> Znalost Linux >  >> Cent OS

Nasaďte modul, řadič replikace a službu v Kubernetes na CentOS 7

Ahoj technici, v našem předchozím tutoriálu jsme již probrali kroky instalace Kubernetes na CentOS 7 / RHEL 7. V tomto tutoriálu probereme, jak můžeme nasadit moduly, řadič replikace a službu.

Předpokládám, že nastavení Kubernetes je již spuštěno. Pokud tomu tak není, postupujte podle následujícího průvodce:

  • Jak nainstalovat Kubernetes (k8s) 1.7 na CentOS 7 / RHEL 7

Nyní se vrhněme na nasazení modulu. Pod je vícevrstvá nebo skupina kontejnerů, která se spouští na libovolném uzlu Worker nebo Minion. Pro nasazení pod musíme nejprve vytvořit soubor yml nebo json na hlavním uzlu nebo v systému, kde je nainstalován nástroj kubectl. Kubectl použije soubor yml a připojí se k kube-apiserver na portu 6443 a poté se kube-apiserver připojí k kube-controller-manager a Kube-controller-manager se dále připojí k Kube-Scheduler a plánovací program se připojuje k pracovním uzlům pomocí kubelet agent a poté agent kubelet se připojí k démonu dockeru na uzlu a spustí kontejner na základě definice podu.

Než začnete vytvářet pod yml soubor, nejprve se ujistěte, že máte testovací docker image na docker hubu. V mém případě jsem již vložil jeden obrázek dockeru (linuxtechi/web-server-php) na docker hub.

Nyní vytvoříme soubor pod.yml na hlavním serveru.

[[email protected] ~]# mkdir /techcode[[email protected] ~]# cd /techcode/[[email protected] techcode]# vi pod.ymlapiVersion:v1kind:Podmetadata:  name:web-server-pod labels:   app:webserver-app1   region:IN   rack:r1   version:"1.1"spec:  containerPort:    - name:web-server-test-container      image:linuxtechi/web-server-php:testversion      ports:       - containerPort:8 /před> 

Uložte a ukončete soubor.

V souboru jsme specifikovali apiversion jako v1, můžete křížově ověřit apiversion ze souboru „/root/.kube/config“, specifikovat druh jako „Pod “, protože nasazujeme pod pomocí tohoto souboru yml. Zadejte metadata a štítek pro pod.

Kromě toho jsme zmínili specifikaci kontejneru, jako je „Název obrázku“ a port vystavený z kontejneru atd.

Použijte níže ‘kubectl ‘ příkaz k nasazení modulu.

[[email protected] techcode]# kubectl create -f pod.ymlpod "web-server-pod" created[[email protected] techcode]#

Ověřte stav pod z hlavního uzlu pomocí následujícího příkazu

[[email protected] ~]# kubectl get podsNAME              PŘIPRAVENO     STAV    RESTARTUJE se   AGEweb-server-pod   1/1       Spuštěno   0           chránit pods - # # NAME šířeno 4 m[[[email[ protected pod]] ~ PŘIPRAVENO     STAV    RESTARTUJE   VĚK       IP          NODEweb-server-pod   1/1       V provozu   0           4 m         # 10.32.0.2[ e- pracovník 

Jak vyplývá z výše uvedeného výstupu, pod byl nasazen na pracovním uzlu 2. Nemůžeme přistupovat k aplikaci běžící uvnitř pod, protože jsme pro pod dosud nenastavili žádné patování ani pravidlo nattingu.

Vytvořme pravidlo tak, že pokud jakýkoli požadavek přijde na IP adresu pracovního uzlu 2 na konkrétním portu, měl by být přesměrován na pod (web-server-pod) na portu 80. Toho lze dosáhnout službou. Službu lze definovat buď z příkazu nebo pomocí yml souboru.

Vytvoření služby z příkazového řádku pomocí „kubectl expose“

[[email protected] ~]# kubectl vystavit pody web-server-pod  --name=webpod-service --target-port=80  --type=NodePortservice "webpod-service" vystaven[[e-mail chráněno] ~ #

Výše uvedený příkaz vystaví pod nebo kontejner vnějšímu světu. Vygeneruje náhodný port na uzlu, na kterém jsou vytvořeny moduly, a můžeme říci, že výše uvedený příkaz za nás provede úkol patování. Externí uživatelé se mohou dostat na můj webový server, který běží uvnitř modulu, s IP uzlu spolu s náhodným portem.

Ověřte stav služby pomocí následujících příkazů

 [[[0002] [[[0002] [[[0002] [Chráněný emailem] ~] # [[[3 E-mail chráněný] ~] # Kubectl Získejte SVC -O Widename Cluster-IP externí IP port (y) Age SelectorKubernetes 10.96.0.1  443 / tcp 2h  WebPod-Service 10.101 .51.190          80:30108/TCP   3 m        app=webserver-app1,rack=r1,region=IN,version=1.1[[email protected] ~]#

Nyní zkuste získat přístup k webovému serveru

~]# curl 192.168.1.50:30108

Výše vytvořenou službu můžeme smazat pomocí následujícího příkazu

[[email protected] ~]# kubectl delete svc webpod-serviceservice "webpod-service" smazáno[[email protected] ~]#

Vytvoření služby pomocí souboru yml

Vytvořte nový soubor yml s názvem „service.yml “ s následujícím obsahem. Hodnota parametru Druh bude tentokrát ‘Služba’. V poli Specifikace je uveden port, na kterém běží webový server nebo aplikace uvnitř kontejneru, a NodePort je náhodný port na pracovním uzlu. Selektor označuje, že tato služba bude použitelná pro pod, jehož parametr verze je ‚1.1‘, takže v našem případě bude tato služba použitelná pro pod „web-server-pod“

[[email protected] techcode]# vi service.ymlapiVersion:v1kind:Servicemetadata: name:webpod-service labels:   app:webpod-service-labelspec: type:NodePort ports: - port:80   nodePort:30001   protokol:TCP selektor:   verze:"1.1"

Nyní vytvořte službu provedením následujícího příkazu

[[email protected] techcode]# kubectl create -f service.ymlservice "webpod-service" vytvořeno[[email protected] techcode]#

Ověřte stav služby pomocí příkazu pod

 [[E-mail Chráněné] TechCode] # Kubectl Získejte Svcname Cluster-IP externí IP portu (y) AgeKubernetes 10.96.0.1  443 / TCP 2HWebPod-Service 10.102.18.35  80:30001 / tcp 1m [ [Chráněné emailem] TechCode] # [[[3 E-mail] TechCode] # Kubectl Získejte SVC -O Widename Cluster-IP externí IP port (y) Age SelectorKubernetes 10.96.0.1 <Žádný> 443 / tcp 2h  WebPod-Service 10.102 .18.35          80:30001/TCP   2m        verze=1.1[[email protected] techcode]#

Nyní otevřete svou aplikaci pomocí příkazu curl:

[[email protected] ~]# curl http://192.168.1.50:30001

Výstup by byl něco jako níže

V tuto chvíli jsme nasadili jeden modul a jeho službu. Předpokládejme, že chci nasadit 5 modulů stejného druhu, pak je lze nasadit pomocí řadiče replikace. Ve zkratce se nazývá „rc ‘. Kdykoli zřídíme pody pomocí rc, budou pody ve vysoké dostupnosti a odolnosti proti chybám, znamená to, že pokud se s podem něco pokazí, cluster bude automaticky nasazen pody stejného druhu.

Nasazení řadiče replikace

Řadič replikace je také nasazen se souborem yml pomocí příkazu kubectl. Pojďme vytvořit soubor yml pro rc.

[[email protected] techcode]# vi replication-controller.ymlapiVersion:v1kind:ReplicationControllermetadata: name:webserver-rcspec: replicas:5 selector:   app:  lamp-app1 template:    metadata:      štítky   oblasti aplikace:  -     oblast :IN       rack:r1       verze:"1.1"    spec:       kontejnery:       – název:webserver-php-con1         obrázek:linuxtechi/web-server-php:testversion  -         preports:          > porty:          

Hodnota tohoto parametru druhu času je „ReplicationController “ a pod specifikací máme ‘repliky=5 ‘, to znamená, že 5 modulů bude nasazeno mezi pracovními uzly pomocí obrázku dockeru „linuxtechi/web-server-php:testversion“

Spusťte následující příkaz k nasazení řadiče replikace

[[email protected] techcode]# kubectl create -f replication-controller.ymlreplicationcontroller "webserver-rc" vytvořeno[[email protected] techcode]#

Ověřte stav pod a podívejte se, kde byly zřízeny

[[email protected] techcode]# kubectl get pods[[email protected] techcode]# kubectl get pods -o wide

Ověřte stav replikačního řadiče pomocí příkazu kubectl

 [[Chráněné emailem] TechCode] # Kubectl Získejte RCNAME Požadovaný aktuální aktuální aktuální AgeWebServer-RC 5 5 5 5 m [[chráněný emailem] TechCode] # Kubectl Získejte RC -O Widename Požadovaný aktuální Ready Age Containal (S) SELECTORwebserver-rc   5         5         5          5 m         webserver-php-con1   linuxtechi/web-server-php:testversion    app=lamp-app1[[email protected] techcode 

Pojďme definovat službu pro výše vytvořený řadič replikace.

[[email protected] techcode]# vi rc-service.ymlapiVersion:v1kind:Servicemetadata: name:webserver-service labels:   app:webserver-service-labelspec: type:NodePort ports: - - protocol port:80   nodePort port:30002 :Selektor TCP:   verze:"1.1"

Vytvořte službu pomocí příkazu kubectl

[[email protected] techcode]# kubectl create -f rc-service.ymlservice "webserver-service" created[[email protected] techcode]#

Získejte stav služby pomocí níže uvedeného příkazu kubectl

 [[Chráněné emailem] TechCode] # Kubectl Získejte SVC -O Widename Cluster-IP EXTERNAL-IP Port (y) Age SelectorKubernetes 10.96.0.1 <Žádný> 443 / TCP 3H  WebServer-Service 10.111.34.34        80:30002/TCP   1m        verze=1.1[[email protected] techcode]#

Nyní zkuste přistupovat k webovému serveru z obou uzlů

[[e-mail chráněný] ~]# curl http://192.168.1.40:30002

[[e-mail chráněný] ~]# curl http://192.168.1.50:30002

Podle výše uvedeného výstupu můžeme přistupovat k našemu webovému serveru pomocí IP adresy obou pracovních uzlů. Kdykoli přistupujeme k webovému serveru pomocí IP pracovních uzlů, požadavek je automaticky vyrovnán zatížením mezi moduly na uzlech.

Tímto končí článek. Podělte se o svou zpětnou vazbu a komentáře pro případ, že tento článek pomůže nasadit a porozumět modulům, službě a řadiči replikace.


Cent OS
  1. Zastavit a zakázat bránu firewall na CentOS 7 – proces krok za krokem?

  2. Systemctl nahrazuje příkazy Chkconfig a Service v CentOS 7

  3. Jak zakázat službu rpc.quotad v CentOS/RHEL 6 a 7

  1. Jak zastavit a zakázat bránu firewall na CentOS 7

  2. Jak nainstalovat a nakonfigurovat Fail2Ban na CentOS 8 a Fedora 33

  3. Jak maskovat nebo odmaskovat službu v CentOS/RHEL 7 a 8

  1. Nainstalujte KVM Hypervisor na CentOS 7.xa RHEL 7.x

  2. Jak nainstalovat a nakonfigurovat Foreman na CentOS 7

  3. Jak nainstalovat a nakonfigurovat Jenkins na CentOS 7 a RHEL 7