Konfiguration des Proxys für Hybridknoten - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Konfiguration des Proxys für Hybridknoten

Wenn Sie in Ihrer On-Premises-Umgebung mithilfe eines Proxy-Servers den Datenverkehr steuern, der Ihr Rechenzentrum oder Ihre Edge-Umgebung verlässt, müssen Sie Ihre Knoten und Ihren Cluster separat für die Verwendung Ihres Proxy-Servers konfigurieren.

Cluster

In Ihrem Cluster müssen Sie kube-proxy so konfigurieren, dass Ihr Proxy-Server verwendet wird. Sie müssen kube-proxy nach der Erstellung Ihres Amazon-EKS-Clusters konfigurieren.

Knoten

Auf Ihren Knoten müssen Sie das Betriebssystem, containerd, kubelet und den Amazon SSM-Agenten so konfigurieren, dass sie Ihren Proxy-Server verwenden. Sie können diese Änderungen während des Entwicklungsprozesses für Ihre Betriebssystem-Images oder vor der Ausführung von nodeadm init auf jedem Hybridknoten vornehmen.

Konfiguration auf Knotenebene

Sie müssen die folgenden Konfigurationen entweder in Ihren Betriebssystem-Images oder vor der Ausführung von nodeadm init auf jedem Hybridknoten anwenden.

containerd-Proxy-Konfiguration

containerd ist die standardmäßig Container-Management-Laufzeitumgebung für Kubernetes. Wenn Sie einen Proxy für den Internetzugriff verwenden, müssen Sie containerd so konfigurieren, dass es die von Kubernetes und Amazon EKS benötigten Container-Images abrufen kann.

Erstellen Sie auf jedem Hybridknoten eine /etc/systemd/system/containerd.service.d-Datei mit dem Namen http-proxy.conf im Verzeichnis mit dem folgenden Inhalt. Ersetzen Sie proxy-domain und port durch die Werte für Ihre Umgebung.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

containerd-Konfiguration aus Benutzerdaten

Für diese Datei muss das containerd.service.d-Verzeichnis erstellt werden. Sie müssen systemd neu laden, um die Konfigurationsdatei ohne Neustart zu übernehmen. In AL2023 wird der Service wahrscheinlich bereits ausgeführt, wenn Ihr Skript ausgeführt wird, sodass Sie ihn auch neu starten müssen.

mkdir -p /etc/systemd/system/containerd.service.d echo '[Service]' > /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/containerd.service.d/http-proxy.conf systemctl daemon-reload systemctl restart containerd

kubelet-Proxy-Konfiguration

kubelet ist der Kubernetes-Knotenagent, der auf jedem Kubernetes-Knoten ausgeführt wird und für die Verwaltung des Knotens und der darauf ausgeführten Pods verantwortlich ist. Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden, müssen Sie kubelet so konfigurieren, dass es mit den öffentlichen oder privaten Endpunkten Ihres Amazon-EKS-Clusters kommunizieren kann.

Erstellen Sie auf jedem Hybridknoten eine Datei mit dem Namen http-proxy.conf im /etc/systemd/system/kubelet.service.d/-Verzeichnis mit dem folgenden Inhalt. Ersetzen Sie proxy-domain und port durch die Werte für Ihre Umgebung.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

kubelet-Konfiguration aus Benutzerdaten

Für diese Datei muss das kubelet.service.d-Verzeichnis erstellt werden. Sie müssen systemd neu laden, um die Konfigurationsdatei ohne Neustart zu übernehmen. In AL2023 wird der Service wahrscheinlich bereits ausgeführt, wenn Ihr Skript ausgeführt wird, sodass Sie ihn auch neu starten müssen.

mkdir -p /etc/systemd/system/kubelet.service.d echo '[Service]' > /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTP_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://proxy-domain:port"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> /etc/systemd/system/kubelet.service.d/http-proxy.conf systemctl daemon-reload systemctl restart kubelet

ssm-Proxy-Konfiguration

ssm ist einer der Anmeldeinformationsanbieter, die zum Initialisieren eines Hybridknotens verwendet werden können. ssm ist für die Authentifizierung mit AWS und die Generierung temporärer Anmeldeinformationen verantwortlich, die von kubelet verwendet werden. Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden und ssm als Anmeldeinformationsanbieter auf dem Knoten nutzen, müssen Sie ssm so konfigurieren, dass es mit Amazon-SSM-Service-Endpunkten kommunizieren kann.

Erstellen Sie auf jedem Hybridknoten eine Datei mit dem Namen http-proxy.conf im nachfolgenden Pfad, abhängig vom Betriebssystem

  • Ubuntu – /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d/http-proxy.conf

  • Amazon Linux 2023 und Red Hat Enterprise Linux – /etc/systemd/system/amazon-ssm-agent.service.d/http-proxy.conf

Füllen Sie die Datei mit dem folgenden Inhalt. Ersetzen Sie proxy-domain und port durch die Werte für Ihre Umgebung.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

ssm-Konfiguration aus Benutzerdaten

Für diese Datei muss das ssm-systemd-Service-Dateiverzeichnis erstellt werden. Der Verzeichnispfad hängt vom verwendeten Betriebssystem des Knotens ab.

  • Ubuntu – /etc/systemd/system/snap.amazon-ssm-agent.amazon-ssm-agent.service.d

  • Amazon Linux 2023 und Red Hat Enterprise Linux – /etc/systemd/system/amazon-ssm-agent.service.d

systemd-Servicenamen im folgenden Neustartbefehl je nach dem auf dem Knoten verwendeten Betriebssystem ersetzen

  • Ubuntu – snap.amazon-ssm-agent.amazon-ssm-agent

  • Amazon Linux 2023 und Red Hat Enterprise Linux – amazon-ssm-agent

mkdir -p systemd-service-file-directory echo '[Service]' > [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTP_PROXY=http://[.replaceable]#proxy-domain:port"' >> systemd-service-file-directory/http-proxy.conf echo 'Environment="HTTPS_PROXY=http://[.replaceable]#proxy-domain:port"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf echo 'Environment="NO_PROXY=localhost"' >> [.replaceable]#systemd-service-file-directory/http-proxy.conf systemctl daemon-reload systemctl restart [.replaceable]#systemd-service-name

Proxy-Konfiguration des Betriebssystems

Wenn Sie einen Proxy für den Internetzugang verwenden, müssen Sie Ihr Betriebssystem so konfigurieren, dass es die Abhängigkeiten der Hybridknoten aus dem Paket-Manager Ihres Betriebssystems abrufen kann.

Ubuntu 

  1. Konfigurieren Sie snap mit den folgenden Befehlen für die Verwendung Ihres Proxys:

    sudo snap set system proxy.https=http://proxy-domain:port sudo snap set system proxy.http=http://proxy-domain:port
  2. Um den Proxy für apt zu aktivieren, erstellen Sie im /etc/apt/-Verzeichnis eine Datei mit dem Namen apt.conf. Ersetzen Sie Proxy-Domain und Port durch die entsprechenden Werte für Ihre Umgebung.

    Acquire::http::Proxy "http://proxy-domain:port"; Acquire::https::Proxy "http://proxy-domain:port";

Amazon Linux 2023

  1. Konfigurieren Sie dnf für die Verwendung Ihres Proxys. Erstellen Sie eine Datei /etc/dnf/dnf.conf mit den Werten für die Proxy-Domain und den Port für Ihre Umgebung.

    proxy=http://proxy-domain:port

Red Hat Enterprise Linux

  1. Konfigurieren Sie yum für die Verwendung Ihres Proxys. Erstellen Sie eine Datei /etc/yum.conf mit den Werten für die Proxy-Domain und den Port für Ihre Umgebung.

    proxy=http://proxy-domain:port

Proxy-Konfiguration von IAM Roles Anywhere

Der Service des Anmeldeinformationsanbieters für IAM Roles Anywhere ist für die Aktualisierung der Anmeldeinformationen verantwortlich, wenn IAM Roles Anywhere mit dem enableCredentialsFile-Flag verwendet wird (siehe EKS Pod Identity Agent). Wenn Sie in Ihrer On-Premises-Umgebung einen Proxy verwenden, müssen Sie den Service so konfigurieren, dass er mit den Endpunkten von IAM Roles Anywhere kommunizieren kann.

Erstellen Sie im /etc/systemd/system/aws_signing_helper_update.service.d/-Verzeichnis eine Datei mit dem Namen http-proxy.conf mit folgendem Inhalt. Ersetzen Sie proxy-domain und port durch die Werte für Ihre Umgebung.

[Service] Environment="HTTP_PROXY=http://proxy-domain:port" Environment="HTTPS_PROXY=http://proxy-domain:port" Environment="NO_PROXY=localhost"

Cluster-weite Konfiguration

Die Konfigurationen in diesem Abschnitt müssen angewendet werden, nachdem Sie Ihren Amazon-EKS-Cluster erstellt haben und bevor Sie nodeadm init auf jedem Hybridknoten ausführen.

kube-proxy-Proxy-Konfiguration

Amazon EKS installiert kube-proxy automatisch als DaemonSet auf jedem Hybridknoten, wenn Ihre Hybridknoten dem Cluster beitreten. kube-proxy ermöglicht das Routing über Services, die von Pods auf Amazon-EKS-Clustern unterstützt werden. Um jeden Host zu konfigurieren, erfordert kube-proxy eine DNS-Auflösung für Ihren Amazon-EKS-Cluster-Endpunkt.

  1. kube-proxy DaemonSet mit dem folgenden Befehl bearbeiten

    kubectl -n kube-system edit ds kube-proxy

    Dadurch wird die kube-proxy-DaemonSet-Definition in Ihrem konfigurierten Editor geöffnet.

  2. Fügen Sie die Umgebungsvariablen für HTTP_PROXY und HTTPS_PROXY hinzu. Beachten Sie, dass die NODE_NAME-Umgebungsvariable bereits in Ihrer Konfiguration vorhanden sein sollte. Ersetzen Sie proxy-domain und port durch Werte für Ihre Umgebung.

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --hostname-override=$(NODE_NAME) env: - name: HTTP_PROXY value: http://proxy-domain:port - name: HTTPS_PROXY value: http://proxy-domain:port - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName