Direkt zum Inhalt

Wie automatisiere ich die HTTP-Proxy-Konfiguration für Amazon-EKS mit Amazon Linux 2023-Worker-Knoten?

Lesedauer: 4 Minute
0

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:

  1. 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.
  2. 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:

  1. 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.
  2. Um eine ConfigMap zum Konfigurieren der Umgebungsvariablen zu erstellen, verwende das folgende Beispielskript:
    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
    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.
  3. Wende die ConfigMap auf deinen Cluster an.
  4. 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:

  1. 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 -A

    Beispielausgabe:

    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
  2. 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)

AWS OFFICIALAktualisiert vor 7 Monaten