EKS, EKSCTL e AZ

Você vai criar um cluster EKS para estudar. Você sabe que o processo de criação demora por volta de uns 15 min, então executa o comando e vai fazer um cafe.

Quando você volta, meia hora depois(foi mal, me atrasei olhando o Instagram), você é recebido com a seguinte mensagem:



Mas o que aconteceu?

Entendendo o problema



A AWS é um proofor bem grande, mas algumas regiões são extremamente disputadas. us-east-1은 AWS의 주요 리전(lembra o que acontece quando ela "cai"?) 및 muita gente usa입니다. 따라서 가용 영역은 "절대"로 간주됩니다.

A mensagem de erro está bem clara ali:

Cannot create cluster 'devsres-lab' because us-east-1e, the targeted availability zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these availability zones: us-east-1a, us-east-1b, us-east-1c, us-east-1d, us-east-1f



É parecido comeste erro aqui que pode acontecer ao tentar subir uma máquina EC2 em certas AZs saturadas. Esse erro acima acontecia bastante aqui em São Paulo com sa-east-1b - ela passou "fechada"por um tempo!

당신은 프로그램을 가지고 있습니다!



Embora는 AWS를 보호하기 위해 EKS 클러스터에 대한 명령을 포함하는 프로그래밍 패드(공식 문서 목록 포함)를 포함하고 있습니다.

어떤 문제가 명확하지 않은지 확인하려면 AZ의 "시간"을 템포에 따라 결정해야 합니까?

É porque não tem solução.

Uma coisa é ter capacidade para criar VMs, outra coisa é capacidade para criar clusters EKS.

no mesmo dia em que fui contemplado com o erro da imagem acima, eu consegui criar máquinas virtuais do mesmo tamanho (ou maiores!) em us-east-1e, a AZ "cheia":



Existem técnicas para saber se você consegue criar uma VM em uma AZ - a melhor maneira é verificar se há oferta de reserved-instances:
  • 용량이 t3.medium입니까? (como eu sei que sim, serve para validar o comando!)

  • # Ps: código copy/pastable!
    $ export TYPE=t3.medium
    $ aws ec2 describe-reserved-instances-offerings   \
      --filters 'Name=scope,Values=Availability Zone' \
      --no-include-marketplace --instance-type $TYPE  |
      jq -r '.ReservedInstancesOfferings[].AvailabilityZone' |
      sort | uniq
    us-east-1a
    us-east-1b
    us-east-1c
    us-east-1d
    us-east-1e
    us-east-1f
    


    현재 AZ가 estão aí인 것처럼 확인하고 que já sabemos를 확인합니다.
  • m5.large에 용량이 있습니까?

  • $ export TYPE=m5.large
    $ aws ec2 describe-reserved-instances-offerings   \
      --filters 'Name=scope,Values=Availability Zone' \
      --no-include-marketplace --instance-type $TYPE  |
      jq -r '.ReservedInstancesOfferings[].AvailabilityZone' |
      sort | uniq
    us-east-1a
    us-east-1b
    us-east-1c
    us-east-1d
    us-east-1f
    


    Ops, aparentemente us-east-1e está fora desse tipo aí!

    EKS 또는 클러스터 클러스터에서 AZ를 지원하는 세이버를 사용할 수 있습니다. 이제 우리는 API를 사용하지 않고 API를 사용하여 정보를 제공할 수 있도록 eksctl을 실행할 수 없습니다.

    Você literalmente tem quebrar a cara, levar o erro e "rolar os dados de novo", torcendo para o que o eksctl escolha melhor na próxima vez.



    ...그렇지 않아!

    Especificando를 AZ로



    AZ의 문제는 AZ의 "보아스"로 구체적이고 구체적으로 다음과 같이 설명합니다.
  • Por meio de comandos:

  • $ export CLUSTER=devsres-lab 
    $ eksctl create cluster  
    --name "$CLUSTER"             \
    --vpc-nat-mode Disable        \
    --zones us-east-1a,us-east-1b \
    --nodegroup-name ng1          \
    --instance-types t3.medium    \
    --nodes-min 0                 \
    --nodes-max 5                 \
    --nodes 2
    


  • Por meio do a arquivo de cluster:

  • $ cat 
    apiVersion: eksctl.io/v1alpha5
    kind: ClusterConfig
    
    metadata:
      name: devsres-lab
      region: us-east-1
    
    # Avaiability zones pode ser:
    
    # Um top level object
    availabilityZones:
    - us-east-1a
    - us-east-1d
    
    # Um atributo do NodeGroup
    nodeGroups:
      - name: regular
        instanceType: t3.medium
        desiredCapacity: 2
        volumeSize: 80
        availabilityZones:
        - us-east-1a
        - us-east-1d
    ...
    


    Mas atenção: o que resolve o que problema da criação do cluster é especificar a diretiva como top level object! Especificar onde o eksctl pode criar NodeGroups ainda deixa ele escolher AZs livremente!

    우마 큐리오시다데



    전통적인 방식으로, 가용 영역에서 VPC를 선택하는 것은 다음과 같습니다.



    Isso é descrito na documentação aqui .

    Mas de tanto esse erro aborrecer as pessoas, já que não é possível resolver o problema de maneira definitiva, eles optaram por mudar o comportamento padrão do eksctl para us-east-1 apenas, usando duas em vez de três!



    Tem literalmente um if no código que testa isso!




    그래서!

    Qualquer coisa, nos vemos ou no Twitch !

    좋은 웹페이지 즐겨찾기