Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Come posso configurare l'AWS Load Balancer Controller su un cluster Amazon EKS per Fargate?
Desidero configurare l'AWS Load Balancer Controller su un cluster Amazon Elastic Kubernetes Service (Amazon EKS) per AWS Fargate.
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Puoi configurare un AWS Load Balancer Controller senza alcuna distribuzione esistente del controller di ingresso dell'Application Load Balancer.
Prerequisiti:
- Disinstalla l'AWS ALB Ingress Controller per Kubernetes esistente. L'AWS Load Balancer Controller ne sostituisce le funzionalità.
- Utilizza eksctl versione 0.109.0 o successiva. Per ulteriori informazioni, consulta Installation (Installazione) sul sito web di eksctl.
- Installa Helm sulla workstation.
Crea un cluster Amazon EKS, una policy per l'account AWS di servizio e policy di controllo degli accessi basate sui ruoli
Completa i seguenti passaggi:
-
Per creare un cluster Amazon EKS utilizzando eksctl, esegui questo comando:
eksctl create cluster \ --name YOUR_CLUSTER_NAME \ --version 1.28 \ --fargate
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster. Non è necessario creare un ruolo di esecuzione del pod Fargate per i cluster che utilizzano solo pod Fargate (--fargate).
-
Per consentire al cluster di utilizzare AWS Identity and Access Management (AWS IAM) per gli account di servizio, esegui questo comando:
eksctl utils associate-iam-oidc-provider \ --cluster YOUR_CLUSTER_NAME \ --approve
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster. kubelet e kube-proxy utilizzano FargateExecutionRole per eseguire il pod Fargate. Tuttavia, FargateExecutionRole non è il ruolo IAM del pod Fargate. Per i pod Fargate, devi utilizzare il ruolo IAM per l'account di servizio.
-
Per scaricare una policy IAM che consenta all'AWS Load Balancer Controller di effettuare chiamate alle API AWS per tuo conto, esegui questo comando:
-
curl -o iam_policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/install/iam_policy.json
-
Per creare una policy IAM con la policy scaricata, esegui questo comando AWS CLI create-policy:
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
-
Per creare un account di servizio per l'AWS Load Balancer Controller, esegui questo comando:
eksctl create iamserviceaccount \ --cluster=YOUR_CLUSTER_NAME \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --attach-policy-arn=arn:aws:iam::AWS_ACCOUNT_ID:policy/AWSLoadBalancerControllerIAMPolicy \ --override-existing-serviceaccounts \ --approve
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster e AWS_ACCOUNT_ID con l'ID del tuo account. Il comando precedente crea un account di servizio denominato aws-load-balancer-controller nel namespace kube-system.
-
Per verificare che il nuovo ruolo di servizio sia stato creato, esegui uno di questi comandi:
eksctl get iamserviceaccount \ --cluster=YOUR_CLUSTER_NAME \ --name=aws-load-balancer-controller \ --namespace=kube-system
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster.
-oppure-kubectl get serviceaccount aws-load-balancer-controller \ --namespace kube-system \ -o yaml
Installa l'AWS Load Balancer Controller con Helm
Completa i seguenti passaggi:
-
Per aggiungere il grafico Amazon EKS a Helm, esegui questo comando:
helm repo add eks https://aws.github.io/eks-charts
-
Per aggiornare il repository ed estrarre il grafico più recente, esegui questo comando:
helm repo update eks
-
Per installare il grafico Helm, esegui questo comando:
helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ --set clusterName=YOUR_CLUSTER_NAME \ --set serviceAccount.create=false \ --set region=YOUR_REGION_CODE \ --set vpcId=EKS_CLUSTER_VPC_ID \ --set serviceAccount.name=aws-load-balancer-controller \ --version 1.11.0 \ -n kube-system
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster e YOUR_REGION_CODE con la Regione AWS del tuo cluster. Inoltre, sostituisci EKS_CLUSTER_VPC_ID con l'ID del cloud privato virtuale (VPC) del cluster.
-
Per verificare che il controller sia stato installato correttamente, esegui questo comando:
kubectl get deployment -n kube-system aws-load-balancer-controller
Esempio di output:
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
Testa l'AWS Load Balancer Controller
Per testare l'implementazione, utilizza l'AWS Load Balancer Controller per creare una delle seguenti risorse:
- Un Application Load Balancer per l'ingresso
- Un Network Load Balancer in cui, per Servizio, il Tipo è LoadBalancer
Una risorsa in ingresso indirizza il traffico verso diversi servizi in base a concetti web come URI, nomi host e percorsi. È consigliabile utilizzare una risorsa di ingresso per condividere un bilanciatore del carico con più servizi o per controllare il routing del servizio. Utilizza un Servizio LoadBalancer per assegnare un bilanciatore del carico dedicato al servizio.
Nota: i seguenti passaggi di test distribuiscono un esempio di applicazione di gioco denominata 2048.
Crea un Application Load Balancer
Per creare un Application Load Balancer per l'ingresso, completa i seguenti passaggi:
-
Per creare il profilo Fargate necessario per la distribuzione del gioco, esegui questo comando:
eksctl create fargateprofile \ --cluster YOUR_CLUSTER_NAME \ --region YOUR_REGION_CODE \ --name your-alb-sample-app \ --namespace game-2048
Nota: sostituisci YOUR_CLUSTER_NAME con il nome del tuo cluster e YOUR_REGION_CODE con la tua Regione.
-
Per distribuire l'applicazione, esegui questo comando:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/examples/2048/2048_full.yaml
-
Attendi qualche minuto. Quindi esegui questo comando per verificare che l'AWS Load Balancer Controller abbia creato una risorsa di ingresso:
kubectl get ingress/ingress-2048 -n game-2048
Esempio di output:
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-xxxxxxxxxx-yyyyyyyyyy.region.elb.amazonaws.com 80 3d4h
Se non vedi una risorsa in ingresso dopo alcuni minuti, esegui questo comando per visualizzare i log dell'AWS Load Balancer Controller:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
Controlla nei log la presenza di messaggi di errore che ti aiutino a diagnosticare i problemi di distribuzione.
-
Per visualizzare l'applicazione, apri un browser, quindi accede all'URL nell'output del comando della risorsa in ingresso.
Nota: se non vedi l'applicazione, attendi qualche minuto e aggiorna il browser.
Crea un Network Load Balancer
Per distribuire un esempio di applicazione utilizzando il servizio di modalità indirizzo IP del Network Load Balancer, procedi come segue:
-
Per creare un profilo Fargate, esegui questo comando:
eksctl create fargateprofile --cluster your-cluster --region your-region-code --name your-alb-sample-app --namespace game-2048
Nota: sostituisci your-cluster con il nome del tuo cluster e your-region-code con la Regione del tuo cluster.
-
Per ottenere il manifesto per distribuire il gioco 2048, esegui questo comando:
curl -o 2048-game.yaml https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.11.0/docs/examples/2048/2048_full.yaml
-
Nel manifesto, elimina la seguente sezione Ingress (Ingresso):
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: namespace: game-2048 name: ingress-2048 annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: name: service-2048 port: number: 80
-
Modifica l'oggetto Service (Servizio) per utilizzare i seguenti valori:
apiVersion: v1 kind: Service metadata: namespace: game-2048 name: service-2048 annotations: service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip" service.beta.kubernetes.io/aws-load-balancer-type: external service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing spec: ports: - port: 80 targetPort: 80 protocol: TCP type: LoadBalancer selector: app.kubernetes.io/name: app-2048
-
Per creare il manifesto del servizio e della distribuzione, esegui questo comando:
kubectl apply -f 2048-game.yaml
-
Per verificare la creazione del servizio e il nome DNS del Network Load Balancer, esegui questo comando:
kubectl get svc -n game-2048
Esempio di output:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service-2048 LoadBalancer 10.100.114.197 k8s-game2048-service2-xxxxxxxxxx-yyyyyyyyyy.us-east-2.elb.amazonaws.com 80:xxxxx/TCP 23m
-
Attendi qualche minuto fino all’attivazione del bilanciatore del carico. Per verificare di poter accedere alla distribuzione, apri un browser web. Quindi apri il nome di dominio completo (FQDN) nell'output del comando in EXTERNAL-IP.
Risolvi i problemi relativi all'AWS Load Balancer Controller
Se riscontri problemi durante la configurazione dell'AWS Load Balancer Controller, esegui questi comandi:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller kubectl get endpoints -n game-2048 kubectl get ingress/ingress-2048 -n game-2048
Controlla la presenza di eventuali messaggi di errore nell'output del comando logs, ad esempio problemi con tag o sottoreti. Per le procedure di risoluzione degli errori più comuni, consulta Issues (Problemi) sul sito web di GitHub. Consulta anche In che modo è possibile risolvere i problemi durante la creazione di un bilanciatore del carico utilizzando l'AWS Load Balancer Controller?
Il comando get endpoints mostra se hai registrato correttamente i pod di distribuzione supportati. Il comando get ingress mostra se le risorse in ingresso sono distribuite.
Per ulteriori informazioni, consulta AWS Load Balancer Controller sul sito web di Kubernetes.
Video correlati

