Changes

Google Kubernetes Engine

4,461 bytes added, 19:59, 17 October 2019
Klaszter létrehozás
Create in progress for [https://cloudresourcemanager.googleapis.com/v1/projects/adamproject1].
</pre>
<br>
Listázzuk ki az összes projektet:
<pre>
# gcloud projects list
PROJECT_ID NAME PROJECT_NUMBER
adamproject1 adamproject1 206600067398
leafy-firmament-183906 My Project 23184 1046937073531
optimum-agent-244420 My First Project 174610655273
</pre>
<br>
 
Projekt törlése:
<pre>
# gcloud projects delete leafy-firmament-183906
Your project will be deleted.
 
Do you want to continue (Y/n)? Y
 
Deleted [https://cloudresourcemanager.googleapis.com/v1/projects/leafy-firmament-183906].
 
You can undo this operation for a limited period by running '
commands below. See https://cloud.google.com/resource-manager/docs/creating-managing-projects for information on shutting down projects
$ gcloud projects undelete leafy-firmament-183906
</pre>
 
<br>
==Bejelentkezés és kubectl==
A gcloud bejelentkezési adatait a '''config list''' paranccsal lehet lekérni:
--min-nodes 1
</pre>
{{warning|A '''num-nodes''' értéké zónákra fog vonatkozni. Ha a node-locations-ben három zónát sorolunk föl, és a num-nodes értéke 2, akkor összesen 6 node fog létrejönni}}
 
<br>
<pre>
Do you want to continue (Y/n)? Y
</pre>
<br>
 
===Node pool===
Minden cluster-hez rendelve van egy node pool amit így listázhatunk:
<pre>
# gcloud container node-pools list --region europe-west6 --cluster adam1
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION
default-pool n1-standard-2 100 1.13.10-gke.0
</pre>
 
Ezt a konzolon, a klaszter részletek oldal alján láthatjuk:
:[[File:ClipCapIt-191017-214842.PNG]]
<br>
 
A pool-t a cluster resize paranccsal méretezhetjük át:
<pre>
gcloud container clusters resize [CLUSTER_NAME] --node-pool [POOL_NAME] --num-nodes [NUM_NODES]
</pre>
 
Ez az adam1 cluster-re az alábbi:
<pre>
# gcloud container clusters resize adam1 --node-pool default-pool \
--num-nodes 2 --region europe-west6
Pool [default-pool] for [adam1] will be resized to 2.
 
Do you want to continue (Y/n)? y
 
Resizing adam1...done.
Updated [https://container.googleapis.com/v1/projects/adamproject1/zones/europe-west6/clusters/adam1].
</pre>
{{warning|A node számot zónánkét kell érteni. Ha 2-re állítjuk és három zónában van a klaszterünk, akkor összesen 6 node lesz a pool-ban}}
 
 
<br>
<br>
Az SSH-hoz használt user-t nem kell előre létrehozni. Ha olyan nevet adunk meg, ami még nem létezik, akkor első alkalommal létre fogja hozni. Fontos tehát, hogy mindig megadjunk egy a root-tól különböző felhasználó nevet a '''@''' előtt, különben nem fog menni a belépés. Próbáljunk meg belépni az első node-ra, aminek a nevét a '''kubectl get nodes''' parancsból nézhetjük ki.
<pre>
]# gcloud compute ssh adam2@gke-adam1-default-pool-67fe18ad-3v96 
No zone specified. Using zone [europe-west6-b] for instance: [gke-adam1-default-pool-67fe18ad-3v96].
Updating project ssh metadata...⠧Updated [https://www.googleapis.com/compute/v1/projects/adamproject1].
==Service-ek publikus elérése==
A Kubernetes nodok external IP címe publikus internet cím. De ahogy azt láthattuk alapértelmezetten csak néhány port van nyitva a '''VPC''' default hálózaton. Kubernetes-ben a POD-ok elérhetőek nodePort típusú service-ekkel bármelyik node external IP címén. Mivel GKE-ben ezek publikus IP címei a VM-eknek, ezért a megfelelő hálózati szabály hozzáadásával a nodePort típusú service-ek is elérhetőek lesznek a publikus internetről. <br>Telepítsünk föl egy teszt pod-ot, amiben egy hello world webserver fog futni a 8080-ás porton.
<source lang="C++>
apiVersion: extensions/v1beta1
protocol: TCP
</source>
<pre>
# kubectl apply -f web-deployment.yaml
</pre>
<br>Majd hozzunk hozzá létre egy nodePort típusú szolgáltatást.
<source lang="C++">
apiVersion: extensions/v1beta1v1kind: IngressService
metadata:
name: basicweb-ingressservice
spec:
backendtype:NodePort serviceName ports: web -serviceport: 8080 selector: servicePortrun: 8080web0
</source>
<pre>
# kubectl apply -f web-service.yaml
</pre>
 
<br>
Most keressük meg a service node portját. Mivel nem specifikáltuk, a Kubernetes random választott egyet:
<pre>
# kubectl get svc web-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
web-service NodePort 10.60.0.58 <none> 8080:32315/TCP 27s
</pre>
 
 
Nincs más dolgunk, mint hogy a Google Cloud Platform-n kinyissuk a tűzfalat a 32315 portra. (A '''test-node-port''' az általunk kitalált neve a tűzfal szabálynak)
<pre>
# gcloud compute firewall-rules create test-node-port --allow tcp:32315
</pre>
Most keressük meg valamelyik node publikus IP címét:
<pre>
# gcloud compute firewallkubectl get node -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP gke-rules create testadam1-nodedefault-pool-port 5a644461-csxd Ready <none> 7m37s v1.12.8-allow tcp:32094gke.10 10.172.0.15 34.65.84.196
</pre>
 
 
Írjuk be a böngészőbe ezt a címet: http://34.65.84.196:32315/
:[[File:ClipCapIt-190627-085420.PNG]]
Juhuuu!
 
<br>
==Ingress==
Az ingress alapból benne van a GKE cluster-beben, és egy saját google implementáció. A service belső portját, nem Tehát nekünk semmi dolgunk nincs a node portját kell megadnitelepítéssel.
https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer
 
Az Ingress kontrollerek a Kubernetes service belső pontjára csatlakoznak rá, tehát nem a nodePort-ra. Ismétlés képpen: háromféle portot különböztetünk meg a service-ekben:
* port: ezen a porton érhető el a service a cluster-en belül. Ennek nincs köze ahhoz hogy a cluster-n kivül (a node IP címén keresztül) hol érhető el a szolgáltatás. Ha ezt nem definiáljuk, akkor ugyan az lesz mint a target-port
* target-port: ez azt mondja meg, hogy a pod-on melyik port-ra továbbítsa az üzeneteket a service. Ha nem adjuk meg külön, akkor a deployment-ben megadott -containerPort értékét fogja kapni.
* nodePort: Azt mondja meg, hogy a cluster-en kívül melyik porton lesz elérhető a szolgáltatás a node-ok publikus IP címén keresztül. Ha nem adjuk meg akkor random választ a Kubernetes, ahogy ezt az előző fejezetben láthattuk is.
 
 
Ha statikus IP-t akarunk, akkor azt külön kell csiálni, de fontos, hogy aztán kitöröljük, mert külön számláz érte.