Trabalhando com o Cluster Autoscaler como um Complemento de Cluster

Descubra como instalar, configurar e usar o Kubernetes Cluster Autoscaler como um complemento de cluster para redimensionar automaticamente os pools de nós gerenciados em um cluster que você criou usando o Kubernetes Engine (OKE).

Usar o Kubernetes Cluster Autoscaler como um complemento de cluster (o 'complemento do Cluster Autoscaler') em vez de como um programa independente simplifica a configuração e a manutenção contínua. Você pode, mais simplesmente:

  • Ative ou desative o Cluster Autoscaler.
  • Aceite e cancele atualizações automáticas da Oracle.
  • Selecione as versões do complemento Cluster Autoscaler.
  • Gerencie personalizações específicas de complementos usando argumentos de configuração de pares de chave/valor aprovados.

Estas seções descrevem como trabalhar com o complemento Cluster Autoscaler para gerenciar pools de nós:

Implantando o Complemento do Cluster Autoscaler

Etapa 1: Configurando um Controlador de Instâncias ou um Controlador de Identidades de Carga de Trabalho para Ativar o Complemento do Cluster Autoscaler para Acessar Pools de Nós

Para gerenciar pools de nós, o Kubernetes Cluster Autoscaler executa ações em outros recursos de serviço do Oracle Cloud Infrastructure. Para executar essas ações nos recursos de serviço do OCI, o Kubernetes Cluster Autoscaler usa as credenciais de um ator autorizado (ou principal). No momento, você pode configurar os seguintes tipos de principal para permitir que o Kubernetes Cluster Autoscaler execute ações nos recursos de serviço do OCI:

  • Controlador de instâncias: O Kubernetes Cluster Autoscaler usa a identidade da instância na qual está em execução.
  • Controlador de identidades da carga de trabalho: O Kubernetes Cluster Autoscaler usa a identidade de um recurso da carga de trabalho em execução em um cluster do Kubernetes.

Observe o uso de controladores de identidade de carga de trabalho para permitir que o Kubernetes Cluster Autoscaler acesse serviços e recursos do OCI:

  • é compatível com clusters aprimorados, mas não com clusters básicos.
  • só é suportado com o Cluster Autoscaler versão 1.26 (ou posterior)

Usando controladores de instância para ativar o complemento do Cluster Autoscaler para acessar pools de nós

Você pode configurar um controlador de instâncias para permitir que o Kubernetes Cluster Autoscaler execute ações nos recursos de serviço do OCI.

Para configurar um controlador de instâncias:

  1. Faça log-in na Console.
  2. Crie um novo grupo dinâmico no nível do compartimento contendo os nós de trabalho (instâncias de computação) no cluster:

    1. Abra o menu de navegação e clique em Identidade e Segurança. Em Identidade, clique em Domínios. Em domínio de identidades, clique em Grupos dinâmicos.
    2. Selecione o compartimento que contém o cluster.
    3. Siga as instruções em Para criar um grupo dinâmico e dê um nome ao grupo dinâmico (por exemplo, acme-oke-cluster-autoscaler-dyn-grp).
    4. Digite uma regra que inclua os nós de trabalho no compartimento no formato:

      ALL {instance.compartment.id = '<compartment-ocid>'}

      em que <compartment-ocid> é o OCID do compartimento ao qual o cluster pertence.

      Por exemplo:

      ALL {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaa23______smwa'}
    5. Clique em Criar Grupo Dinâmico.
  3. Crie uma política para permitir que os nós de trabalho gerenciem pools de nós:

    1. Abra o menu de navegação e clique em Identidade e Segurança. Em Identidade, clique em Políticas.
    2. Siga as instruções em Para criar uma política e dê a ela um nome (por exemplo, acme-oke-cluster-autoscaler-dyn-grp-policy).
    3. Digite uma instrução de política para permitir que os nós de trabalho gerenciem os pools de nós (com outras instruções de política relacionadas à inicialização dos nós de trabalho), no formato:

      Allow dynamic-group <dynamic-group-name> to manage cluster-node-pools in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to manage instance-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use subnets in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to use vnics in compartment <compartment-name>
      Allow dynamic-group <dynamic-group-name> to inspect compartments in compartment <compartment-name>

      em que:

      • <dynamic-group-name> é o nome do grupo dinâmico criado anteriormente. Por exemplo, acme-oke-cluster-autoscaler-dyn-grp Observe que, se um grupo dinâmico não estiver no domínio de identidades padrão, coloque o nome do grupo dinâmico como prefixo com o nome do domínio de identidades no formato dynamic-group '<identity-domain-name>'/'<dynamic-group-name>'. Você também pode especificar o grupo dinâmico usando seu OCID, no formato dynamic-group id <dynamic-group-ocid>.
      • <compartment-name> é o nome do compartimento ao qual o cluster pertence. Por exemplo, acme-oke-cluster-autoscaler-compartment

      Por exemplo:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment acme-oke-cluster-autoscaler-compartment
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment
    4. Clique em Criar para criar a nova política.
    Observação

    Se um pool de nós pertencer a um compartimento e os recursos de rede usados pelo pool de nós pertencerem a outro compartimento, você deverá criar políticas em ambos os compartimentos da seguinte forma:

    • No compartimento do pool de nós, crie uma política com instruções de política no seguinte formato:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage cluster-node-pools in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to manage instance-family in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <nodepool-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <nodepool-compartment-name>
    • No compartimento de recursos de rede, crie uma política com instruções de política no seguinte formato:

      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use subnets in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to read virtual-network-family in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to use vnics in compartment <network-compartment-name>
      Allow dynamic-group acme-oke-cluster-autoscaler-dyn-grp to inspect compartments in compartment <network-compartment-name>

Observe que antes de implantar o complemento do Cluster Autoscaler, você indicará que deseja que o complemento do Cluster Autoscaler acesse pools de nós usando controladores de instância definindo o parâmetro authType como instance no arquivo de configuração. Consulte Etapa 2: Criar o arquivo de configuração do Complemento do Cluster Autoscaler.

Usando controladores de identidade de carga de trabalho para permitir que o complemento do Cluster Autoscaler acesse pools de nós

Você pode configurar um controlador de identidades de carga de trabalho para permitir que o Kubernetes Cluster Autoscaler execute ações nos recursos do serviço OCI. Observe que você só pode usar controladores de identidade de carga de trabalho com clusters aprimorados.

Para configurar um controlador de identidades de carga de trabalho:

  1. Obtenha o OCID do cluster (por exemplo, usando a guia Detalhes do Cluster na Console).
  2. Abra o menu de navegação e clique em Identidade e Segurança. Em Identidade, clique em Políticas.
  3. Siga as instruções em Criando uma Política e dê um nome à política (por exemplo, acme-oke-cluster-autoscaler-policy).
  4. Informe instruções de política para permitir o gerenciamento do pool de nós, no formato:

    Allow any-user to manage cluster-node-pools in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

    em que:

    • <compartment-name> é o nome do compartimento ao qual o cluster pertence. Por exemplo, acme-oke-cluster-autoscaler-compartment
    • <cluster-ocid> é o OCID do cluster obtido anteriormente.

    Por exemplo:

    Allow any-user to manage cluster-node-pools in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to manage instance-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use subnets in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to read virtual-network-family in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to use vnics in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'}
    Allow any-user to inspect compartments in compartment acme-oke-cluster-autoscaler-compartment where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = 'ocid1.cluster.oc1.iad.aaaaaaaa______ska'} 
  5. Clique em Criar para criar a nova política.
Observação

Se um pool de nós pertencer a um compartimento e os recursos de rede usados pelo pool de nós pertencerem a outro compartimento, você deverá criar políticas em ambos os compartimentos da seguinte forma:

  • No compartimento do pool de nós, crie uma política com instruções de política no seguinte formato:

    Allow any-user to manage cluster-node-pools in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to manage instance-family in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use subnets in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <nodepool-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 
  • No compartimento de recursos de rede, crie uma política com instruções de política no seguinte formato:

    Allow any-user to use subnets in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to read virtual-network-family in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to use vnics in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'}
    Allow any-user to inspect compartments in compartment <network-compartment-name> where ALL {request.principal.type='workload', request.principal.namespace ='kube-system', request.principal.service_account = 'cluster-autoscaler', request.principal.cluster_id = '<cluster-ocid>'} 

Observe que antes de implantar o complemento do Cluster Autoscaler, você indicará que deseja que o complemento do Cluster Autoscaler acesse pools de nós usando controladores de identidade de carga de trabalho definindo o parâmetro authType como workload no arquivo de configuração. Consulte Etapa 2: Criar o arquivo de configuração do Complemento do Cluster Autoscaler.

Etapa 2: Criar o arquivo de configuração do Complemento do Cluster Autoscaler

Observação

Estas instruções descrevem como criar um arquivo de configuração de complemento do Cluster Autoscaler para permitir que você implante o complemento do Cluster Autoscaler usando a CLI. O arquivo de configuração contém argumentos de configuração de par chave/valor aprovados. Você precisa criar um arquivo de configuração ao implantar o complemento usando a CLI (ou usando a API). Você também pode usar a Console para implantar o complemento Cluster Autoscaler; nesse caso, você especifica argumentos de configuração na interface do usuário. Para obter mais informações sobre como implantar o complemento Cluster Autoscaler usando a Console, consulte Instalando um Complemento Cluster.

  1. Em um editor adequado, crie um arquivo JSON com um nome de sua escolha (essas instruções pressupõem que o arquivo seja chamado cluster-autoscaler-add-on.json) contendo o seguinte:

    {
      "addonName": "ClusterAutoscaler",
      "configurations": [
        {
          "key": "nodes",
          "value": "1:5:{{ node pool ocid 1 }}"
        }
      ]
    }
  2. No arquivo cluster-autoscaler-add-on.json criado, especifique cada um dos pools de nós do cluster que você deseja que o Kubernetes Cluster Autoscaler gerencie.

    Você pode especificar vários pools de nós no arquivo cluster-autoscaler-add-on.json. Observe que a recomendação é sempre ter pelo menos um pool de nós que não seja gerenciado pelo Kubernetes Cluster Autoscaler. Observe também que é sua responsabilidade dimensionar manualmente todos os pools de nós que você não especificar no arquivo de configuração.

    1. No arquivo cluster-autoscaler-add-on.json, localize as seguintes linhas de modelo:

            "key": "nodes",
            "value": "1:5:{{ node pool ocid 1 }}"

      O valor do parâmetro nodes tem o seguinte formato:

      "value": "<min-nodes>:<max-nodes>:<nodepool-ocid>"

      em que:

      • <min-nodes> é o número mínimo de nós permitido no pool de nós. O Kubernetes Cluster Autoscaler não reduzirá o número de nós abaixo desse número.
      • <max-nodes> é o número máximo de nós permitido no pool de nós. O Kubernetes Cluster Autoscaler não aumentará o número de nós acima desse número. Certifique-se de que o número máximo de nós especificado não exceda os limites da tenancy para a forma do nó de trabalho definida para o pool de nós.
      • <nodepool-ocid> é um ou mais OCIDs do pool de nós.
    2. Altere o valor do parâmetro nodes para especificar:

      • O número mínimo de nós permitido no pool de nós. Por exemplo, 1.
      • O número máximo de nós permitido no pool de nós. Por exemplo, 5.
      • O OCID do pool de nós que você deseja que o Kubernetes Cluster Autoscaler gerencie.

      Por exemplo:

            "key": "nodes",
            "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq"
    3. Se quiser que o Kubernetes Cluster Autoscaler gerencie um segundo pool de nós no cluster, anexe os detalhes apropriados do segundo pool de nós ao valor do parâmetro nodes. Por exemplo:
            "key": "nodes",
            "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
    4. Se quiser que o Kubernetes Cluster Autoscaler gerencie mais pools de nós, anexe os detalhes apropriados ao valor do parâmetro nodes.
    5. Salve o arquivo cluster-autoscaler-add-on.json.
  3. No arquivo cluster-autoscaler-add-on.json criado, use o parâmetro authType para especificar como você configurou o Kubernetes Cluster Autoscaler para acessar serviços e recursos do OCI:

    • Se você tiver configurado um controlador de instâncias para permitir que o Kubernetes Cluster Autoscaler acesse serviços e recursos do OCI, defina o parâmetro authType como instance.
    • Se você tiver configurado um controlador de identidade de carga de trabalho para permitir que o Kubernetes Cluster Autoscaler acesse serviços e recursos do OCI, defina o parâmetro authType como workload.

    Por exemplo:

          "key": "authType",
          "value": "workload"

    Observe que instance é o valor padrão do parâmetro authType; portanto, se você não especificar explicitamente um valor para authType, o Kubernetes Cluster Autoscaler usará a identidade da instância na qual ele está sendo executado para acessar serviços e recursos do OCI. Para obter mais informações, consulte Etapa 1: Configurando um Controlador de Instâncias ou um Controlador de Identidades de Carga de Trabalho para Ativar o Complemento do Cluster Autoscaler para Acessar Pools de Nós.

  4. No arquivo cluster-autoscaler-add-on.json criado, especifique outros parâmetros para o Kubernetes Cluster Autoscaler. Para obter informações sobre os parâmetros que você pode definir, consulte Parâmetros do Kubernetes Cluster Autoscaler Suportados.

    Por exemplo:

    {
      "configurations": [
        {
          "key": "nodes",
          "value": "2:4:ocid1.nodepool.oc1.iad.aaaaaaaaae____ydq, 1:5:ocid1.nodepool.oc1.iad.aaaaaaaaah____bzr"
        },
        {
          "key": "authType",
          "value": "workload"
        },
        {
          "key": "numOfReplicas",
          "value": "1"
        },
        {
          "key": "maxNodeProvisionTime",
          "value": "15m"
        },
        {
          "key": "scaleDownDelayAfterAdd",
          "value": "15m"
        },
        {
          "key": "scaleDownUnneededTime",
          "value": "10m"
        },
        {
          "key": "annotations",
          "value": "{\"prometheus.io/scrape\":\"true\",\"prometheus.io/port\":\"8086\"}"
        }
      
  5. Salvar e fechar o arquivo cluster-autoscaler-add-on.json.

Etapa 3: Implantar o complemento do Cluster Autoscaler no cluster e confirmar a implantação bem-sucedida

Observação

Estas instruções descrevem como implantar o complemento Cluster Autoscaler usando a CLI e um arquivo de configuração. Você também pode implantar o complemento usando a Console e a API. Para obter mais informações, consulte Instalando um Complemento de Cluster.

  1. Se você ainda não tiver feito isso, siga as etapas para configurar o arquivo de configuração kubeconfig do cluster e (se necessário) defina a variável de ambiente KUBECONFIG para apontar para o arquivo. Observe que você deve configurar seu próprio arquivo kubeconfig. Não é possível acessar um cluster usando um arquivo kubeconfig que outro usuário tenha configurado. Consulte Configurando o Acesso ao Cluster.
  2. Confirme se o complemento do Cluster Autoscaler ainda não foi instalado no cluster digitando:
    oci ce cluster list-addons --cluster-id <cluster-ocid>

    em que <cluster-ocid> corresponde ao OCID do cluster no qual você deseja implantar o complemento do Cluster Autoscaler.

  3. Implante o complemento do Cluster Autoscaler no cluster digitando:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    em que:

    • --cluster-id <cluster-ocid> é o OCID do cluster no qual você deseja implantar o complemento do Cluster Autoscaler.
    • --from-json file://<path-to-config-file> especifica o local do arquivo de configuração do complemento do Cluster Autoscaler a ser usado ao implantar o complemento. Por exemplo, --from-json file://./cluster-autoscaler-add-on.json

    Por exemplo:

    oci ce cluster install-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Uma solicitação de serviço é criada para instalar os recursos do Kubernetes exigidos pelo Kubernetes Cluster Autoscaler no cluster.

  4. Opcional: Exiba o status dos pods do Kubernetes Cluster Autoscaler para observar o andamento da implantação, digitando:
    kubectl get pods -n kube-system | grep cluster-autoscaler
  5. Exiba os logs do Kubernetes Cluster Autoscaler para confirmar se o complemento foi implantado com sucesso e está monitorando no momento a carga de trabalho dos pools de nós do cluster, digitando:
    kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler

Etapa 4: Exibir a Operação de Dimensionamento

Você pode observar o Kubernetes Cluster Autoscaler implantado porque ele dimensiona automaticamente os nós de trabalho de um pool de nós. Para tornar a operação de dimensionamento mais clara, considere as seguintes sugestões (observe que elas se destinam apenas para fins de observação e podem ser contrárias às recomendações mostradas em Recomendações ao usar o Kubernetes Cluster Autoscaler em Ambientes de Produção):

  • Observe um cluster que tenha um único pool de nós (o pool que está sendo gerenciado pelo Kubernetes Cluster Autoscaler).
  • Se o cluster que você deseja observar tiver mais de um pool de nós, restrinja os pods a serem executados nos nós do pool de nós único que está sendo gerenciado pelo Kubernetes Cluster Autoscaler. Consulte Designando Pods a Nós na documentação do Kubernetes.
  • Comece com um nó no pool de nós que está sendo gerenciado pelo Kubernetes Cluster Autoscaler.
  • No arquivo de configuração do Kubernetes Cluster Autoscaler, especifique o número máximo de nós permitidos no pool de nós. Certifique-se de que o número máximo de nós especificado não exceda o limite da tenancy para a forma do nó de trabalho definida para o pool de nós.

Para exibir o Kubernetes Cluster Autoscaler dimensionando nós de trabalho automaticamente:

  1. Confirme o número total atual de nós de trabalho no cluster digitando:
    kubectl get nodes
  2. Defina um aplicativo Nginx de amostra criando um arquivo chamado nginx.yaml em um editor de texto, com o seguinte conteúdo:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-deployment
    spec:
      selector:
        matchLabels:
          app: nginx
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx:latest
            ports:
            - containerPort: 80
            resources:
              requests:
                memory: "500Mi"

    Observe que um limite de solicitação de recurso foi definido.

  3. Implante o aplicativo de amostra digitando:
    kubectl create -f nginx.yaml
  4. Aumente o número de pods na implantação para 100 (de 2) digitando:
    kubectl scale deployment nginx-deployment --replicas=100

    O Kubernetes Cluster Autoscaler agora adiciona nós de trabalho ao pool de nós para atender ao aumento da carga de trabalho.

  5. Observe o status da implantação digitando:
    kubectl get deployment nginx-deployment --watch
  6. Após alguns minutos, exiba o aumento do número total de nós de trabalho no cluster digitando:
    kubectl get nodes

    Observe que o número de nós de trabalho que você vê dependerá da forma do nó de trabalho e do número máximo de nós especificados no arquivo de configuração do Kubernetes Cluster Autoscaler.

Etapa 5: Limpar

  1. Exclua o aplicativo Nginx de amostra digitando:
    kubectl delete deployment nginx-deployment
  2. Após dez minutos, confirme se os nós de trabalho foram reduzidos para o número original, digitando:
    kubectl get nodes

Observe que depois de excluir o aplicativo Nginx de amostra e aguardar, talvez você veja menos nós de trabalho, mas ainda mais do que o número original. Isso provavelmente ocorre porque os pods kube-system foram programados para serem executados nesses nós. Os pods kube-system podem impedir que o Kubernetes Cluster Autoscaler remova os nós porque o parâmetro skip-nodes-with-system-pods do Autoscaler é definido como true por padrão.

Atualizando o Complemento do Cluster Autoscaler

Observação

Estas instruções descrevem como atualizar o complemento do Cluster Autoscaler usando a CLI e um arquivo de configuração. Você também pode atualizar o complemento usando a Console e a API. Para obter mais informações, consulte Atualizando um Complemento de Cluster.

  1. Abra o arquivo de configuração do complemento do Cluster Autoscaler em um editor adequado

  2. Adicione, remova ou altere parâmetros de configuração no arquivo de configuração conforme necessário. Para obter informações sobre os parâmetros que você pode definir, consulte Parâmetros do Kubernetes Cluster Autoscaler Suportados.

  3. Atualize o complemento do Cluster Autoscaler usando o comando oci ce cluster update-addon, digitando:
    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>

    em que:

    • --cluster-id <cluster-ocid> é o OCID do cluster no qual você deseja atualizar o complemento do Cluster Autoscaler.
    • --from-json file://<path-to-config-file> especifica o local do arquivo de configuração do complemento do Cluster Autoscaler a ser usado ao atualizar o complemento. Por exemplo, --from-json file://./cluster-autoscaler-add-on.json

    Por exemplo:

    oci ce cluster update-addon --addon-name ClusterAutoscaler --from-json file://./cluster-autoscaler-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr

    Uma solicitação de serviço é criada para atualizar os recursos do Kubernetes exigidos pelo Kubernetes Cluster Autoscaler.

  4. Opcional: exiba o status dos pods do Kubernetes Cluster Autoscaler para observar o andamento, digitando:
    kubectl get pods -n kube-system | grep cluster-autoscaler

Desativando (e Removendo o Complemento do Cluster Autoscaler

Observação

Estas instruções descrevem como desativar e remover o complemento Cluster Autoscaler usando a CLI e um arquivo de configuração. Você também pode atualizar o complemento usando a Console e a API. Para obter mais informações, consulte Desativando (e Removendo) um Complemento de Cluster.

  1. Desative (e opcionalmente remova) o complemento do Cluster Autoscaler usando o comando oci ce cluster disable-addon, digitando:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>

    em que:

    • --cluster-id <cluster-ocid> é o OCID do cluster no qual você deseja desativar (e, opcionalmente, remover) o complemento do Cluster Autoscaler.
    • --is-remove-existing-add-on <true|false> especifica para remover completamente o complemento do Cluster Autoscaler (quando definido como true) ou para não remover o complemento, mas simplesmente desativá-lo e não usá-lo (quando definido como false). Se você desabilitar a extensão, a Oracle não a atualizará mais automaticamente quando novas versões estiverem disponíveis.

    Por exemplo:

    oci ce cluster disable-addon --addon-name ClusterAutoscaler --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true

    Uma solicitação de serviço é criada para desativar (e, opcionalmente, remover) o Kubernetes Cluster Autoscaler.

  2. Opcional: exiba o status dos pods do Kubernetes Cluster Autoscaler para observar o andamento, digitando:
    kubectl get pods -n kube-system | grep cluster-autoscaler