Fortgeschrittene Kubernetes-Themen und Architektur
Erklären Sie das Konzept eines Kubernetes Operators und geben Sie ein Beispiel, wann Sie einen verwenden würden.
Antwort:
Ein Kubernetes Operator ist eine Methode zur Paketierung, Bereitstellung und Verwaltung einer Kubernetes-nativen Anwendung. Er erweitert die Kubernetes-API, um Instanzen komplexer Anwendungen zu erstellen, zu konfigurieren und zu verwalten. Sie würden einen Operator für zustandsbehaftete Anwendungen wie Datenbanken (z. B. Cassandra, MySQL) verwenden, um Aufgaben wie Backups, Upgrades und Skalierung zu automatisieren.
Beschreiben Sie den Zweck einer Custom Resource Definition (CRD) in Kubernetes.
Antwort:
Eine Custom Resource Definition (CRD) ermöglicht es Ihnen, Ihre eigenen benutzerdefinierten Ressourcen in Kubernetes zu definieren und damit die Kubernetes-API zu erweitern. Dies ermöglicht es Ihnen, strukturierte Daten zu speichern und abzurufen, die Kubernetes verwalten kann. CRDs sind grundlegend für die Erstellung von Operatoren und die Definition anwendungsspezifischer Objekte.
Wie verarbeitet der Kubernetes API Server die Authentifizierung und Autorisierung von Anfragen?
Antwort:
Der API Server verarbeitet die Authentifizierung über verschiedene Methoden wie Client-Zertifikate, Bearer-Tokens oder Service-Account-Tokens. Nach der Authentifizierung erfolgt die Autorisierung über Module wie RBAC (Role-Based Access Control), Node-Autorisierung oder ABAC (Attribute-Based Access Control). RBAC ist die gebräuchlichste Methode, die Rollen mit Berechtigungen definiert und diese an Benutzer oder Service-Accounts bindet.
Was ist der Unterschied zwischen einem DaemonSet und einem Deployment in Kubernetes?
Antwort:
Ein Deployment verwaltet eine Reihe identischer Pods und stellt sicher, dass eine gewünschte Anzahl von Replikaten im gesamten Cluster läuft, typischerweise für zustandslose Anwendungen. Ein DaemonSet stellt sicher, dass alle (oder einige) Nodes eine Kopie eines Pods ausführen, was für Cluster-weite Dienste wie Log-Kollektoren (z. B. Fluentd) oder Monitoring-Agenten (z. B. Node Exporter) nützlich ist, die auf jedem Node laufen müssen.
Erklären Sie das Konzept von Pod Security Policies (PSPs) und warum sie veraltet sind.
Antwort:
Pod Security Policies (PSPs) waren ein Admission Controller, der Sicherheitsstandards für Pods und Container durchsetzte. Sie ermöglichten Cluster-Administratoren die Kontrolle über sicherheitskritische Aspekte wie den privilegierten Modus, den Zugriff auf das Host-Netzwerk und die Volume-Typen. PSPs werden zugunsten von Pod Security Admission (PSA) und Policy-Engines wie OPA Gatekeeper veraltet, die flexiblere und granularere Kontrollen bieten.
Wie erreicht man Hochverfügbarkeit für die Kubernetes Control Plane?
Antwort:
Hochverfügbarkeit für die Control Plane wird durch den Betrieb mehrerer Instanzen des API Servers, etcd, Controller Manager und Scheduler erreicht. etcd läuft typischerweise als quorum-basierter Cluster (z. B. 3 oder 5 Nodes). Ein Load Balancer wird vor die API Server geschaltet, um den Datenverkehr zu verteilen und Failover zu ermöglichen.
Was ist ein mutating admission webhook und wie kann er verwendet werden?
Antwort:
Ein mutating admission webhook ist ein HTTP-Callback, der Anfragen an den Kubernetes API Server modifizieren kann, bevor sie gespeichert werden. Er kann Sidecar-Container injizieren, Labels/Annotationen hinzufügen oder Standardwerte für Felder festlegen. Zum Beispiel kann er automatisch einen istio-proxy Sidecar in Pods für die Service-Mesh-Integration injizieren.
Beschreiben Sie die Rolle von etcd in einem Kubernetes-Cluster.
Antwort:
etcd dient als konsistenter und hochverfügbarer Key-Value-Store von Kubernetes. Er speichert alle Clusterdaten, einschließlich Konfiguration, Zustand und Metadaten für alle Kubernetes-Objekte (Pods, Deployments, Services usw.). Er ist entscheidend für den Betrieb des Clusters, und seine Verfügbarkeit wirkt sich direkt auf die Gesundheit des Clusters aus.
Wie erzwingt Kubernetes Netzwerkrichtlinien (Network Policies)?
Antwort:
Kubernetes Network Policies sind Spezifikationen, die definieren, wie Gruppen von Pods miteinander und mit externen Endpunkten kommunizieren dürfen. Sie werden von einem Netzwerk-Plugin (CNI) implementiert, das NetworkPolicy unterstützt, wie z. B. Calico, Cilium oder Weave Net. Das CNI-Plugin übersetzt diese Richtlinien in Firewall-Regeln.
Was sind Taints und Tolerations und wie werden sie für die Pod-Planung verwendet?
Antwort:
Taints werden auf Nodes angewendet und markieren sie als "ungeeignet" für bestimmte Pods, es sei denn, diese Pods haben passende Tolerations. Tolerations werden auf Pods angewendet und erlauben es ihnen, auf getainteten Nodes geplant zu werden. Dieser Mechanismus wird verwendet, um Nodes für bestimmte Workloads zu reservieren (z. B. GPU-Nodes) oder um Pods von fehlerhaften Nodes zu verdrängen.