Grundlagen von Cloud und Containern
Namespaces und cgroups als Grundlage von Containern, Images, Schichten und Copy-on-Write, Dockerfile-Anweisungen (RUN, CMD, ENTRYPOINT, COPY), Build-Cache und Reihenfolge der Anweisungen, Veröffentlichen von Ports, Volumes und Bind-Mounts, Tags und Digests, Multi-Stage-Builds, Pods, Deployments, Services, Ingress und Secrets in Kubernetes, Abgleich (Reconciliation) und Rolling Updates, Readiness- und Liveness-Probes, Autoscaling-Berechnungen, Requests und Limits, das Modell der geteilten Verantwortung, Verfügbarkeitszonen, Serverless Computing, Speicherarten, der Break-even zwischen nutzungsbasierter Abrechnung und Reservierung, Kosten der Datenübertragung, IaC, Immutable Infrastructure, Blue-Green- und Canary-Releases sowie Observability, erarbeitet mit Multiple-Choice-Fragen.
Grundlagen von Cloud und Containern: Kernpunkte
Viele Webdienste und unternehmensinterne Systeme laufen heute in der Cloud als Anwendungen, die in Container verpackt sind. Ein Container isoliert Prozesse und teilt sich dabei den Kernel des Host-Betriebssystems; Images werden mit Docker gebaut, und Plattformen wie Kubernetes verteilen die Container auf viele Maschinen, halten ihre Anzahl und aktualisieren sie.
Das Thema beginnt mit Namespaces und cgroups, Image-Schichten und Copy-on-Write, Dockerfile-Anweisungen und dem Build-Cache, dem Veröffentlichen von Ports, Volumes und Bind-Mounts, Tags und Digests sowie Multi-Stage-Builds und behandelt dann Pods, Deployments, Services, Ingress und Secrets in Kubernetes, die Deklaration eines Soll-Zustands und den Abgleich (Reconciliation), Berechnungen zu Rolling Updates, Readiness- und Liveness-Probes, Berechnungen zum HorizontalPodAutoscaler sowie Requests, Limits und die Platzierung von Pods. Anschließend geht es um das Modell der geteilten Verantwortung in der Cloud, Regionen und Verfügbarkeitszonen, Serverless Computing und Kaltstarts, Block-, Datei- und Objektspeicher, nutzungsbasierte Kosten und den Break-even von Reservierungen, Kosten der Datenübertragung, IaC und Immutable Infrastructure, Blue-Green-Deployment und Canary-Release, das nur einmalige Bauen von Artefakten, die Konfiguration über Umgebungsvariablen sowie Observability. Die Werte der Rechenaufgaben, auch die der falschen Antwortmöglichkeiten, wurden mit Python nachgerechnet. Alle Preise sind erfundene Werte. Die Unterschiede zwischen Hypervisoren, Containern und virtuellen Maschinen werden in „Betriebssystem und Hardware“ behandelt; IaaS, PaaS und SaaS, Scale-out, Redundanz, Live-Migration und CDNs in „Systemarchitektur und Zuverlässigkeit“; Load Balancer und Sitzungen in „Grundlagen der Webtechnologien“; CI/CD in „Softwareentwicklung und Projektmanagement“; SLAs in „IT-Service-Management und IT-Audit“; Shell und Umgebungsvariablen in „Grundlagen von Linux und der Kommandozeile“.
Alle Fragen zu Grundlagen von Cloud und Containern (40)
- Welche Kombination ordnet den Linux-Kernelfunktionen, auf denen Container beruhen, nämlich den Namespaces und den cgroups (Control Groups), ihre Aufgaben richtig zu?
- Auf einem Linux-Host wird mit Docker ein Container aus einem Image gestartet, das auf einer anderen Distribution als der des Hosts beruht, und darin werden uname -r (zeigt das Release des Kernels) und cat /etc/os-release (zeigt Angaben zur Distribution) ausgeführt. Welche Beschreibung der Ergebnisse ist richtig?
- Welche Beschreibung des Verhältnisses zwischen einem Container-Image und einem Container ist richtig?
- In einem Container, der aus einem Image gestartet wurde, wird die im Image enthaltene Konfigurationsdatei /etc/app.conf geändert. Was geschieht beim üblichen Speichermechanismus von Docker (etwa overlay2)?
- Um das 500 MB große Archiv data.tar.gz zu entpacken, wurde mit dem obigen Dockerfile ein Image gebaut. Obwohl das Archiv nach dem Entpacken im selben RUN gelöscht wurde, blieb das Image um die Größe des Archivs größer. Welche Kombination aus Ursache und Abhilfe ist am besten geeignet?
- Fünf Images legen jeweils eine eigene Schicht von 30 MB über dasselbe Basis-Image (120 MB). Komprimierung der Schichten und Platzbedarf der Metadaten werden vernachlässigt. Wie viel Festplattenplatz belegen die Images, wenn alle fünf auf einen Server geholt werden (pull)?
- Welche Kombination gibt für das obige Dockerfile richtig an, welcher Befehl beim Bauen des Images mit docker build und welcher beim Starten eines Containers mit docker run ausgeführt wird?
- Das aus dem obigen Dockerfile gebaute Image pinger wird mit docker run pinger example.com gestartet. Welcher Befehl wird im Container ausgeführt?
- Aus dem Image nginx, einem Webserver, der auf Port 80 lauscht, wird mit dem obigen Befehl ein Container gestartet. Die IP-Adresse des Hosts sei 192.0.2.10, und es gebe keine Einschränkungen etwa durch eine Firewall. Mit welcher URL erreicht man diesen Webserver vom Browser eines anderen PCs im selben Netzwerk?
- Das obige Dockerfile (B) ist aus Dockerfile (A) entstanden, in dem RUN npm ci nach COPY . . stand, indem die Reihenfolge so geändert wurde, dass zuerst nur die Abhängigkeitsdateien kopiert werden. npm ci dauert 120 Sekunden, npm run build 30 Sekunden und COPY . . 2 Sekunden; die Zeit der übrigen Anweisungen ist vernachlässigbar. Das Image wird 20-mal am Tag neu gebaut, wobei sich jeweils nur der Quellcode unter src ändert (package.json und package-lock.json bleiben unverändert). Um wie viel ist die gesamte Build-Zeit pro Tag bei B kürzer als bei A, wenn der Cache des vorherigen Builds genutzt werden kann?
- Welche Beschreibung von benannten Volumes und Bind-Mounts, mit denen in Docker die von einem Container geschriebenen Daten erhalten bleiben, ist richtig?
- Ein Image wird mit der Angabe registry.example.com/team/web:1.4 geholt (pull). Welche Kombination gibt die Bedeutung der einzelnen Teile dieser Angabe richtig an?
- scratch ist ein leeres Image, das keinerlei Dateien enthält. Was enthält das endgültige Image, das mit dem obigen Dockerfile mit Multi-Stage-Build gebaut wird?
- Wie heißt in Kubernetes die kleinste Einheit, die bereitgestellt und verwaltet wird und einen oder mehrere Container zusammenfasst, die sich dieselbe IP-Adresse und dieselben Volumes teilen?
- In Kubernetes betreibt ein Deployment mit replicas: 3 drei Pods. Was geschieht, wenn einer dieser Pods mit kubectl delete pod gelöscht wird?
- In einem Kubernetes-Deployment wird das Container-Image in der Pod-Vorlage auf eine neue Version geändert. Was geschieht mit der Standard-Update-Strategie (RollingUpdate)?
- Ein Deployment mit replicas: 10 hat die Rolling-Update-Einstellungen maxSurge: 25% und maxUnavailable: 25%. Welche Kombination gibt die Obergrenze der Gesamtzahl der Pods und die Untergrenze der Zahl verfügbarer Pods während eines Updates richtig an?
- In Kubernetes erhält ein Pod bei jedem Neuerzeugen eine andere IP-Adresse. Welche Ressource ermöglicht es anderen Anwendungen, sich über einen gleichbleibenden Namen und eine gleichbleibende Adresse mit mehreren per Label ausgewählten Pods zu verbinden, wobei die Last auf diese verteilt wird?
- In einem Kubernetes-Cluster sollen HTTPS-Anfragen, die für einen Hostnamen eintreffen, an den Service api gehen, wenn der Pfad mit /api beginnt, und sonst an den Service web. Welche Ressource eignet sich, um diese Verteilungsregel festzulegen?
- Das Passwort einer Datenbank wird in einem Kubernetes-Secret gespeichert. Welche Beschreibung eines Secrets ist richtig?
- Eine Webanwendung kann nach dem Start etwa 60 Sekunden lang, während sie ihren Cache lädt, keine Anfragen bearbeiten und liefert in dieser Zeit für /ready den Status 503. Welche Wirkung hat es, die obigen Einstellungen zum Container des Pods hinzuzufügen?
- In einer Webanwendung unter Kubernetes wurde die Prüfung der Liveness-Probe so erweitert, dass sie auch prüft, ob sich die Anwendung mit der Datenbank verbinden kann, von der sie abhängt. Welches Problem kann diese Einstellung am ehesten verursachen?
- Ein HorizontalPodAutoscaler in Kubernetes hat als Ziel eine CPU-Auslastung der Pods von 70 % und einen Bereich von 1 bis 10 Pods. Derzeit beträgt die mittlere CPU-Auslastung von 5 Pods 30 %. Wie viele Pods werden benötigt, wenn die benötigte Zahl als ⌈aktuelle Zahl × aktuelle Auslastung ÷ Zielauslastung⌉ berechnet wird (⌈ ⌉ bedeutet Aufrunden)?
- In einem Deployment, dessen Pod-Container die obigen Einstellungen haben, laufen vier Pods, von denen jeder 400m (0,4 Kerne) CPU nutzt. Die Ziel-CPU-Auslastung des HorizontalPodAutoscalers ist 60 %, und die benötigte Zahl der Pods wird als ⌈aktuelle Zahl × aktuelle Auslastung ÷ Zielauslastung⌉ berechnet. Wie viele Pods werden benötigt?
- Welche Beschreibung der für einen Container gesetzten Ressourcen-Requests und -Limits in Kubernetes ist richtig?
- Ein Node hat zuteilbare Ressourcen von 4 CPU-Kernen und 8 GiB Arbeitsspeicher. Der Container jedes Pods hat als Requests 500m CPU und 1,5 GiB Arbeitsspeicher und als Limits 1 CPU-Kern und 2 GiB Arbeitsspeicher. Es gibt keine anderen Pods und keine Systemreservierungen. Wie viele Pods können höchstens auf diesem Node platziert werden?
- Es wird ein verwalteter Datenbankdienst in der Cloud genutzt (ein Dienst, bei dem der Anbieter die Datenbanksoftware betreibt). Was bleibt nach dem Modell der geteilten Verantwortung im Allgemeinen in der Verantwortung des Nutzers?
- Was ist in der Cloud der Hauptzweck, Webserver und Datenbankreplikate auf mehrere Verfügbarkeitszonen innerhalb derselben Region zu verteilen?
- Bei serverlosen Funktionen (FaaS) antwortet manchmal nur der erste Aufruf einer Funktion, die eine Weile nicht aufgerufen wurde, um einige hundert Millisekunden bis einige Sekunden langsamer. Welche Erklärung dieses Phänomens ist richtig?
- Cloud-Speicher wird für drei Zwecke eingesetzt: (1) als Festplatte an eine virtuelle Maschine angebunden, mit einem Dateisystem versehen und für die Datendateien einer Datenbank genutzt; (2) von mehreren Servern gleichzeitig eingebunden und als gemeinsames Verzeichnis genutzt; (3) zum Lesen und Schreiben einer großen Zahl von Bildern per Schlüssel (Name) über eine API per HTTP, wobei die Kapazität wächst, ohne vorab festgelegt zu werden. Welche Kombination von Speicherarten ist für (1) bis (3) geeignet?
- Es werden virtuelle Maschinen genutzt, die nur nach genutzter Zeit abgerechnet werden, zu 40 Yen pro Stunde (ein erfundener Preis). Normalerweise laufen 2 Maschinen den ganzen Monat (30 Tage) durch, und an 20 Werktagen kommen je 6 Stunden am Tag 4 weitere hinzu, um die Last abzufangen. Wie hoch sind die Kosten für den Monat?
- Eine virtuelle Maschine kostet On-Demand, also mit Bezahlung nur der genutzten Stunden, 50 Yen pro Stunde, mit einer Reservierung, die ein Jahr Nutzung im Voraus zusagt, unabhängig von den genutzten Stunden 262.800 Yen pro Jahr (beides erfundene Preise). Ein Jahr wird mit 8760 Stunden angesetzt; ab einer bestimmten Zahl genutzter Stunden pro Jahr wird die Reservierung günstiger. Welche Stundenzahl ist das?
- Was gilt im Allgemeinen für die Art, wie viele Public Clouds die Datenübertragung abrechnen?
- Mit einem deklarativen IaC-Werkzeug (Infrastructure as Code) wurde eine Umgebung erstellt, indem eine Datei angewendet wurde, die ein Netzwerk und zwei virtuelle Maschinen definiert. Unmittelbar danach wird dieselbe Datei ohne jede Änderung noch einmal angewendet. Was geschieht?
- Welcher Weg, die Software auf Produktionsservern zu aktualisieren, entspricht dem Gedanken der Immutable Infrastructure?
- Es werden zwei Umgebungen mit derselben Konfiguration wie die Produktion bereitgestellt; in der einen läuft weiter die aktuelle Version, in der anderen wird die neue Version installiert und geprüft, und dann wird der Load Balancer auf einen Schlag auf sie umgeschaltet. Bei Problemen führt das Zurückschalten sofort zur alten Version zurück. Wie heißt dieses Release-Verfahren?
- Ein Dienst, der 12.000 Anfragen pro Stunde erhält, führt ein Canary-Release einer neuen Version durch und leitet nur 5 % der Anfragen an sie. Die neue Version hat einen Fehler, durch den 3 % der erhaltenen Anfragen fehlschlagen; er wird nach einer Stunde bemerkt, und alle Anfragen werden auf die alte Version zurückgeleitet. Wie viele Anfragen sind in dieser Stunde wegen des Fehlers fehlgeschlagen?
- Ein Container-Image, das eine CI/CD-Pipeline gebaut hat, wurde in der Staging-Umgebung getestet und hat die Tests bestanden. Wie wird dieses Image am besten in die Produktion ausgeliefert?
- Wie oben gezeigt, wird das Verbindungsziel der Datenbank nicht in das Image geschrieben, sondern beim Start des Containers als Umgebungsvariable übergeben. Was ist der wichtigste Vorteil dieses Entwurfs?
- In einem System, in dem mehrere Dienste zusammenarbeiten, soll ermittelt werden, welche Dienste eine einzelne Nutzeranfrage in welcher Reihenfolge durchlaufen hat und wie viel Zeit sie jeweils darin verbracht hat. Welche der für Observability genutzten Daten eignen sich dafür am besten?
Weitere Themen in Computersysteme
- Computerarithmetik IEEE 754, Festkomma, Rundungsfehler
- Wahrscheinlichkeitsrechnung, Statistik und Warteschlangen Abzählen, Verteilungen, Schätzen und Testen, M/M/1
- Befehlssatz und Assembler RISC-V, Adressierungsarten, Aufrufkonvention
- Compiler Parsing, SSA, Optimierung, Registerzuteilung
- Linker, Loader und ausführbare Formate ELF, Symbole, Relokation, dynamisches Linken
- Betriebssystem und Hardware Interrupts, Systemaufrufe, Page Faults
- Grundlagen von Linux und der Kommandozeile Shell, Zugriffsrechte, Pipes, Skripte
- Speicherhierarchie und Leistung Cache, Ersetzungsstrategie, drei Miss-Arten
- Multicore und Synchronisation MESI, atomare Befehle, Memory Barriers
- GPU-Programmierung Warps, Shared Memory, Coalescing, Occupancy
- KI-Hardware und Software-Stack Inferenz vs. Training, Quantisierung, Roofline
- Grundlagen des maschinellen Lernens Lernverfahren, Bewertungskennzahlen, neuronale Netze
- Embedded Systems und Firmware GPIO, UART/SPI/I2C, RTOS
- Hardwarebeschreibungssprachen und Verifikation Verilog, Latches, Zustandsautomaten, Testbench
- Schnittstellen und Busstandards PCIe, USB, SerDes, CXL
- Grundlagen der Computernetzwerke TCP/IP, Subnetzberechnung, DNS, TLS
- Grundlagen der Webtechnologien HTTP, Cookies, REST, CORS, Caching
- Grundlagen der Funkkommunikation Modulation, OFDM, MIMO, HF-Schaltungen
- Grundlagen der Informationssicherheit Kryptografie, Authentifizierung, Webangriffe
- Grundlagen der Datenbanken SQL, Normalisierung, Transaktionen
- Datenstrukturen und Algorithmen Komplexität, Suche, Sortieren, Graphen
- Grundlagen der Programmierung (Pseudocode nachverfolgen) Pseudocode, Tracing, Arrays, Rekursion
- Grundlagen der Programmiersprache C Zeiger, Speicher, undefiniertes Verhalten
- Softwareentwicklung und Projektmanagement Prozesse, Tests, Termin- und Kostensteuerung
- Grundlagen von Unternehmensstrategie und Rechnungswesen Rechnungswesen, Break-even, Strategie, Marketing
- IT-Service-Management und IT-Audit SLAs, Incidents und Probleme, Audit und interne Kontrolle
- Systemarchitektur und Zuverlässigkeit Redundanz, RAID, Backups, Cloud
- Leistungsbewertung und Profiling Amdahlsches Gesetz, CPI, Engpässe
- Hardwaresicherheit Seitenkanäle, Secure Boot, TEE, PUF
- Energieverwaltung (softwaregesteuert) DVFS, Power Gating, Schlafzustände