Wie automatisiere ich die HTTP-Proxy-Konfiguration für Amazon-EKS mit Amazon Linux 2023-Worker-Knoten?
Ich möchte meine HTTP-Proxy-Konfiguration für Amazon Elastic Kubernetes Service (Amazon EKS) mit Amazon Linux 2023 (AL2023)-Worker-Knoten automatisieren.
Lösung
In AL2023 verwendet NodeConfig nodeadm, um die Proxy-Einstellungen zu konfigurieren.
Wichtig: Um HTTP-Proxy-Einstellungen über die Spezifikation NodeConfig in AL2023 zu konfigurieren, benötigst du die Amazon Machine Image (AMI)-Release-Version 20251120 oder höher.
Erstelle eine benutzerdefinierte Startvorlage
Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Troubleshooting errors for the AWS CLI (Problembehandlung bei der AWS CLI). Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
Führe die folgenden Schritte aus:
- Erstelle eine benutzerdefinierte Startvorlage mit der AL2023 AMI-ID.
Hinweis: Wenn du in deiner benutzerdefinierten Startvorlage kein AMI angibst, führt die verwaltete Knotengruppe die Benutzerdaten automatisch zusammen. - Konfiguriere Proxy-Einstellungen innerhalb der Benutzerdaten und strukturiere deine Benutzerdaten mit den folgenden Feldern:
MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="//" --// Content-Type: application/node.eks.aws --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: apiServerEndpoint: API_SERVER_ENDPOINT certificateAuthority: YOUR_CLUSTER_CA cidr: KUBERNETES_SERVICE_CIDR_RANGE name: EKS_CLUSTER_NAME instance: environment: default: HTTP_PROXY: http://PROXY_SERVER_IP_ADDRESS:PORT HTTPS_PROXY: http://PROXY_SERVER_IP_ADDRESS:PORT NO_PROXY: localhost,127.0.0.1,169.254.169.254,VPC_CIDR_RANGE,.internal,.eks.amazonaws.com --//--
Hinweis: Ersetze die folgenden Platzhalter durch deine Werte:
- API_SERVER_ENDPOINT durch deinen API-Server-Endpunkt
- YOUR_CLUSTER_CA durch deine Cluster-Zertifizierungsstelle (CA)
- KUBERNETES_SERVICE_CIDR_RANGE durch deinen Service-CIDR-Bereich
- EKS_CLUSTER_NAME durch deinen Cluster-Namen
- PROXY_SERVER_IP_ADDRESS:PORT durch deine Proxy-Server-Adresse und den Port
- VPC_CIDR_RANGE durch deinen CIDR-Bereich der Virtual Private Cloud (VPC)
Wenn du VPC-Endpunkte verwendest, füge AWS-Service-Endpunkte zu NO_PROXY hinzu. Wenn der Zugriff auf deinen Cluster-Endpunkt nur öffentlich ist, schließe .eks.amazonaws.com aus NO_PROXY aus. Weitere Informationen zu Umgebungsvariablen in NodeConfig findest du unter EnvironmentOptions.
Konfiguriere den Proxy für aws-node und kube-proxy
Führe die folgenden Schritte aus:
- Konfiguriere den Proxy basierend auf deinem Cluster-Endpunktzugriff. Wenn der Zugriff auf deinen Cluster-Endpunkt nur öffentlich ist, konfiguriere den Proxy sowohl für aws-node als auch für kube-proxy. Wenn der Zugriff auf deinen Cluster-Endpunkt privat oder öffentlich und privat ohne einen Amazon Elastic Compute Cloud (Amazon EC2)-VPC-Endpunkt ist, konfiguriere den Proxy für aws-node.
- Um eine ConfigMap zum Konfigurieren der Umgebungsvariablen zu erstellen, verwende das folgende Beispielskript:
Hinweis: Ersetze PROXY_SERVER_IP_ADDRESS:PORT durch deine Proxy-Server-Adresse und den Port. Ersetze KUBERNETES_SERVICE_CIDR_RANGE durch deinen Service-CIDR-Bereich und VPC_CIDR_RANGE durch deinen VPC-CIDR-Bereich. Wenn du VPC-Endpunkte verwendest, füge AWS-Service-Endpunkte zu NO_PROXY hinzu. Wenn der Zugriff auf deinen Cluster-Endpunkt nur öffentlich ist, schließe .eks.amazonaws.com aus NO_PROXY aus.apiVersion: v1 kind: ConfigMap metadata: name: proxy-environment-variables namespace: kube-system data: HTTP_PROXY: http://PROXY_SERVER_IP_ADDRESS:PORT HTTPS_PROXY: http://PROXY_SERVER_IP_ADDRESS:PORT NO_PROXY: KUBERNETES_SERVICE_CIDR_RANGE,localhost,127.0.0.1,169.254.169.254,VPC_CIDR_RANGE,.internal,.eks.amazonaws.com - Wende die ConfigMap auf deinen Cluster an.
- Um deine HTTP-Proxy-Konfiguration auf aws-node und kube-proxy festzulegen, führe die folgenden Befehle aus:
kubectl patch -n kube-system -p '{ "spec": {"template":{ "spec": { "containers": [ { "name": "aws-node", "envFrom": [ { "configMapRef": {"name": "proxy-environment-variables"} } ] } ] } } } }' daemonset aws-node kubectl patch -n kube-system -p '{ "spec": {"template":{ "spec": { "containers": [ { "name": "kube-proxy", "envFrom": [ { "configMapRef": {"name": "proxy-environment-variables"} } ] } ] } } } }' daemonset kube-proxy
Eine verwaltete Knotengruppe erstellen
Erstelle eine neue verwaltete Knotengruppe für deinen Cluster, die die erstellte benutzerdefinierte Startvorlage verwendet.
Teste deinen Proxy
Um zu überprüfen, ob dein Proxy funktioniert, führe die folgenden Schritte aus:
-
Führe die folgenden Befehle aus, um den Status deiner Knoten zu überprüfen:
kubectl get nodes kubectl run test-pod --image=amazonlinux:2023 --restart=Never -- sleep 300 kubectl get pods -ABeispielausgabe:
kubectl get nodes NAME STATUS ROLES AGE VERSION ip-10-0-139-233.ec2.internal Ready 7m7s v1.32.9-eks-ecaa3a6 kubectl run test-pod --image=amazonlinux:2023 --restart=Never -- sleep 300 pod/test-pod created kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE default test-pod 1/1 Running 0 24s kube-system aws-node-h999l 2/2 Running 0 7m40s kube-system coredns-69bf5c796c-2q478 1/1 Running 0 18h kube-system coredns-69bf5c796c-7lwvt 1/1 Running 0 18h kube-system kube-proxy-sxgn8 1/1 Running 0 7m40s -
Weitere Informationen zur Verbindung von Knoten findest du in deinem Proxyprotokoll.
Beispielprotokolle:10.0.139.233 TCP_TUNNEL/200 10425 CONNECT auth.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 10.0.139.233 TCP_TUNNEL/200 5285 CONNECT registry-1.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 10.0.139.233 TCP_TUNNEL/200 10424 CONNECT auth.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX - 10.0.139.233 TCP_TUNNEL/200 54112823 CONNECT docker-images-prod.s3.dualstack.us-east-1.amazonaws.com:443 - HIER_DIRECT/XX.XX.XX.XX - 10.0.139.233 TCP_TUNNEL/200 5675 CONNECT registry-1.docker.io:443 - HIER_DIRECT/XX.XX.XX.XX -
Weitere Informationen
Upgrade from Amazon Linux 2 to Amazon Linux 2023 (Upgrade von Amazon Linux 2 auf Amazon Linux 2023)
Node bootstrapping (Knoten-Bootstrapping)
- Themen
- Containers
- Sprache
- Deutsch
