Basis van cloud en containers
Leer met meerkeuzevragen over de namespaces en cgroups waarop containers berusten, images, lagen en copy-on-write, de instructies van een Dockerfile (RUN, CMD, ENTRYPOINT, COPY), de buildcache en de volgorde van instructies, het publiceren van poorten, volumes en bind mounts, tags en digests, multi-stage builds, Pods, Deployments, Services, Ingress en Secrets van Kubernetes, reconciliatie en rolling updates, readiness- en liveness-probes, berekeningen voor autoscaling, requests en limits, het model van gedeelde verantwoordelijkheid, beschikbaarheidszones, serverless computing, soorten opslag, het break-evenpunt tussen betalen naar gebruik en reserveringen, kosten voor gegevensoverdracht, IaC, immutable infrastructure, blue-green en canary releases, en observability.
Basis van cloud en containers: kernpunten
Veel webdiensten en bedrijfssystemen draaien tegenwoordig in de cloud als applicaties die in containers zijn verpakt. Een container isoleert processen terwijl de kernel van het besturingssysteem van de host wordt gedeeld; images worden met Docker gebouwd, en platforms zoals Kubernetes plaatsen containers op vele machines, houden hun aantal op peil en werken ze bij.
U begint met namespaces en cgroups, de lagen van images en copy-on-write, de instructies van een Dockerfile en de buildcache, het publiceren van poorten, volumes en bind mounts, tags en digests, en multi-stage builds, en daarna komen Pods, Deployments, Services, Ingress en Secrets van Kubernetes aan bod, het declareren van een gewenste toestand en reconciliatie, berekeningen voor rolling updates, readiness- en liveness-probes, berekeningen voor de HorizontalPodAutoscaler, en requests, limits en de plaatsing van Pods. Vervolgens worden het model van gedeelde verantwoordelijkheid van de cloud, regio's en beschikbaarheidszones, serverless computing en koude starts, blok-, bestands- en objectopslag, de kosten van betalen naar gebruik en het break-evenpunt van reserveringen, kosten voor gegevensoverdracht, IaC en immutable infrastructure, blue-green deployment en canary releases, artefacten maar één keer bouwen, configuratie via omgevingsvariabelen, en observability behandeld. De waarden in de rekenvragen, ook die van de foute keuzemogelijkheden, zijn gecontroleerd door ze in Python te berekenen. Alle prijzen zijn fictieve waarden. De verschillen tussen hypervisors, containers en virtuele machines worden behandeld in „Besturingssysteem en hardware”; IaaS, PaaS en SaaS, scale-out, redundantie, live migration en CDN's in „Systeemarchitectuur en betrouwbaarheid”; loadbalancers en sessies in „Basis van webtechnologie”; CI/CD in „Softwareontwikkeling en projectmanagement”; SLA's in „IT-servicemanagement en IT-audit”; en de shell en omgevingsvariabelen in „Basis van Linux en de opdrachtregel”.
Alle vragen over Basis van cloud en containers (40)
- Welke combinatie van de Linux-kernelfuncties waarop containers berusten, namespaces en cgroups (control groups), met hun taak is juist?
- Op een Linux-host wordt met Docker een container gestart uit een image dat op een andere distributie dan die van de host is gebaseerd, en daarin worden uname -r (een opdracht die de release van de kernel toont) en cat /etc/os-release (een opdracht die informatie over de distributie toont) uitgevoerd. Welke beschrijving van de resultaten is juist?
- Welke beschrijving van de relatie tussen een containerimage en een container is juist?
- In een container die uit een image is gestart, wordt het configuratiebestand /etc/app.conf gewijzigd, dat deel uitmaakt van het image. Welke beschrijving van wat er gebeurt met het gangbare opslagmechanisme van Docker (zoals overlay2) is juist?
- Om een archief van 500 MB, data.tar.gz, uit te pakken, is met het bovenstaande Dockerfile een image gebouwd. Hoewel het archief na het uitpakken in dezelfde RUN werd verwijderd, bleef het image nog steeds groter, precies met de grootte van het archief. Welke combinatie van oorzaak en oplossing is het meest geschikt?
- Er zijn vijf images die elk een eigen laag van 30 MB stapelen op hetzelfde basisimage (120 MB). Compressie van de lagen en de grootte van metadata worden verwaarloosd. Hoeveel schijfruimte gebruiken de images als alle vijf naar één server worden gehaald (pull)?
- Welke combinatie van de opdracht die bij het bouwen van het image met docker build wordt uitgevoerd en de opdracht die bij het starten van een container met docker run wordt uitgevoerd, is voor het bovenstaande Dockerfile juist?
- Een image met de naam pinger, gebouwd uit het bovenstaande Dockerfile, wordt gestart met docker run pinger example.com. Welke opdracht wordt in de container uitgevoerd?
- Met de bovenstaande opdracht wordt een container gestart uit het image nginx, een webserver die op poort 80 luistert. Het IP-adres van de host is 192.0.2.10, en er zijn geen beperkingen zoals een firewall. Welke URL is juist om deze webserver te bereiken vanuit een browser op een andere pc in hetzelfde netwerk?
- Het bovenstaande Dockerfile (B) is gemaakt uit Dockerfile (A), waarin RUN npm ci na COPY . . stond, door de volgorde zo te veranderen dat eerst alleen de bestanden met de afhankelijkheden worden gekopieerd. npm ci duurt 120 seconden, npm run build 30 seconden en COPY . . 2 seconden; de tijd van de andere instructies is verwaarloosbaar. Het image wordt 20 keer per dag opnieuw gebouwd nadat alleen de broncode onder src is gewijzigd (package.json en package-lock.json blijven ongewijzigd). Hoeveel korter is de totale buildtijd per dag met B dan met A, als de cache van de vorige build kan worden gebruikt?
- Welke beschrijving van benoemde volumes en bind mounts in Docker, die worden gebruikt om gegevens te bewaren die een container schrijft, is juist?
- Een image wordt gehaald (pull) door registry.example.com/team/web:1.4 op te geven. Welke combinatie geeft de betekenis van elk deel van deze verwijzing juist weer?
- scratch is een leeg image dat geen enkel bestand bevat. Welke beschrijving van wat het uiteindelijke image bevat dat met het bovenstaande Dockerfile met een multi-stage build is gebouwd, is juist?
- Wat is in Kubernetes de kleinste eenheid die wordt gedeployed en beheerd, en die een of meer containers groepeert die hetzelfde IP-adres en dezelfde volumes delen?
- In Kubernetes draait een Deployment met replicas: 3 drie Pods. Welke beschrijving van wat er gebeurt als een van deze Pods met kubectl delete pod wordt verwijderd, is juist?
- In een Kubernetes-Deployment wordt het containerimage in de Pod-template veranderd in een nieuwe versie. Welke beschrijving van wat er gebeurt met de standaardupdatestrategie (RollingUpdate) is juist?
- Een Deployment met replicas: 10 heeft als instellingen voor de rolling update maxSurge: 25% en maxUnavailable: 25%. Welke combinatie van de bovengrens van het totale aantal Pods en de ondergrens van het aantal beschikbare Pods tijdens een update is juist?
- In Kubernetes krijgt een Pod telkens een ander IP-adres wanneer hij opnieuw wordt gemaakt. Met welke resource kunnen andere applicaties via een naam en een adres die niet veranderen, verbinding maken met meerdere Pods die met labels zijn geselecteerd, waarbij de belasting over die Pods wordt verdeeld?
- In een Kubernetes-cluster moeten HTTPS-aanvragen die voor één hostnaam binnenkomen, naar de Service api worden gestuurd als het pad met /api begint, en anders naar de Service web. Welke resource is geschikt om deze routeringsregel vast te leggen?
- Het wachtwoord van een database wordt in een Kubernetes-Secret opgeslagen. Welke beschrijving van een Secret is juist?
- Een webapplicatie kan na het starten ongeveer 60 seconden lang, terwijl ze haar cache laadt, geen aanvragen verwerken en geeft in die tijd 503 terug op /ready. Welke beschrijving van het effect van het toevoegen van de bovenstaande instellingen aan de container van de Pod is juist?
- Bij een webapplicatie op Kubernetes is de controle van de liveness-probe zo gemaakt dat ze ook nagaat of de applicatie verbinding kan maken met de database waarvan ze afhangt. Welk probleem is met deze instelling het meest waarschijnlijk?
- Een Kubernetes-HorizontalPodAutoscaler heeft een doel voor het CPU-gebruik van de Pods van 70% en een bereik van 1 tot 10 Pods. Op dit moment is het gemiddelde CPU-gebruik van 5 Pods 30%. Als het benodigde aantal Pods wordt berekend als ⌈huidig aantal × huidig gebruik ÷ doelgebruik⌉ (⌈ ⌉ betekent naar boven afronden), hoeveel Pods zijn er dan nodig?
- In een Deployment waarvan de containers van de Pods de bovenstaande instellingen hebben, draaien vier Pods die elk 400m (0,4 cores) CPU gebruiken. Het doel voor het CPU-gebruik van de HorizontalPodAutoscaler is 60%, en het benodigde aantal Pods wordt berekend als ⌈huidig aantal × huidig gebruik ÷ doelgebruik⌉. Hoeveel Pods zijn er nodig?
- Welke beschrijving van de requests en limits voor resources die in Kubernetes voor een container worden ingesteld, is juist?
- Een node heeft als toewijsbare resources 4 CPU-cores en 8 GiB geheugen. Voor de container van elke Pod zijn als requests 500m CPU en 1,5 GiB geheugen en als limits 1 CPU-core en 2 GiB geheugen ingesteld. Er zijn geen andere Pods en geen reserveringen voor het systeem. Hoeveel Pods kunnen er maximaal op deze node worden geplaatst?
- Er wordt een beheerde databasedienst in de cloud gebruikt (een dienst waarbij de aanbieder de databasesoftware beheert). Wat blijft volgens het model van gedeelde verantwoordelijkheid in het algemeen de verantwoordelijkheid van de gebruiker?
- Wat is in de cloud het belangrijkste doel van het verdelen van webservers en replica's van de database over meerdere beschikbaarheidszones binnen dezelfde regio?
- Bij serverless functies (FaaS) antwoordt soms alleen de eerste aanroep van een functie die een tijd niet is aangeroepen, enkele honderden milliseconden tot enkele seconden trager. Welke verklaring van dit verschijnsel is juist?
- Cloudopslag wordt voor drie doeleinden gebruikt: (1) als schijf aan een virtuele machine koppelen, er een bestandssysteem op maken en de gegevensbestanden van een database erop plaatsen; (2) tegelijk vanaf meerdere servers mounten en als gedeelde map gebruiken; (3) een groot aantal afbeeldingen via een API over HTTP met een sleutel (naam) lezen en schrijven, en de capaciteit laten groeien zonder die vooraf vast te leggen. Welke combinatie van opslagsoorten is geschikt voor (1) tot (3)?
- Er worden virtuele machines gebruikt die alleen voor de gebruikte tijd worden gefactureerd, tegen 40 yen per uur (een fictieve prijs). Normaal draaien 2 machines de hele maand (30 dagen) door, en op 20 werkdagen worden er elke dag 6 uur lang 4 bij gezet om de belasting op te vangen. Wat zijn de kosten voor de maand?
- Een virtuele machine kost on demand, waarbij men alleen de gebruikte uren betaalt, 50 yen per uur, of met een reservering waarbij men zich vooraf voor een jaar gebruik vastlegt, 262.800 yen per jaar, ongeacht de gebruikte uren (beide fictieve prijzen). Als een jaar 8760 uur telt, wordt de reservering goedkoper zodra het aantal gebruikte uren per jaar een bepaalde waarde overschrijdt. Hoeveel uur is dat?
- Wat geldt in het algemeen voor de manier waarop veel publieke clouds gegevensoverdracht in rekening brengen?
- Een omgeving is gemaakt door met een declaratieve tool voor IaC (infrastructure as code) een bestand toe te passen dat een netwerk en twee virtuele machines definieert. Direct daarna wordt hetzelfde bestand zonder enige wijziging opnieuw toegepast. Wat gebeurt er dan?
- Wat is een geschikte manier om de software op productieservers bij te werken volgens het idee van immutable infrastructure?
- Er worden twee omgevingen met dezelfde configuratie als productie voorbereid; in de ene blijft de huidige versie draaien, terwijl in de andere de nieuwe versie wordt geïnstalleerd en gecontroleerd, en daarna wordt de loadbalancer in één keer daarnaar omgeschakeld. Is er een probleem, dan keert men door terug te schakelen snel terug naar de oude versie. Welke releasemethode is dit?
- Een dienst die 12.000 aanvragen per uur ontvangt, voert voor een nieuwe versie een canary release uit en stuurt slechts 5% van de aanvragen naar die versie. De nieuwe versie heeft een bug waardoor 3% van de ontvangen aanvragen mislukt; die wordt na een uur opgemerkt, en alle aanvragen gaan weer naar de oude versie. Hoeveel aanvragen zijn in dat uur door de bug mislukt?
- Een containerimage dat door een CI/CD-pipeline is gebouwd, is in de stagingomgeving getest en goedgekeurd. Wat is de meest geschikte manier om dit image naar productie te brengen?
- Zoals hierboven wordt het verbindingsdoel van de database niet in het image geschreven, maar bij het starten van de container als omgevingsvariabele doorgegeven. Wat is het belangrijkste voordeel van dit ontwerp?
- In een systeem waarin meerdere diensten samenwerken, wil men nagaan door welke diensten één aanvraag van een gebruiker is gegaan, in welke volgorde, en hoeveel tijd ze in elke dienst heeft gekost. Welke soort gegevens voor observability is hiervoor het meest geschikt?
Andere onderwerpen in Computersystemen
- Computerarithmetiek IEEE 754, vaste komma, afrondingsfouten
- Kansrekening, statistiek en wachtrijen Tellen, kansverdelingen, schatten en toetsen, M/M/1
- Instructieset en assembly RISC-V, adresseringsmodi, aanroepconventies
- Compilers Parsing, SSA, optimalisatie, registertoewijzing
- Linker, loader en uitvoerbare formaten ELF, symbolen, relocatie, dynamisch linken
- Besturingssysteem en hardware Interrupts, systeemaanroepen, paginafouten
- Basis van Linux en de opdrachtregel Shell, bestandsrechten, pipes, scripts
- Geheugenhiërarchie en prestaties Cache, vervangingsbeleid, drie soorten misses
- Multicore en synchronisatie MESI, atomaire instructies, geheugenbarrières
- GPU-programmeren Warps, gedeeld geheugen, coalescing, occupancy
- AI-hardware en softwarestack Inferentie vs training, kwantisatie, roofline
- Basis van machine learning Leervormen, evaluatiematen, neurale netwerken
- Embedded systemen en firmware GPIO, UART/SPI/I2C, RTOS
- Hardwarebeschrijvingstalen en verificatie Verilog, latches, toestandsmachines, testbenches
- Interfaces en busstandaarden PCIe, USB, SerDes, CXL
- Basis van computernetwerken TCP/IP, subnetberekening, DNS, TLS
- Basis van webtechnologie HTTP, cookies, REST, CORS, caching
- Basis van draadloze communicatie Modulatie, OFDM, MIMO, RF-schakelingen
- Basis van informatiebeveiliging Cryptografie, authenticatie, webaanvallen
- Basis van databases SQL, normalisatie, transacties
- Datastructuren en algoritmen Complexiteit, zoeken, sorteren, grafen
- Basis van programmeren (pseudocode traceren) Pseudocode, traceren, arrays, recursie
- Basis van programmeren in C Pointers, geheugen, ongedefinieerd gedrag
- Softwareontwikkeling en projectmanagement Processen, testen, planning en kosten
- Basis van bedrijfsstrategie en boekhouding Boekhouding, break-even, strategie, marketing
- IT-servicemanagement en IT-audit SLA's, incidenten en problemen, audit en interne beheersing
- Systeemarchitectuur en betrouwbaarheid Redundantie, RAID, back-ups, cloud
- Prestatiemeting en profiling Wet van Amdahl, CPI, knelpunten
- Hardwarebeveiliging Side channels, secure boot, TEE, PUF
- Energiebeheer (softwaregestuurd) DVFS, power gating, slaaptoestanden