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.22>[ e- pracovníkJak 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.1443 / 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:30108Výš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.1443 / 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:30001Vý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] techcodePojď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 3HWebServer-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.
Jak zavést RHEL 7 / CentOS 7 Server v režimu jednoho uživatele Jak nainstalovat Kubernetes (k8s) 1.7 na CentOS 7 / RHEL 7Cent OS