From 649b5ec6abf7e702a8be52fe131d87da1e27a271 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= Date: Fri, 6 Dec 2019 00:35:29 +0100 Subject: [PATCH] text done for real --- src/bib/mybib.bib | 106 ++++++++++++++++++++-------------------- src/content/results.tex | 26 +++++++--- 2 files changed, 72 insertions(+), 60 deletions(-) diff --git a/src/bib/mybib.bib b/src/bib/mybib.bib index c97e9b6..326ab47 100644 --- a/src/bib/mybib.bib +++ b/src/bib/mybib.bib @@ -10,146 +10,146 @@ @misc{dockervirt, author = {Nick Janetakis}, - howpublished = {https://nickjanetakis.com/blog/comparing-virtual-machines-vs-docker-containers}, + howpublished = {\url{https://nickjanetakis.com/blog/comparing-virtual-machines-vs-docker-containers}}, note = {Megtekintve 2019-12-04}, title = {Comparing Virtual Machines vs Docker Containers} } @misc{docker-overview, - howpublished = {https://docs.docker.com/engine/docker-overview/}, + howpublished = {\url{https://docs.docker.com/engine/docker-overview/}}, note = {Megtekintve 2019-12-04}, title = {Docker overview} } @misc{linux-namespaces, - howpublished = {http://man7.org/linux/man-pages/man7/namespaces.7.html}, + howpublished = {\url{http://man7.org/linux/man-pages/man7/namespaces.7.html}}, note = {Megtekintve 2019-12-04}, title = {namespaces - overview of Linux namespaces} } @misc{cgroups, - howpublished = {https://access.redhat.com/documentation/en-us/red\_hat\_enterprise\_linux/6/html/resource\_management\_guide/ch01}, + howpublished = {\url{https://access.redhat.com/documentation/en-us/red\_hat\_enterprise\_linux/6/html/resource\_management\_guide/ch01}}, note = {Megtekintve 2019-12-04}, title = {Introduction to Control Groups (Cgroups)} } @misc{mikroszeviz, author = {Farkas G{\'a}bor}, - howpublished = {https://ithub.hu/blog/post/A\_microservice\_architekturarol\_diohejban/}, + howpublished = {\url{https://ithub.hu/blog/post/A\_microservice\_architekturarol\_diohejban/}}, note = {Megtekintve 2019-12-04}, title = {A microservice architekt{\'u}r{\'a}r{\'o}l di{\'o}h{\'e}jban} } @misc{kubernetes-pods, - howpublished = {https://kubernetes.io/docs/concepts/workloads/pods/pod/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/workloads/pods/pod/}}, note = {Megtekintve 2019-12-04}, title = {Pods} } @misc{kubernetes-replicaset, - howpublished = {https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/}}, note = {Megtekintve 2019-12-04}, title = {ReplicaSet} } @misc{kubernetes-deployment, - howpublished = {https://kubernetes.io/docs/concepts/workloads/controllers/deployment/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/workloads/controllers/deployment/}}, note = {Megtekintve 2019-12-04}, title = {Deployments} } @misc{kubernetes-crd, - howpublished = {https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/}, + howpublished = {\url{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} } @misc{kubernetes-hpa, - howpublished = {https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/}, + howpublished = {\url{https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/}}, note = {Megtekintve 2019-12-04}, title = {Horizontal Pod Autoscaler} } @misc{kubeless-http, - howpublished = {https://kubeless.io/docs/http-triggers/}, + howpublished = {\url{https://kubeless.io/docs/http-triggers/}}, note = {Megtekintve 2019-12-04}, title = {Expose and secure Kubeless functions} } @misc{kubeless-pubsub, - howpublished = {https://kubeless.io/docs/pubsub-functions/}, + howpublished = {\url{https://kubeless.io/docs/pubsub-functions/}}, note = {Megtekintve 2019-12-04}, title = {PubSub events} } @misc{kubernetes-ingress, - howpublished = {https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/}}, note = {Megtekintve 2019-12-04}, title = {Ingress Controllers} } @misc{kubernetes-nginx, - howpublished = {https://kubernetes.github.io/ingress-nginx/}, + howpublished = {\url{https://kubernetes.github.io/ingress-nginx/}}, note = {Megtekintve 2019-12-04}, title = {NGINX Ingress Controller} } @misc{github-issue-1, - howpublished = {https://github.com/kubernetes-incubator/metrics-server/issues/131}, + howpublished = {\url{https://github.com/kubernetes-incubator/metrics-server/issues/131}}, note = {Megtekintve 2019-12-04}, title = {Metrics server issue with hostname resolution of kubelet and apiserver unable to communicate with metric-server clusterIP} } @misc{kubeless-quickstart, - howpublished = {https://kubeless.io/docs/quick-start/}, + howpublished = {\url{https://kubeless.io/docs/quick-start/}}, note = {Megtekintve 2019-12-04}, title = {Installation} } @misc{github-hey, - howpublished = {https://github.com/rakyll/hey}, + howpublished = {\url{https://github.com/rakyll/hey}}, note = {Megtekintve 2019-12-04}, title = {HTTP load generator, ApacheBench (ab) replacement, formerly known as rakyll/boom} } @misc{github-wrk, - howpublished = {https://github.com/wg/wrk}, + howpublished = {\url{https://github.com/wg/wrk}}, note = {Megtekintve 2019-12-04}, title = {Modern HTTP benchmarking tool} } @misc{docker-logging, - howpublished = {https://docs.docker.com/config/containers/logging/configure/}, + howpublished = {\url{https://docs.docker.com/config/containers/logging/configure/}}, note = {Megtekintve 2019-12-04}, title = {Configure logging drivers} } @misc{kubernetes-ephemeral-storage, - howpublished = {https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/\#local-ephemeral-storage}, + howpublished = {\url{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} } @misc{kubernetes-eviction, - howpublished = {https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/\#eviction-policy}, + howpublished = {\url{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} } @misc{kubernetes-nodes, - howpublished = {https://kubernetes.io/docs/concepts/architecture/nodes/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/architecture/nodes/}}, note = {Megtekintve 2019-12-04}, title = {Nodes} } @misc{kubernetes-kubelet, - howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/}, + howpublished = {\url{https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/}}, note = {Megtekintve 2019-12-04}, title = {kubelet} } @misc{cloud, - howpublished = {https://www.ibm.com/cloud/learn/cloud-computing}, + howpublished = {\url{https://www.ibm.com/cloud/learn/cloud-computing}}, note = {Megtekintve 2019-12-04}, title = {Cloud computing: A complete guide} } @@ -179,49 +179,49 @@ } @misc{os-virt, - howpublished = {https://www.w3schools.in/cloud-virtualization/os-virtualization/}, + howpublished = {\url{https://www.w3schools.in/cloud-virtualization/os-virtualization/}}, note = {Megtekintve 2019-12-04}, title = {Operating System (OS) Virtualization} } @misc{docker-layers, - howpublished = {https://medium.com/@jessgreb01/digging-into-docker-layers-c22f948ed612}, + howpublished = {\url{https://medium.com/@jessgreb01/digging-into-docker-layers-c22f948ed612}}, note = {Megtekintve 2019-12-04}, title = {Digging into Docker layers} } @misc{kubernetes-runtimes, - howpublished = {https://kubernetes.io/docs/setup/production-environment/container-runtimes/}, + howpublished = {\url{https://kubernetes.io/docs/setup/production-environment/container-runtimes/}}, note = {Megtekintve 2019-12-04}, title = {Container runtimes} } @misc{kubernetes-concepts, - howpublished = {https://kubernetes.io/docs/concepts/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/}}, note = {Megtekintve 2019-12-04}, title = {Concepts} } @misc{kube-apiserver, - howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/}, + howpublished = {\url{https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/}}, note = {Megtekintve 2019-12-04}, title = {kube-apiserver} } @misc{etcd, - howpublished = {https://etcd.io/docs/v3.4.0/learning/data\_model/}, + howpublished = {\url{https://etcd.io/docs/v3.4.0/learning/data\_model/}}, note = {Megtekintve 2019-12-04}, title = {Data model} } @misc{kubernetes-api, - howpublished = {https://kubernetes.io/docs/concepts/overview/kubernetes-api/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/overview/kubernetes-api/}}, note = {Megtekintve 2019-12-04}, title = {The Kubernetes API} } @misc{kuebrnetes-controller, - howpublished = {https://kubernetes.io/docs/concepts/architecture/controller/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/architecture/controller/}}, note = {Megtekintve 2019-12-04}, title = {Controllers} } @@ -233,109 +233,109 @@ } @misc{kuebrnetes-components, - howpublished = {https://kubernetes.io/docs/concepts/overview/components/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/overview/components/}}, note = {Megtekintve 2019-12-04}, title = {Kubernetes Components} } @misc{kubernetes-scheduler, - howpublished = {https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/}}, note = {Megtekintve 2019-12-04}, title = {Kubernetes Scheduler} } @misc{kubernetes-kube-proxy, - howpublished = {https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/}, + howpublished = {\url{https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/}}, note = {Megtekintve 2019-12-04}, title = {kube-proxy} } @misc{kubernetes-service, - howpublished = {https://kubernetes.io/docs/concepts/services-networking/service/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/services-networking/service/}}, note = {Megtekintve 2019-12-04}, title = {Service} } @misc{kubernetes-volume, - howpublished = {https://kubernetes.io/docs/concepts/storage/volumes/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/storage/volumes/}}, note = {Megtekintve 2019-12-04}, title = {Volumes} } @misc{kubernetes-ingress-resource, - howpublished = {https://kubernetes.io/docs/concepts/services-networking/ingress/}, + howpublished = {\url{https://kubernetes.io/docs/concepts/services-networking/ingress/}}, note = {Megtekintve 2019-12-04}, title = {Ingress} } @misc{kubeless, - howpublished = {https://itnext.io/kubeless-kubernetes-native-serverless-framework-3d0f96e03add}, + howpublished = {\url{https://itnext.io/kubeless-kubernetes-native-serverless-framework-3d0f96e03add}}, note = {Megtekintve 2019-12-04}, title = {Kubeless --- Kubernetes Native Serverless Framework} } @misc{kubeless-api-deploy, - howpublished = {https://kubeless.io/docs/advanced-function-deployment/}, + howpublished = {\url{https://kubeless.io/docs/advanced-function-deployment/}}, note = {Megtekintve 2019-12-04}, title = {Deploying Kubeless Functions using Kubernetes API} } @misc{kubeless-build, - howpublished = {https://kubeless.io/docs/building-functions/}, + howpublished = {\url{https://kubeless.io/docs/building-functions/}}, note = {Megtekintve 2019-12-04}, title = {Build process for functions} } @misc{istio-service-mesh, - howpublished = {https://istio.io/docs/concepts/what-is-istio/}, + howpublished = {\url{https://istio.io/docs/concepts/what-is-istio/}}, note = {Megtekintve 2019-12-04}, title = {What is Istio?} } @misc{istio-observer, - howpublished = {https://istio.io/docs/concepts/observability/}, + howpublished = {\url{https://istio.io/docs/concepts/observability/}}, note = {Megtekintve 2019-12-04}, title = {Observability} } @misc{istio-mgmt, - howpublished = {https://istio.io/docs/concepts/traffic-management/}, + howpublished = {\url{https://istio.io/docs/concepts/traffic-management/}}, note = {Megtekintve 2019-12-04}, title = {Traffic Management} } @misc{knative, - howpublished = {https://containerjournal.com/topics/container-management/what-is-knative-and-what-can-it-do-for-you/}, + howpublished = {\url{https://containerjournal.com/topics/container-management/what-is-knative-and-what-can-it-do-for-you/}}, note = {Megtekintve 2019-12-04}, title = {What is Knative, and What Can It Do for You?} } @misc{knative-serving, - howpublished = {https://knative.dev/docs/serving/}, + howpublished = {\url{https://knative.dev/docs/serving/}}, note = {Megtekintve 2019-12-04}, title = {Knative Serving} } @misc{knative-eventing, - howpublished = {https://knative.dev/docs/eventing/}, + howpublished = {\url{https://knative.dev/docs/eventing/}}, note = {Megtekintve 2019-12-04}, title = {Knative Eventing} } @misc{knative-thoughts, - howpublished = {https://searchitoperations.techtarget.com/news/252469607/Knative-serverless-Kubernetes-bypasses-FaaS-to-revive-PaaS}, + howpublished = {\url{https://searchitoperations.techtarget.com/news/252469607/Knative-serverless-Kubernetes-bypasses-FaaS-to-revive-PaaS}}, note = {Megtekintve 2019-12-04}, title = {Knative serverless Kubernetes bypasses FaaS to revive PaaS} } @misc{knative-gateweay, - howpublished = {https://knative.dev/v0.9-docs/serving/samples/knative-routing-go/}, + howpublished = {\url{https://knative.dev/v0.9-docs/serving/samples/knative-routing-go/}}, note = {Megtekintve 2019-12-04}, title = {Routing across multiple Knative services - Go} } @misc{knative-autoscaler, - howpublished = {https://knative.dev/docs/serving/configuring-the-autoscaler/}, + howpublished = {\url{https://knative.dev/docs/serving/configuring-the-autoscaler/}}, note = {Megtekintve 2019-12-04}, title = {Configuring the Autoscaler} } @@ -347,19 +347,19 @@ } @misc{knative-gloo, - howpublished = {https://medium.com/solo-io/gloo-by-solo-io-is-the-first-alternative-to-istio-on-knative-324753586f3a}, + howpublished = {\url{https://medium.com/solo-io/gloo-by-solo-io-is-the-first-alternative-to-istio-on-knative-324753586f3a}}, note = {Megtekintve 2019-12-04}, title = {Gloo, by Solo.io, is the first alternative to Istio on Knative} } @misc{knative-monitoring, - howpublished = {https://github.com/knative/docs/blob/master/docs/serving/accessing-metrics.md}, + howpublished = {\url{https://github.com/knative/docs/blob/master/docs/serving/accessing-metrics.md}}, note = {Megtekintve 2019-12-04}, title = {Accessing Metrics} } @misc{knative-crd, - howpublished = {https://github.com/knative/serving/blob/master/docs/spec/overview.md}, + howpublished = {\url{https://github.com/knative/serving/blob/master/docs/spec/overview.md}}, note = {Megtekintve 2019-12-04}, title = {Resource Types} } diff --git a/src/content/results.tex b/src/content/results.tex index 05dd2f9..9984038 100644 --- a/src/content/results.tex +++ b/src/content/results.tex @@ -62,24 +62,36 @@ Erre a problémára több megoldási lehetőség létezik, viszont egyik sem tö Annak érdekében, hogy a Knative-ba telepített függvények skálázódása az általuk nyújtott teljesítményben is meglátszódjon, szerettem volna limitálni egy-egy Pod teljesítményét. Erre viszont a Knative által létrehozott objektum típusok esetében nincs lehetőség. Emiatt úgy döntöttem, hogy a Knative által létrehozott Kubernetes Deployment objektumot módosítom, ott hozom létre a limiteket. Ez sikerült is, a függvény működött tovább, a megadott korlátozások érvénybe léptek. Viszont az elvárások nem teljesültek, a Podok létrejöttével nem emelkedett meg a függvény teljesítménye. A lenti diagrammon látszik, hogy a függvény végig ezer kérést volt képes kiszolgálni másodpercenként. +%TODO Korábbi mérések során a prímszámoló függvény egy Python folyamatot használva nyolcszáz kérést szolgált ki másodpercenként. Tehát a mérés során létrejött öt Pod nagyjából négyezer kérést kellene kiszolgálnia másodpercenként az elvárásaink alapján. Ezzel szemben az egész mérés során olyan teljesítményt nyújt a függvény, melyet két Pod is ki tudna szolgálni. -Kíváncsi voltam, egyes mérések során milyen belső állapotai vannak a Knative egyes alegységeinek. Azért, hogy ezeket megfigyelhessem, telepítettem a Knative Monitoring egységét. Ez után újra elvégeztem bizonyos méréseket. Először a prímszámoló függvény viselkedését vizsgáltam meg. Az első ábrán a Podok CPU használata látható. Érdekes, hogy a Workeren elérhető húsz magból összesen hetet sem használnak. A második ábrán látható, hogy a függvényt kiszolgáló Podok és a Knative rendszer processzorhasználata hogyan alakul egymáshoz képest. - - +Kíváncsi voltam, egyes mérések során milyen belső állapotai vannak a Knative egyes alegységeinek. Azért, hogy ezeket megfigyelhessem, telepítettem a Knative Monitoring egységét. Ez után újra elvégeztem bizonyos méréseket. Először a prímszámoló függvény viselkedését vizsgáltam meg. Érdekes, hogy a Workeren elérhető húsz magból összesen hetet sem használnak. +%TODO -Érdekes, hogy együtt is csupán körülbelül tíz processzormagot használnak. A Control Plane az ábrán a Knative Serving egyes komponenseit, az Istio-t, a monitoring eszközöket és a Kubernetes beépített részeit jelenti. A lenti ábrán látható ezen komponensek között miként oszlik el a processzorhasználat. +A fenti ábrán látható, hogy a függvényt kiszolgáló Podok és a Knative rendszer processzorhasználata hogyan alakul egymáshoz képest. Érdekes, hogy együtt is csupán körülbelül tíz processzormagot használnak. A Control Plane az ábrán a Knative Serving egyes komponenseit, az Istio-t, a monitoring eszközöket és a Kubernetes beépített részeit jelenti. A lenti ábrán látható ezen komponensek között miként oszlik el a processzorhasználat. +%TODO -Látszik, hogy a Knative Serving komponense használja leginkább a processzort. A kubectl top parancsot használva azt is sikerült kideríteni, hogy pontosan az activator nevű komponens miatt emelkedik ki a Knative processzorhasználata. A Knative activator felel a metrik\'ak autoscaler fel\'e tov\'abb\'it\'as\'a\'ert, valamint inaktiv Revision-\"okh\"oz \'erkező k\'er\'esek bufferel\'es\'e\'ert. A Grafana által generált grafikonok egyikén megfigyelhető, hogy a pánik mód mikor kapcsolt be és meddig tartott. Ez a lenti grafikonon látszik. A pánik mód a specifikáltak szerint viselkedik, az xy ábrán az is látszik, miként alakult a Podok száma a mérés során. +Látszik, hogy a Knative Serving komponense használja leginkább a processzort. A kubectl top parancsot használva azt is sikerült kideríteni, hogy pontosan az Activator nevű komponens miatt emelkedik ki a Knative processzorhasználata. A Knative Activator felel a metrik\'ak autoscaler fel\'e tov\'abb\'it\'as\'a\'ert, valamint inaktiv Revision-\"okh\"oz \'erkező k\'er\'esek bufferel\'es\'e\'ert. A Grafana által generált grafikonok egyikén megfigyelhető, hogy a pánik mód mikor kapcsolt be és meddig tartott. Ez a lenti grafikonon látszik. A pánik mód a specifikáltak szerint viselkedik, az xy ábrán az is látszik, miként alakult a Podok száma a mérés során. +%TODO - +%TODO + -Másodikként az echo típusú függvény terhelése alatt vizsgáltam meg a Knative belső működését. +A fenti k\'et \'abr\'an l\'atszik, hogy a p\'anik m\'od sor\'an l\'etrej\"ottek r\"ovid idő alatt a Podok, majd ut\'ana v\'egig k\"ozel annyi sz\'am\'u Pod volt. Az is megfigyelhető, hogy b\'ar a hosztg\'ep nincs kihaszn\'alva, a f\"uggv\'eny teljes\'itm\'enye degrad\'al\'odott. + + + +A Knative rendszer sz\'amos m\'odon sz\'amontartja a f\"uggv\'enybe \'erkező konkurens k\'er\'esek sz\'am\'at. P\'eld\'aul, mint ahogy az a fenti \'abr\'an l\'athat\'o, az Average Panic Concurrency egy r\"ovidebb idő alatt sz\'amolt \'atlag, mint ahogy a p\'anik sk\'al\'az\'ashoz sz\"uks\'eges. Az Average Concurrency egy sokkal lassabban v\'altoz\'o \'ert\'ek, ez az, ami az eddigi m\'er\'esek sor\'an ki lett nyerve az autoscaler napl\'of\'ajljaib\'ol. A Target Concurrency \'ert\'ek a YAML \'allom\'anyban be\'all\'itott \'ert\'ek. Az Excess Burst Capacity \'ert\'ek reprezent\'alja a k\"ul\"onbs\'eget a f\"uggv\'eny tartal\'ek kapacit\'asa - mennyi t\"obblet terhel\'est k\'epes a f\"uggv\'eny feldolgozni, mielőtt t\'ulterhelődik - \'es a be\'all\'itott c\'elkonkurencia k\"oz\"ott. Amennyiben ez a sz\'am negat\'iv, az Activator komponensen is \'atmennek a be\'erkező k\'er\'esek. + +Másodikként az echo típusú függvény terhelése alatt vizsgáltam meg a Knative belső működését. A lenti \'abr\'an megfigyelhető, hogy ez esetben a Control Plane processzorhaszn\'alata t\"obb volt, mint a Data Plane-\'e. A m\'er\'es sor\'an ez esetben is romlott a monitoring rendszer telep\'it\'ese ut\'an. + +%TODO +