Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Installieren Sie SSM Agent mithilfe von Kubernetes auf EKS Amazon-Worker-Knoten DaemonSet
Erstellt von Mahendra Revanasiddappa () AWS
Umgebung: PoC oder Pilotprojekt | Technologien: Container und Mikroservices; Infrastruktur DevOps | AWSDienstleistungen: AmazonEKS; AWS Systems Manager |
Übersicht
Hinweis, September 2021: Der neueste von Amazon EKS optimierte AMIs Install SSM Agent wird automatisch installiert. Weitere Informationen finden Sie in den Versionshinweisen
In Amazon Elastic Kubernetes Service (AmazonEKS) sind Worker-Knoten aufgrund von Sicherheitsrichtlinien nicht mit Secure Shell (SSH) -Schlüsselpaaren verknüpft. Dieses Muster zeigt, wie Sie den DaemonSet Kubernetes-Ressourcentyp verwenden können, um AWS Systems Manager Agent (SSMAgent) auf allen Worker-Knoten zu installieren, anstatt ihn manuell zu installieren oder das Amazon Machine Image (AMI) für die Knoten zu ersetzen. DaemonSet verwendet einen Cron-Job auf dem Worker-Knoten, um die Installation von Agent zu planen. SSM Sie können dieses Muster auch verwenden, um andere Pakete auf Worker-Knoten zu installieren.
Wenn Sie Probleme im Cluster beheben, können Sie durch die Installation von SSM Agent on Demand eine SSH Sitzung mit dem Worker-Knoten einrichten, Protokolle sammeln oder die Instanzkonfiguration überprüfen, ohne SSH Schlüsselpaare.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein vorhandener EKS Amazon-Cluster mit Amazon Elastic Compute Cloud (AmazonEC2) -Worker-Knoten.
Container-Instances sollten über die erforderlichen Berechtigungen verfügen, um mit dem SSM Service zu kommunizieren. Die verwaltete Rolle A für AWS Identity and Access Management (IAM) mazonSSMManaged InstanceCore bietet die erforderlichen Berechtigungen, damit der SSM Agent auf EC2 Instances ausgeführt werden kann. Weitere Informationen finden Sie in der AWSSystems Manager Manager-Dokumentation.
Einschränkungen
Dieses Muster gilt nicht für AWS Fargate, da es auf der Fargate-Plattform DaemonSets nicht unterstützt wird.
Dieses Muster gilt nur für Linux-basierte Worker-Knoten.
Die DaemonSet Pods werden im privilegierten Modus ausgeführt. Wenn der EKS Amazon-Cluster über einen Webhook verfügt, der Pods im privilegierten Modus blockiert, wird der SSM Agent nicht installiert.
Architektur
Das folgende Diagramm veranschaulicht die Architektur für dieses Muster.
Tools
Tools
kubectl ist ein Befehlszeilenprogramm, das für die Interaktion mit einem Amazon-Cluster verwendet wird. EKS Dieses Muster wird verwendet
kubectl
, um einen DaemonSet auf dem EKS Amazon-Cluster bereitzustellen, der den SSM Agenten auf allen Worker-Knoten installiert.EKSMit Amazon können Sie Kubernetes ganz einfach ausführen, AWS ohne Ihre eigene Kubernetes-Steuerebene oder Knoten installieren, betreiben und warten zu müssen. Kubernetes ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Anwendungen in Containern.
AWSMit Systems Manager Session Manager können Sie Ihre EC2 Instanzen, lokalen Instanzen und virtuellen Maschinen (VMs) über eine interaktive, browserbasierte Shell mit einem Klick oder über die AWS Befehlszeilenschnittstelle () verwalten. AWS CLI
Code
Verwenden Sie den folgenden Code, um eine DaemonSet Konfigurationsdatei zu erstellen, mit der der SSM Agent auf dem EKS Amazon-Cluster installiert wird. Folgen Sie den Anweisungen im Abschnitt Epics.
cat << EOF > ssm_daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: labels: k8s-app: ssm-installer name: ssm-installer namespace: kube-system spec: selector: matchLabels: k8s-app: ssm-installer template: metadata: labels: k8s-app: ssm-installer spec: containers: - name: sleeper image: busybox command: ['sh', '-c', 'echo I keep things running! && sleep 3600'] initContainers: - image: amazonlinux imagePullPolicy: Always name: ssm command: ["/bin/bash"] args: ["-c","echo '* * * * * root yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm & rm -rf /etc/cron.d/ssmstart' > /etc/cron.d/ssmstart"] securityContext: allowPrivilegeEscalation: true volumeMounts: - mountPath: /etc/cron.d name: cronfile terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumes: - name: cronfile hostPath: path: /etc/cron.d type: Directory dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler terminationGracePeriodSeconds: 30 EOF
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren und konfigurieren Sie kubectl für den Zugriff auf den EKS Cluster. | Falls es noch | DevOps |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie die DaemonSet Konfigurationsdatei. | Verwenden Sie den Code im Abschnitt Code weiter oben in diesem Muster, um eine DaemonSet Konfigurationsdatei namens zu erstellen Der von gestartete Pod DaemonSet hat einen Hauptcontainer und einen Wenn der Init-Container fertig ist, wartet der Hauptcontainer 60 Minuten, bevor er beendet wird. Nach 60 Minuten wird ein neuer Pod gestartet. Dieser Pod installiert den SSM Agenten, falls er fehlt, oder aktualisiert den SSM Agenten auf die neueste Version. Bei Bedarf können Sie den | DevOps |
Stellen Sie den DaemonSet auf dem EKS Amazon-Cluster bereit. | Verwenden Sie den folgenden Befehl, um die DaemonSet Konfigurationsdatei, die Sie im vorherigen Schritt erstellt haben, auf dem EKS Amazon-Cluster bereitzustellen:
Dieser Befehl erstellt einen DaemonSet , um die Pods auf Worker-Knoten auszuführen, um den SSM Agenten zu installieren. | DevOps |
Zugehörige Ressourcen
Installation von kubectl (EKSAmazon-Dokumentation)
Session Manager einrichten (AWSSystems Manager Manager-Dokumentation)