Allgemeines

Was ist Bottlerocket?

Bottlerocket ist ein neues Linux-basiertes Open-Source-Betriebssystem, das speziell für die Ausführung von Containern entwickelt wurde. Mit Bottlerocket können Sie die Verfügbarkeit Ihrer containerisierten Bereitstellungen verbessern und die Betriebskosten senken, indem Sie Aktualisierungen Ihrer Containerinfrastruktur automatisieren. Bottlerocket enthält nur die notwendige Software zum Ausführen von Containern, was die Ressourcennutzung verbessert, die Angriffsfläche für Sicherheitsangriffe reduziert und den Verwaltungsaufwand verringert. Es lässt sich auch in Container-Orchestratoren (wie Amazon EKS und Amazon ECS) integrieren, um den Verwaltungs- und Betriebsaufwand beim Aktualisieren von Container-Hosts in einem Cluster weiter zu reduzieren. 

Welche Vorteile bietet die Nutzung von Bottlerocket?

a) Höhere Betriebszeit bei geringeren Betriebskosten und geringerer Verwaltungskomplexität: Da nur die für den Betrieb von Containern erforderlichen Komponenten enthalten sind, hat Bottlerocket im Vergleich zu allgemeinen Betriebssystemen einen geringeren Ressourcenbedarf, Startzeiten und eine geringere Angriffsfläche für Sicherheitsangriffe. Ein geringerer Platzbedarf hilft, die Kosten zu senken, da weniger Speicher-, Rechen- und Netzwerkressourcen genutzt werden. Die Verwendung von Container-Primitiven (anstelle von Paketmanagern) zum Ausführen von Software verringert den Verwaltungsaufwand.

b) Verbesserte Sicherheit durch automatische Betriebssystem-Aktualisierungen: Aktualisierungen für Bottlerocket werden als eine einzelne Einheit angewendet, die bei Bedarf zurückgesetzt werden kann, wodurch das Risiko von „verpfuschten“ Aktualisierungen beseitigt wird, die das System unbrauchbar machen können. Aktualisierungsfehler treten bei Universalbetriebssystemen aufgrund von nicht behebbaren Fehlern bei paketweisen Aktualisierungen häufig auf. In Bottlerocket können Sicherheitsaktualiseirungen automatisch eingespielt werden, sobald sie minimal störend verfügbar sind und sie können bei Ausfällen rückgängig gemacht werden.

c) Open Source und universelle Verfügbarkeit: Ein offenes Entwicklungsmodell ermöglicht es Kunden, Partnern und allen interessierten Parteien, Code- und Designänderungen an Bottlerocket vorzunehmen.

d) Premium-Support: Die Nutzung der von AWS bereitgestellten Builds von Bottlerocket auf Amazon EC2 wird von denselben AWS-Supportplänen abgedeckt, die auch AWS-Services wie Amazon EC2, Amazon EKS, Amazon ECR usw. abdecken.

Wie unterscheidet sich Bottlerocket von Amazon Linux?

Amazon Linux ist ein universelles Betriebssystem zum Ausführen einer breiten Palette von Anwendungen, die mit dem RPM Package Manager oder Containern gepackt sind. Amazon Linux ist so optimiert, dass jede Instance mit herkömmlichen Tools wie yum, ssh, tcpdump, netconf usw. nach Bedarf für ihre Workload konfiguriert werden kann. Bottlerocket hingegen wurde speziell für den Betrieb von Containern entwickelt und ermöglicht es Ihnen, eine große Anzahl von Container-Hosts identisch mit Automatisierung zu verwalten. Insbesondere unterscheidet sich Bottlerocket in folgenden Punkten von Amazon Linux:

  • Bottlerocket hat keinen Paketmanager und Software kann nur als Container ausgeführt werden. Aktualisierungen von Bottlerocket werden angewendet und können in einem einzigen atomaren Schritt zurückgesetzt werden, wodurch Aktualisierungsfehler reduziert werden.
  • Der primäre Mechanismus zum Verwalten von Bottlerocket-Hosts ist ein Container-Orchestrator wie Amazon EKS. Im Gegensatz zu Amazon Linux soll die Anmeldung bei einzelnen Bottlerocket-Instances ein seltener Vorgang für erweitertes Debugging und Fehlerbehebung sein.

Werden die EKS- und ECS-optimierten AMIs basierend auf Amazon Linux 2 weiterhin unterstützt?

Die aktuellen EKS-optimierten AMIs, die auf Amazon Linux basieren, werden unterstützt und erhalten weiterhin Sicherheitsaktualisierungen. Weitere Informationen zur Support-Lebensdauer finden Sie unter EKS-optimiertes Amazon-Linux-2-AMI und ECS-optimiertes AMI.  

Was sind die Kernkomponenten von Bottlerocket?

Die Hauptkomponenten von Bottlerocket umfassen:

  • Minimales Betriebssystem, das den Linux-Kern (5.4), die Systemsoftware und containerd als Container-Laufzeit umfasst.
  • Atomarer Aktualisierungs-Mechanismus zum Anwenden und Zurücksetzen von Betriebssystem-Aktualisierungen in einem einzigen Schritt. 
  • Integrationen mit Container-Orchestratoren wie Amazon EKS zum Verwalten und Orchestrieren von Aktualisierungen.
  • „Administrator-Container“, der optional für erweiterte Fehlerbehebung und Debugging ausgeführt werden kann.

Wie kann ich Aktualisierungen für Bottlerocket anwenden?

Bottlerocket-Aktualisierungen werden automatisch von vorkonfigurierten AWS-Repositorys heruntergeladen, wenn sie verfügbar sind. Ein Neustart von Bottlerocket ist zum Anwenden von Aktualisierungen erforderlich und kann entweder manuell initiiert oder vom Orchestrator wie Amazon EKS verwaltet werden. Sie müssen den geeigneten Mechanismus auswählen, um Neustarts basierend auf der Toleranz Ihrer Anwendungen gegenüber Neustarts und Ihren Betriebsanforderungen zu handhaben. Wenn Ihre Anwendung zustandslos und widerstandsfähig gegen Neustarts ist, können Neustarts sofort nach dem Herunterladen von Aktualisierungen durchgeführt werden. Wenn Sie zustandsbehaftete traditionelle Workloads (z. B. Datenbanken, Branchenanwendungen mit langer Laufzeit usw.) in Containern ausführen, die nicht gegen Neustarts widerstandsfähig sind, müssen Sie sicherstellen, dass dieser Zustand vor Neustarts beibehalten wird.

Bottlerocket-Neustarts können von Orchestratoren wie Amazon EKS verwaltet werden, indem Container auf allen Hosts geleert und neu gestartet werden, um fortlaufende Aktualisierungen in einem Cluster zu ermöglichen und Unterbrechungen zu reduzieren. Aktualisierungen für Bottlerocket können auch im Fehlerfall über unterstützte Orchestratoren oder mit manuellen Maßnahmen sicher zurückgesetzt werden.

Was sind die Schritte, um Bottlerocket mit Kubernetes bereitzustellen und zu betreiben?

Sie können Bottlerocket mithilfe der folgenden Schritte bereitstellen und warten:

Schritt 1: Sie können Bottlerocket wie jedes andere Betriebssystem in einer virtuellen Maschine bereitstellen. Auf AWS können Sie Bottlerocket über die Konsole, API oder CLI auf EC2-Instances bereitstellen. Sie müssen Konfigurationsdetails über Benutzerdaten für jede Bottlerocket-Instance bereitstellen, um sich bei einem Amazon-EKS-Cluster anzumelden.

Schritt 2: Um Bottlerocket mit Ihrem Orchestrator zu betreiben, müssen Sie eine Integrationskomponente in Ihrem Cluster bereitstellen. Die Integrationskomponente ermöglicht es dem Orchestrator, Neustarts, Rollback-Aktualisierungen und das Ersetzen von Containern für Rolling-Aktualisierungen minimal zu initiieren.

In der Bottlerocket-Dokumentation finden Sie Schritte zum Bereitstellen und Verwenden des „Bottlerocket-Aktualisierungs-Operators“ auf Amazon-EKS-Clustern.

Kann ich Bottlerocket verwenden, ohne einen Container-Orchestrator zu verwenden?

Ja, Sie können Bottlerocket als eigenständiges Betriebssystem ohne Orchestrator auf Ihrem Laptop oder Server für Entwicklungs- und Testanwendungsfälle ausführen. Sie können die Dienstprogramme im „Administrator-Container“ verwenden, um Bottlerocket zu verwalten und zu aktualisieren.  

Welche Computing-Plattformen und EC2-Instance-Typen unterstützt Bottlerocket?

Bottlerocket-Builds von AWS werden auf einer HVM- und EC2-Bare-Metal-Instance-Familie unterstützt, mit Ausnahme der P-, G-, F- und INF-Instance-Typen. Bottlerocket benötigt mindestens 1vCPU und 512 MB RAM. Bottlerocket unterstützt keine PV-Instance-Typen.

Wie kann ich mit der Verwendung von Bottlerocket auf AWS beginnen?

AWS stellt ein Amazon Machine Image (AMI) für Bottlerocket bereit, das Sie zur Ausführung auf unterstützten EC2-Instance-Typen über die AWS-Konsole, CLI und das SDK verwenden können. AWS stellt Bottlerocket-Builds bereit, die für die Verwendung mit EKS und ECS vorkonfiguriert sind. Sie können EKS verwenden, um das Betriebssystem mit minimalen Unterbrechungen zu aktualisieren und zu verwalten, ohne sich bei jeder Betriebssystem-Instance anmelden zu müssen. Mit dem Bottlerocket-Operator für Kubernetes können Sie Betriebssystemverwaltungsvorgänge wie Aktivitäten wie das Initiieren von Neustarts und Rollbacks von Aktualisierungen mit minimalen Unterbrechungen durchführen.

Wie führe ich Software auf Bottlerocket aus?

Sie können Ihre containerisierten Anwendungen, einschließlich ISV-Software von Drittanbietern, auf einer laufenden Bottlerocket-Instance mit Ihrem Container-Orchestrator ausführen. Sie können auch während der Bildanpassung Ihre Software und Startup-Skripte in Bottlerocket einschließen. Weitere Informationen finden Sie in der Bottlerocket-Dokumentation.

Wie sieht das Preisangebot für Bottlerocket aus?

Von AWS bereitgestellte Builds von Bottlerocket sind auf allen unterstützten Plattformen kostenlos verfügbar. Für die Ausführung von Amazon-EC2-Instances gilt Standard-Amazon-EC2.

Haben Sie eine öffentliche Roadmap?

Ja!

Versioning

Wie werden Bottlerocket-Versionen versioniert?

Von AWS bereitgestellte Builds von Bottlerocket-Builds folgen einem semantischen Versioningschema „major.minor.patch“. Nebenversionen von Bottlerocket werden mehrmals im Jahr mit Änderungen wie der Unterstützung für neue EC2-Plattformen, Unterstützung für neue Orchestrator-Agenten und Aktualisierungen von Open-Source-Komponenten veröffentlicht. Das Versionsschema zeigt an, ob die Aktualisierungen grundlegende Änderungen enthalten.

Support

Welche Art von Support bietet AWS für Bottlerocket?

Von AWS bereitgestellte Builds von Bottlerocket erhalten Sicherheitsaktualisierungen, Fehlerbehebungen und sind durch AWS-Supportpläne abgedeckt. Der Supportzeitraum für einen bestimmten Build hängt von der Version des verwendeten Container-Orchestrators ab. Bottlerocket-Builds werden verworfen, wenn die entsprechende Orchestrator-Version veraltet ist. Beispielsweise unterstützen wir aws-k8s-1.15 nicht mehr, das ist der Bottlerocket-Build für Kubernetes 1.15. Dies steht im Einklang mit Kubernetes 1.15, das keinen Support mehr im Upstream erhält. Wir empfehlen Kunden, aws-k8s-1.15-Knoten durch einen neueren Build zu ersetzen, der von Ihrem Cluster unterstützt wird.

Darüber hinaus ist der Community-Support für Bottlerocket auf GitHub verfügbar, wo Sie Fragen stellen, Funktionsanfragen stellen und Fehler melden können. Details zu Versionen und Fehlerbehebungen für CVEs werden im Bottlerocket-Änderungsprotokoll veröffentlicht.

Aktualisierungen

Welche Arten von Aktualisierungen sind für Bottlerocket verfügbar?

AWS bietet vorab getestete Aktualisierungen für Bottlerocket, die in einem einzigen Schritt angewendet werden. Diese Aktualisierungen können auch in einem einzigen Schritt auf einen bekannten guten Zustand zurückgesetzt werden. Infolgedessen treten bei Bottlerocket keine „verpfuschten“ Aktualisierungen auf, die das System aufgrund inkonsistenter Zustände, die eine manuelle Reparatur erfordern, unbrauchbar machen können. Bei atomaren Aktualisierungen in einem Schritt ist die Komplexität geringer, wodurch Aktualisierungsfehler reduziert werden.

Wie kann ich Aktualisierungen für Bottlerocket anwenden?

Aktualisierungen für von AWS bereitgestellte Builds von Bottlerocket werden automatisch aus vorkonfigurierten AWS-Repositorys heruntergeladen, wenn sie verfügbar sind. Ein Neustart von Bottlerocket ist zum Anwenden von Aktualisierungen erforderlich und kann entweder manuell initiiert oder vom Orchestrator wie Amazon EKS verwaltet werden. Sie müssen den geeigneten Mechanismus auswählen, um Neustarts basierend auf der Toleranz Ihrer Anwendungen gegenüber Neustarts und Ihren Betriebsanforderungen zu handhaben. Wenn Ihre Anwendung zustandslos und widerstandsfähig gegen Neustarts ist, können Neustarts sofort nach dem Herunterladen von Aktualisierungen durchgeführt werden. Wenn Sie zustandsbehaftete traditionelle Workloads (z. B. Datenbanken, Branchenanwendungen mit langer Laufzeit usw.) in Containern ausführen, die nicht gegen Neustarts widerstandsfähig sind, müssen Sie sicherstellen, dass dieser Zustand vor Neustarts beibehalten wird.

Bottlerocket-Neustarts können von Orchestratoren wie Amazon EKS verwaltet werden, indem Container auf allen Hosts geleert und neu gestartet werden, um fortlaufende Aktualiseirungen in einem Cluster zu ermöglichen und Unterbrechungen zu reduzieren. Standardmäßig aktualisiert Bottlerocket beim Booten automatisch auf die neueste sichere Version. Aktualisierungen für Bottlerocket können auch im Fehlerfall über unterstützte Orchestratoren oder mit manuellen Maßnahmen sicher zurückgesetzt werden.

Wie trägt Bottlerocket dazu bei, dass Aktualisierungen minimal störend sind?

Die Integration mit Orchestratoren wie Amazon EKS trägt dazu bei, dass Aktualisierungen für Bottlerocket minimal störend sind. Während des Aktualisierungsprozesses leert der Orchestrator Container auf den zu aktualisierenden Hosts und platziert sie auf anderen freien Hosts im Cluster. Der Orchestrator führt auch ein Rollback zu Hosts auf die vorherige Version von Bottlerocket durch, wenn Aktualisierungen fehlschlagen.

Kompatibilität und Migration

Welche Container-Images kann ich in Containern auf Bottlerocket ausführen?

Bottlerocket kann alle Container-Images ausführen, die die OCI-Image-Format-Spezifikation erfüllen und auch Docker-Images.

Kann ich meine Container, die unter Amazon Linux 2 ausgeführt werden, zu Bottlerocket verschieben?

Ja, Sie können Ihre Container ohne Änderungen zwischen Amazon Linux 2 und Bottlerocket verschieben.

Wann sollte ich Bottlerocket nicht verwenden?

Wenn Ihre betrieblichen Workflows zum Ausführen von Containern die Installation von Software auf dem Host-Betriebssystem mit yum, das direkte Ssh-ieren in Instances, die individuelle Anpassung jeder Instance oder die Ausführung von nicht containerisierter ISV-Software von Drittanbietern (z. B. Agenten für Protokollierung und Überwachung) umfassen, könnte Amazon Linux 2 die besser passende Option sein. Bottlerocket ist für die Ausführung und Verwaltung großer containerisierter Bereitstellungen optimiert und lässt viele dieser Aktivitäten nicht ohne weiteres zu.

Fehlerbehebung und Sicherheit

Wie debugge ich Probleme mit Bottlerocket?

Sie können einen „Administrator-Container“ mit der API von Bottlerocket ausführen (aufgerufen über Benutzerdaten oder AWS Systems Manager) und sich dann mit SSH für erweitertes Debugging und Fehlerbehebung mit erhöhten Rechten anmelden. AWS bietet den Administrator-Container, mit dem Sie Debugging-Tools wie sosreport, traceroute, strace, tcpdump installieren und verwenden können. Die Anmeldung bei einer einzelnen Bottlerocket-Instance soll ein seltener Vorgang für erweitertes Debugging und Fehlerbehebung sein.

Was ist der Administrator-Container?

Ein Administrator-Container ist ein Amazon-Linux-Container-Image, das Dienstprogramme für die Fehlerbehebung und das Debugging von Bottlerocket enthält und mit erhöhten Rechten ausgeführt wird. Die Ausführung des Tools-Containers kann über Benutzerdaten oder Bottlerocket-APIs initiiert werden.

Welche Containerisolations- und Sicherheitsfunktionen bietet Bottlerocket?

Bottlerocket ermöglicht automatische Sicherheitsaktualisierungen und reduziert das Risiko von Sicherheitsangriffen, indem nur die erforderliche Software zum Hosten von Containern verwendet wird. Bottlerocket verwendet Container-Kontrollgruppen (cgroups) und Kern-Namespaces zur Isolierung zwischen Containern. Es kommt auch mit Security-Enhanced Linux (SELinux) im Durchführungsmodus und seccomp. eBPF im Kern reduziert den Bedarf an Kern-Modulen für viele Systemoperationen auf niedriger Ebene, indem es ein Nachverfolgungs-Framework mit geringem Overhead für die Nachverfolgung von I/O, Dateisystem-Operationen, CPU-Auslastung, Eindringungserkennung und Fehlerbehebung bereitstellt. Bottlerocket verwendet mit device-mapper-verity (dm-verity) eine Linux-Kern-Funktion, die eine Integritätsprüfung bietet, um Stammkits zu verhindern, die Stamm-Rechte behalten können.

Open Source und Warenzeichen

Was ist die Open-Source-Lizenz für Bottlerocket?

Bottlerocket-Code ist unter Apache 2.0 ODER MIT lizenziert. Amazon hat Bottlerocket in Rust geschrieben, daher haben wir eine Lizenz ausgewählt, die sich leicht in diese Community einfügt. Der zugrunde liegende Code von Drittanbietern, wie der Linux-Kern, unterliegt weiterhin seiner ursprünglichen Lizenz.

Wie kann ich Quellcodeänderungen anzeigen und zu Bottlerocket beitragen?

Bottlerocket wurde als Open-Source-Projekt veröffentlicht, das auf GitHub gehostet wird. Designdokumente, Code, Build-Tools, Tests und Dokumentation werden auf GitHub gehostet. Wir werden die Fehler- und Funktions-Verfolgungs-Systeme von GitHub für die Projektverwaltung verwenden. Sie können den Quellcode von Bottlerocket mithilfe von Standard-GitHub-Workflows anzeigen und dazu beitragen.

Wie kann ich benutzerdefinierte Builds von Bottlerocket erstellen, die meine eigenen Änderungen enthalten?

Sie können das GitHub-Repository abspalten, Ihre Änderungen vornehmen und unserem Entwicklungsleitfaden folgen.

Kann ich meine eigenen Builds von Bottlerocket erstellen und teilen?

Ja. Wenn Sie Bottlerocket aus einer unveränderten Quelle erstellen und die Ergebnisse weiterverbreiten, dürfen Sie „Bottlerocket“ nur verwenden, wenn sowohl im Namen Ihrer Verteilung als auch im damit verbundenen Inhalt klar ist, dass Ihre Verteilung Ihr Build von Amazons Bottlerocket und nicht der offizielle Build ist und Sie müssen den Commit angeben, aus dem es erstellt wurde, einschließlich des Commit-Datums.

Wie kann ich die Bottlerocket-Marken verwenden, um auf meine eigene Version von Amazons Bottlerocket zu verweisen, die ich für einen anderen Container-Orchestrator angepasst habe?

Wenn Sie Bottlerocket von Amazon so ändern, dass es mit einem anderen Container-Orchestrator funktioniert, können Sie „Bottlerocket Remix“ verwenden, um gemäß dem Richtlinienleitfaden auf Ihre Version zu verweisen. Wenn Sie die Rechte haben, die Marken dieses Container-Orchestrators auf diese Weise zu verwenden, können Sie den Namen dieses Container-Orchestrators an „Bottlerocket Remix“ anhängen.

Welche Änderungen am Betriebssystem muss ich an einer modifizierten Version von Bottlerocket vornehmen, um diese Richtlinie einzuhalten?

Sie müssen die Betriebssystem-Release-Datei ändern, um entweder Ihren „Bottlerocket Remix“-Namen zu verwenden oder die Bottlerocket-Marken zu entfernen. Dies kann durch Ändern der packages/release/release.spec und tools/rpm2img erfolgen. Namen des System-Roots ( /x86_64-bottlerocket-linux-gnu/sys-root), Partitionsbezeichnungen, Verzeichnispfade und Servicedateibeschreibungen müssen nicht geändert werden, um dieser Richtlinie zu entsprechen.