Changes

Kubernetes

172 bytes added, 21:49, 29 March 2019
no edit summary
==Minikube parancsok===
<pre>
$ minikube dashboard
=POD:======================
//Docker típusú futtatás. Ugyan úgy létre fog hozni egy pod-ot és benne el fogja indítani az image-et.
<pre>
$ kubectl run db --image mongo
</pre>
 
Ez ekvivalens ezzel: kubectl create deployment db --image mongo
 <pre>
# kubectl get pods
NAME READY STATUS RESTARTS AGE
db-7fdd878ff9-7v66g 0/1 ContainerCreating 0 66s
</pre>
<pre>
# kubectl exec -it <pod név> /bin/bash
</pre>
//Ha több konténer is van a pod-ban, akkor a -c vel meg kell adni a konténer nevét:
<pre>
# kubectl exec -it -c db dbstack /bin/bash
</pre>
//Ha több konténer is van a pod-ban, akkor a pod neve után meg kell adni a konténer nevét.
<pre>
# kubectl logs dbstack -c db
</pre>
//A törléshez meg kell mondani azt is, hogy ez egy deployment. MÉg akkor is, ha ez csak egy pod.
<pre>
# kubectl delete deployment db
deployment.extensions "db" deleted
</pre>
 <pre>
# kubectl create deplyoment db --image mongo
</pre>
//Csinált hozzá egy doploymentet-et, egy ReplicaSet-et és egy Pod-ot.
<pre>
# kubectl get all
NAME READY STATUS RESTARTS AGE
NAME DESIRED CURRENT READY AGE
replicaset.apps/db-6b5c96c65f 1 1 1 2m46s
</pre>
<pre>
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
db 1/1 Running 0 2m39s 172.17.0.2 minikube <none> <none>
</pre>
<pre>
[root@adamDell2 ~]# kubectl describe pod dbstack
Name: dbstack
Container ID: docker://6b64c392a77347ce5e7b36ddfd80f2ef320a0e31d25985f813294d08cacf76b3
Image: vfarcic/go-demo-2
</pre>
 <pre>
# kubectl describe -f pod-db.yaml
Name: db
Start Time: Wed, 13 Mar 2019 20:49:30 +0100
Labels: type=db
</pre>
<pre>
# kubectl get -f pod-db.yaml -o json
{
"vendor": "MongoLabs"
},
</pre>
//Mindig úgy kell szűrni, hogy a legfelsőbb szintű elem elé teszünk egy .-ot. Majd megadjuk a path-t.
<pre>
# kubectl get -f pod-db.yaml -o jsonpath="{.status.hostIP}"
192.168.122.228
</pre>
 
//Ha az összes lista elem kell, akkor [*]
=ReplicaSets============================
Arra szolgál, hogy a benne definiált pod lehetőleg mindig annyi példányban fusson, amit defináltunk.
<pre>
# kubectl describe rs go-demo-2
Name: go-demo-2
Normal SuccessfulCreate 112s replicaset-controller Created pod: go-demo-2-6nq9h
Normal SuccessfulCreate 112s replicaset-controller Created pod: go-demo-2-5c2sk
</pre>
<pre>
# kubectl get pods --show-labels
NAME READY STATUS RESTARTS AGE LABELS
go-demo-2-5c2sk 2/2 Running 0 5m41s db=mongo,language=go,service=go-demo-2,type=backend
go-demo-2-6nq9h 2/2 Running 0 5m41s db=mongo,language=go,service=go-demo-2,type=backend
</pre>
----------------------------------------------------------------
=Service=============
https://sookocheff.com/post/kubernetes/understanding-kubernetes-networking-model/
* nodePort: na ezt nem lehet itt megadni. Azt mondja meg, hogy a cluster-en kívül hol lesz elérhető a szolgálatás. Ha nem adjuk meg akkor random választ.
<pre>
# kubectl get svc http -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
http NodePort 10.98.187.168 <none> 80:32730/TCP 8m3s run=my-nginx
</pre>
<pre>
# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready master 7d1h v1.13.4 192.168.122.228 <none> Buildroot 2018.05 4.15.0 docker://18.6.2
</pre> ^^^^^^
Az expose autómatikusan legyártja a service definíciót a ReplicaSet-ből, amiből kiindultunk. A végerdmény az alábbi:
<pre>
# kubectl get svc http -o yaml
apiVersion: v1
run: my-nginx
type: NodePort
</pre>
A service és a ReplicaSet semmilyen kapcsolatban nincsenek egymással. Mind a kettő a selector-okkal találják meg a POD-okat.
Ha megnézzük az ep definícoját, akkor ott fel van sorolva az összes pod aki részt vesz a service-ben. Látható, hogy két pod van jelenleg . Az is ki van listázva, hogy mi a belső IP címük és hogy melyik node-on vannak.
<pre>
# kubectl get ep http -o yaml
apiVersion: v1
ports:
- port: 80
</pre>
------------------------------
A service-ek neve bekerül a DNS-be, és feloldja a Kubernetes a konténerek számára a belső virtuális IP címmel. Ha van egy ClusterIP típusú service-ünk a db-svc névvel, akkor a cluster-ben minden egyes konténerben ezt fel fogja oldani a service IP címére: 10.111.222.165. A service meg a felsorolt Enpoints-okon éri el a konténert.
<pre>
# kubectl describe svc db-svc
Name: db-svc
TargetPort: 27017/TCP
Endpoints: 172.17.0.2:27017
</pre>
A service round-rubin módon választ a végpontok között. De csak azoknak küld csomagot, amiben a livenessProbe. sikeresen futott le. Korábban userpase-el ment a kommunikácó, most már iptabels szabályokkal, ami sokkal gyorsabb, viszont nem tudja deketálni ha egy pod kiesett. Erre kell a livenessProbe