diff --git a/src/.kile/thesis.kilepr.gui b/src/.kile/thesis.kilepr.gui index 7fa61ab..af07197 100644 --- a/src/.kile/thesis.kilepr.gui +++ b/src/.kile/thesis.kilepr.gui @@ -2,7 +2,7 @@ kile_livePreviewEnabled=true kile_livePreviewStatusUserSpecified=true kile_livePreviewTool=LivePreview-XeLaTeX -lastDocument=thesis.tex +lastDocument=content/preparation.tex [document-settings,item:../../thesis-template-latex/src/thesis.tex] Bookmarks= @@ -112,36 +112,36 @@ open=true order=0 [item:content/acknowledgement.tex] -open=true +open=false order=1 [item:content/appendices.tex] open=true -order=2 +order=6 [item:content/closing.tex] open=true -order=3 +order=5 [item:content/create-functions.tex] -open=true +open=false order=4 [item:content/introduction.tex] open=true -order=5 +order=1 [item:content/preparation.tex] open=true -order=6 +order=3 [item:content/results.tex] open=true -order=7 +order=4 [item:content/theory.tex] open=true -order=8 +order=2 [item:thesis.kilepr] open=false @@ -149,7 +149,7 @@ order=-1 [item:thesis.tex] open=true -order=9 +order=7 [view-settings,view=0,item:../../thesis-template-latex/src/thesis.tex] CursorColumn=32 @@ -160,8 +160,8 @@ TextFolding=[] ViMarks= [view-settings,view=0,item:content/abstract.tex] -CursorColumn=0 -CursorLine=0 +CursorColumn=113 +CursorLine=12 Dynamic Word Wrap=false JumpList= TextFolding=[] @@ -176,28 +176,28 @@ TextFolding=[] ViMarks= [view-settings,view=0,item:content/appendices.tex] -CursorColumn=0 -CursorLine=0 +CursorColumn=29 +CursorLine=12 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks= +ViMarks=.,12,28,[,12,28,],12,28 [view-settings,view=0,item:content/closing.tex] -CursorColumn=0 -CursorLine=0 +CursorColumn=46 +CursorLine=4 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks= +ViMarks=.,17,51,[,17,47,],17,51 [view-settings,view=0,item:content/create-functions.tex] CursorColumn=0 -CursorLine=0 +CursorLine=56 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks= +ViMarks=.,32,310,[,32,307,],32,310 [view-settings,view=0,item:content/introduction.tex] CursorColumn=4 @@ -208,33 +208,33 @@ TextFolding=[] ViMarks=.,0,0,[,0,0,],0,26 [view-settings,view=0,item:content/preparation.tex] -CursorColumn=0 -CursorLine=0 +CursorColumn=86 +CursorLine=20 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks= +ViMarks=.,22,0,[,22,0,],22,0 [view-settings,view=0,item:content/results.tex] -CursorColumn=0 -CursorLine=0 +CursorColumn=28 +CursorLine=4 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks= +ViMarks=.,4,28,[,4,28,],4,28 [view-settings,view=0,item:content/theory.tex] -CursorColumn=57 -CursorLine=28 +CursorColumn=20 +CursorLine=170 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks=.,115,0,[,115,0,],115,0 +ViMarks=.,168,203,[,168,203,],168,213 [view-settings,view=0,item:thesis.tex] -CursorColumn=0 -CursorLine=3 +CursorColumn=29 +CursorLine=74 Dynamic Word Wrap=false JumpList= TextFolding=[] -ViMarks=.,3,0,[,3,0,],3,0 +ViMarks=.,102,0,[,102,0,],102,0 diff --git a/src/bib/mybib.bib b/src/bib/mybib.bib index a5551a0..1d9745e 100644 --- a/src/bib/mybib.bib +++ b/src/bib/mybib.bib @@ -21,7 +21,7 @@ title = {Docker overview} } -@manual{linux-namespaces, +@misc{linux-namespaces, howpublished = {http://man7.org/linux/man-pages/man7/namespaces.7.html}, note = {Megtekintve 2019-12-04}, title = {namespaces - overview of Linux namespaces} @@ -40,55 +40,55 @@ title = {A microservice architekt{\'u}r{\'a}r{\'o}l di{\'o}h{\'e}jban} } -@manual{kubernetes-pods, +@misc{kubernetes-pods, howpublished = {https://kubernetes.io/docs/concepts/workloads/pods/pod/}, note = {Megtekintve 2019-12-04}, title = {Pods} } -@manual{kubernetes-replicaset, +@misc{kubernetes-replicaset, howpublished = {https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/}, note = {Megtekintve 2019-12-04}, title = {ReplicaSet} } -@manual{kubernetes-deployment, +@misc{kubernetes-deployment, howpublished = {https://kubernetes.io/docs/concepts/workloads/controllers/deployment/}, note = {Megtekintve 2019-12-04}, title = {Deployments} } -@manual{kubernetes-crd, +@misc{kubernetes-crd, howpublished = {https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/}, note = {Megtekintve 2019-12-04}, title = {Extend the Kubernetes API with CustomResourceDefinitions} } -@manual{kubernetes-hpa, +@misc{kubernetes-hpa, howpublished = {https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/}, note = {Megtekintve 2019-12-04}, title = {Horizontal Pod Autoscaler} } -@manual{kubeless-http, +@misc{kubeless-http, howpublished = {https://kubeless.io/docs/http-triggers/}, note = {Megtekintve 2019-12-04}, title = {Expose and secure Kubeless functions} } -@manual{kubeless-pubsub, +@misc{kubeless-pubsub, howpublished = {https://kubeless.io/docs/pubsub-functions/}, note = {Megtekintve 2019-12-04}, title = {PubSub events} } -@manual{kubernetes-ingress, +@misc{kubernetes-ingress, howpublished = {https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/}, note = {Megtekintve 2019-12-04}, title = {Ingress Controllers} } -@manual{kubernetes-nginx, +@misc{kubernetes-nginx, howpublished = {https://kubernetes.github.io/ingress-nginx/}, note = {Megtekintve 2019-12-04}, title = {NGINX Ingress Controller} @@ -100,7 +100,7 @@ title = {Metrics server issue with hostname resolution of kubelet and apiserver unable to communicate with metric-server clusterIP} } -@manual{kubeless-quickstart, +@misc{kubeless-quickstart, howpublished = {https://kubeless.io/docs/quick-start/}, note = {Megtekintve 2019-12-04}, title = {Installation} @@ -118,31 +118,31 @@ title = {Modern HTTP benchmarking tool} } -@manual{docker-logging, +@misc{docker-logging, howpublished = {https://docs.docker.com/config/containers/logging/configure/}, note = {Megtekintve 2019-12-04}, title = {Configure logging drivers} } -@manual{kubernetes-ephemeral-storage, +@misc{kubernetes-ephemeral-storage, howpublished = {https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\#local-ephemeral-storage}, note = {Megtekintve 2019-12-04}, title = {Managing Compute Resources for Containers - Local ephemeral storage} } -@manual{kubernetes-eviction, +@misc{kubernetes-eviction, howpublished = {https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/\#eviction-policy}, note = {Megtekintve 2019-12-04}, title = {Configure Out of Resource Handling - Eviction Policy} } -@manual{kubernetes-nodes, +@misc{kubernetes-nodes, howpublished = {https://kubernetes.io/docs/concepts/architecture/nodes/}, note = {Megtekintve 2019-12-04}, title = {Nodes} } -@manual{kubernetes-kubelet, +@misc{kubernetes-kubelet, howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/}, note = {Megtekintve 2019-12-04}, title = {kubelet} @@ -184,85 +184,85 @@ title = {Operating System (OS) Virtualization} } -@manual{docker-layers, +@misc{docker-layers, howpublished = {https://medium.com/@jessgreb01/digging-into-docker-layers-c22f948ed612}, note = {Megtekintve 2019-12-04}, title = {Digging into Docker layers} } -@manual{kubernetes-runtimes, +@misc{kubernetes-runtimes, howpublished = {https://kubernetes.io/docs/setup/production-environment/container-runtimes/}, note = {Megtekintve 2019-12-04}, title = {Container runtimes} } -@manual{kubernetes-concepts, +@misc{kubernetes-concepts, howpublished = {https://kubernetes.io/docs/concepts/}, note = {Megtekintve 2019-12-04}, title = {Concepts} } -@manual{kube-apiserver, +@misc{kube-apiserver, howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/}, note = {Megtekintve 2019-12-04}, title = {kube-apiserver} } -@manual{etcd, +@misc{etcd, howpublished = {https://etcd.io/docs/v3.4.0/learning/data\_model/}, note = {Megtekintve 2019-12-04}, title = {Data model} } -@manual{kubernetes-api, +@misc{kubernetes-api, howpublished = {https://kubernetes.io/docs/concepts/overview/kubernetes-api/}, note = {Megtekintve 2019-12-04}, title = {The Kubernetes API} } -@manual{kuebrnetes-controller, +@misc{kuebrnetes-controller, howpublished = {https://kubernetes.io/docs/concepts/architecture/controller/}, note = {Megtekintve 2019-12-04}, title = {Controllers} } -@manual{kubernetes-node-controller, +@misc{kubernetes-node-controller, howpublished = {https://unofficial-kubernetes.readthedocs.io/en/latest/concepts/nodes/node/\#node-controller}, note = {Megtekintve 2019-12-04}, title = {Node - Node Controller} } -@manual{kuebrnetes-components, +@misc{kuebrnetes-components, howpublished = {https://kubernetes.io/docs/concepts/overview/components/}, note = {Megtekintve 2019-12-04}, title = {Kubernetes Components} } -@manual{kubernetes-scheduler, +@misc{kubernetes-scheduler, howpublished = {https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/}, note = {Megtekintve 2019-12-04}, title = {Kubernetes Scheduler} } -@manual{kubernetes-kube-proxy, +@misc{kubernetes-kube-proxy, howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/}, note = {Megtekintve 2019-12-04}, title = {kube-proxy} } -@manual{kubernetes-service, +@misc{kubernetes-service, howpublished = {https://kubernetes.io/docs/concepts/services-networking/service/}, note = {Megtekintve 2019-12-04}, title = {Service} } -@manual{kubernetes-volume, +@misc{kubernetes-volume, howpublished = {https://kubernetes.io/docs/concepts/storage/volumes/}, note = {Megtekintve 2019-12-04}, title = {Volumes} } -@manual{kubernetes-ingress-resource, +@misc{kubernetes-ingress-resource, howpublished = {https://kubernetes.io/docs/concepts/services-networking/ingress/}, note = {Megtekintve 2019-12-04}, title = {Ingress} @@ -274,31 +274,31 @@ title = {Kubeless --- Kubernetes Native Serverless Framework} } -@manual{kubeless-api-deploy, +@misc{kubeless-api-deploy, howpublished = {https://kubeless.io/docs/advanced-function-deployment/}, note = {Megtekintve 2019-12-04}, title = {Deploying Kubeless Functions using Kubernetes API} } -@manual{kubeless-build, +@misc{kubeless-build, howpublished = {https://kubeless.io/docs/building-functions/}, note = {Megtekintve 2019-12-04}, title = {Build process for functions} } -@manual{istio-service-mesh, +@misc{istio-service-mesh, howpublished = {https://istio.io/docs/concepts/what-is-istio/}, note = {Megtekintve 2019-12-04}, title = {What is Istio?} } -@manual{istio-observer, +@misc{istio-observer, howpublished = {https://istio.io/docs/concepts/observability/}, note = {Megtekintve 2019-12-04}, title = {Observability} } -@manual{istio-mgmt, +@misc{istio-mgmt, howpublished = {https://istio.io/docs/concepts/traffic-management/}, note = {Megtekintve 2019-12-04}, title = {Traffic Management} @@ -310,13 +310,13 @@ title = {What is Knative, and What Can It Do for You?} } -@manual{knative-serving, +@misc{knative-serving, howpublished = {https://knative.dev/docs/serving/}, note = {Megtekintve 2019-12-04}, title = {Knative Serving} } -@manual{knative-eventing, +@misc{knative-eventing, howpublished = {https://knative.dev/docs/eventing/}, note = {Megtekintve 2019-12-04}, title = {Knative Eventing} @@ -328,19 +328,19 @@ title = {Knative serverless Kubernetes bypasses FaaS to revive PaaS} } -@manual{knative-gateweay, +@misc{knative-gateweay, howpublished = {https://knative.dev/v0.9-docs/serving/samples/knative-routing-go/}, note = {Megtekintve 2019-12-04}, title = {Routing across multiple Knative services - Go} } -@manual{knative-autoscaler, +@misc{knative-autoscaler, howpublished = {https://knative.dev/docs/serving/configuring-the-autoscaler/}, note = {Megtekintve 2019-12-04}, title = {Configuring the Autoscaler} } -@manual{knative-autoscaler-component, +@misc{knative-autoscaler-component, howpublished = {https://github.com/knative/serving/blob/master/docs/scaling/DEVELOPMENT.md}, note = {Megtekintve 2019-12-04}, title = {Autoscaling} @@ -352,13 +352,13 @@ title = {Gloo, by Solo.io, is the first alternative to Istio on Knative} } -@manual{knative-monitoring, +@misc{knative-monitoring, howpublished = {https://github.com/knative/docs/blob/master/docs/serving/accessing-metrics.md}, note = {Megtekintve 2019-12-04}, title = {Accessing Metrics} } -@manual{knative-crd, +@misc{knative-crd, howpublished = {https://github.com/knative/serving/blob/master/docs/spec/overview.md}, note = {Megtekintve 2019-12-04}, title = {Resource Types} diff --git a/src/content/theory.tex b/src/content/theory.tex index 4c091d8..340b466 100644 --- a/src/content/theory.tex +++ b/src/content/theory.tex @@ -54,7 +54,7 @@ Az API-Server szolgálja ki a Kubernetes API-t \cite{kubernetes-api} , amelyen k A CoreOS által fejlesztett, nyílt forráskódú elosztott kulcs-érték tár \cite{etcd} . Itt kerül tárolásra, illetve innen lehet lekérdezni a klaszter, valamint az egyes komponensek állapotát. Egyes komponensek figyelik az itt található, nekik fontos kulcsokhoz tartozó értékeket, változás esetén elvégzik az esetleges módosításokat. \subsection{Controller Manager} -Logikailag különböző kontrollereket összefoglaló komponens \cite{kubernetes-controller} . Az alábbi kontrollereket a komplexitás csökkentése érdekében fordították egy binárisba: +Logikailag különböző kontrollereket összefoglaló komponens \cite{kuebrnetes-controller} . Az alábbi kontrollereket a komplexitás csökkentése érdekében fordították egy binárisba: \begin{itemize} \item Node Controller \cite{kubernetes-node-controller} : Egyes Node-ok \cite{kubernetes-nodes} elérhetetlenné válásának figyeléséért, erre történő reagálásért felelős. @@ -156,7 +156,7 @@ Szakdolgozatomban, közvetve, az Istio terheléskiegyenlítő szolgáltatását \section{Knative} A Knative \cite{knative} egy nyílt forráskódú, a Google által fejlesztett keretrendszer, amely a Kubernetesnél magasabb szintű absztrakciókat nyújt. Számos komponenséből a szakdolgozatban a serverless applikációk Kubernetes-be telepítését, futtatását megkönnyítő, úgynevezett Serving \cite{knative-serving} modult vizsgálom. Ezen kívül létezik még egy Eventing \cite{knative-eventing} komponens, amely eseményvezérelt alkalmazások fejlesztéséhez biztosít segédeszközöket, valamint megold bizonyos gyakori problémákat. -Nem kifejezetten Function as a Service megoldásról van szó \cite{kubeless-thoughts} , a nullára skálázás miatt emlegetik a Platform as a Service infrastruktúrák következő generációjaként, de funkcionalitása és működése remekül illeszkedik a FaaS szolgáltatásmodellhez is. Emellett a Kubernetesben már futó alkalmazásokat Knative-ba átrakni nem jelent szignifikáns munkát. Az érintett komponensek módosítására nincs szükség, csupán a Deploymenteket kell Knative Service-ekre átírni. Ezzel szemben a plusz funkciók, melyeket az átállással ki lehet használni jelentős előnyt jelentenek. +Nem kifejezetten Function as a Service megoldásról van szó \cite{knative-thoughts} , a nullára skálázás miatt emlegetik a Platform as a Service infrastruktúrák következő generációjaként, de funkcionalitása és működése remekül illeszkedik a FaaS szolgáltatásmodellhez is. Emellett a Kubernetesben már futó alkalmazásokat Knative-ba átrakni nem jelent szignifikáns munkát. Az érintett komponensek módosítására nincs szükség, csupán a Deploymenteket kell Knative Service-ekre átírni. Ezzel szemben a plusz funkciók, melyeket az átállással ki lehet használni jelentős előnyt jelentenek. Lényeges újítás a tradicionális Kubernetes-hez képest az egyes alkalmazáskomponensek nullára skálázása, valamint a konkurencia alapú skálázás. Mindkettőt a magasabb szintű absztrakció teszi lehetővé, ugyanis bár ezek Knative nélkül is elképzelhető funkciók, ezek megvalósítása számos extra komponens bevezetését igényelné. A nullára skálázáshoz szükséges egy perzisztensen létező egység, a Knative esetében az Istio, valamint a Knative Shared Gateway \cite{knative-gateweay} nevű komponens töltik be ezen egység szerepét. Konkurencia alapú skálázás esetében is ugyanez a komponens végzi a kérések elosztását. Az egy Podra eső átlagos konkurens kérések megfigyeléséért egy úgynevezett Knative Autoscaler \cite{knative-autoscaler} felel. Ez az egység hozza a fel és leskálázási döntéseket, valamint a megfigyelt konkurencia érték alapján a pánik ablak kezdetét és végét. diff --git a/src/thesis.kilepr b/src/thesis.kilepr index 738cea5..3df15a3 100644 --- a/src/thesis.kilepr +++ b/src/thesis.kilepr @@ -1,7 +1,7 @@ [General] bib_extensions=.bib bibliographyBackendAutoDetected= -bibliographyBackendUserOverride= +bibliographyBackendUserOverride=BibTeX def_graphic_ext= img_extIsRegExp=false img_extensions=.eps .jpg .jpeg .png .pdf .ps .fig .gif