Changes

Kubernetes

2,225 bytes added, 22:14, 2 May 2019
Pod szintű kommunikáció
==Pod szintű kommunikáció==
A pod hálózati szempontból nem egy plusz réteg a konténer körül, nem úgy kell elképzelni, mint ha egy konténerben futtatnánk egy másik konténert, sokkal inkább úgy, hogy a POD egy interfésze a konténernek, újra csomagolja a docker konténert és csinál belőle egy "kubernetes konténert". A POD IP címe megegyezik a POD belsejében futó konténer IP címével, amit a Kubernetes oszt ki véletlenszerűen minden egyes POD-nak. A POD-nak akkor is csak egy IP címe van, ha több konténer fut benne.... TODO rajz...
===Konténerek közötti kommunikáció===
... TODO rajz...
 
Ha egy POD belsejében több konténer van, akkor azok osztoznak a hálózati névtérben, tehát ez nem egyenlő azzal, mint ha a lokális gépünkön két konténert elindítanánk egymás mellett, mert ott mind a két konténernek saját hálózati névtere lenne, és alap esetben nem tudnak egymással kommunikálni. Tehát ebből is látszik, hogy a POD a konténer újra csomagolása a hagyományos docker-hez képest, vagyis ha több konténer van egy POD-ban, akkor az olyan mint ha a két image-et egy konténerben "csomagoltuk" volna. A közös POD-ban futó konténerek a localhost-on úgy látják egymást, de ugyan azokon a portokon nem hallgatózhat két konténer, mert akkor port ütközés lesz. A POD tudni fogja a közös névtér ellenére, hogy melyik konténer melyik porton figyel, és a külső kéréseket a megfelelő konténernek fogja továbbítani.
 
<source lang="C++">
apiVersion: v1
kind: Pod
metadata:
name: go-demo-2
labels:
app: myapp
spec:
containers:
- name: my-nginx
image: nginx
ports:
- containerPort: 80
- name: nettest
image: amouat/network-utils
command: [ "bin/bash" ]
args: ["-c", "while true; do echo hello; sleep 10;done"]
</source>
A network-utils image-ből készülő konténernek végtelen ciklusban adtunk munkát, hogyne álljon le, ahogy létrejön.
 
<pre>
# kubectl create -f pod-db.yaml
pod/go-demo-2 created
</pre>
 
 
Lépjünk be a nettsest konténerbe:
<pre>
# kubectl exec -it -c nettest go-demo-2 /bin/sh
#
</pre>
 
Majd a localhost-on nézzük meg mit találunk a 80-as porton:
<pre>
# curl localhost:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</pre>
Láthatjuk, hogy annak ellenére választ kapott, hogy valójában a másik konténer hallgatózik a 80-as porton.
 
 
===Pod-ok közötti kommunikáció===
Egy Kubernetes cluster-ben minden pod automatikusan tud minden másik POD-al kommunikálni a POD IP címén keresztül. Ez igaz a node-okra is. Minden node elér minden POD-ot és minden POD eléri az összes node-ot a node IP címén annak ellenére, hogy a pod-ok és a node-ok más hálózatban vannak.
<title>Welcome to nginx!</title>
</pre>
Látható hogy a node is elérte a pod-ban futó konténert.    
=Service=