Problemas conhecidos

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Esta página lista os problemas conhecidos do Cloud Composer. Algumas correções para esses problemas estão em andamento e serão disponibilizadas em versões futuras.

Alguns problemas afetam versões mais antigas e podem ser corrigidos com o upgrade do seu ambiente.

Os intervalos de endereços não RFC 1918 são parcialmente compatíveis com pods e serviços

O Cloud Composer depende do GKE para oferecer suporte para endereços não RFC 1918 para pods e serviços. Atualmente, apenas os seguintes lista de intervalos não RFC 1918 é compatível com o Cloud Composer:

  • 100.64.0.0/10
  • 192.0.0.0/24
  • 192.0.2.0/24
  • 192.88.99.0/24
  • 198.18.0.0/15
  • 198.51.100.0/24
  • 203.0.113.0/24
  • 240.0.0.0/4

A IU do Airflow não mostra registros de tarefas quando a serialização do DAG está ativada no Composer 1.10.2 e no Composer 1.10.3

A ativação da serialização de DAG em ambientes usando as versões 1.10.2 e 1.10.3 do Composer impede a exibição dos registros no servidor da Web do Airflow. Faça upgrade para a versão 1.10.4 (ou mais recente) para corrigir esse problema.

Falha intermitente da tarefa durante a programação no Cloud Composer

O problema é visto em um Airflow Scheduler para a instância da tarefa durante a execução dela. No entanto, os registros não explicam a causa da falha da tarefa, e o worker e o programador do Airflow pareciam relativamente saudáveis.

A mensagem de erro no Airflow Scheduler pode ser semelhante a esta:

Executor reports task instance <TaskInstance: xx.xxxx scheduled__2022-04-21T06:00:00+00:00 [queued]> finished (failed) although the task says its queued. (Info: None) Was the task killed externally?

Ou pode haver algum erro no worker do Airflow semelhante ao seguinte:

Log file is not found: gs://$BUCKET_NAME/logs/$DAG_NAME/$TASK_NAME/2023-01-25T05:01:17.044759+00:00/1.log.
The task might not have been executed or worker executing it might have finished abnormally (e.g. was evicted).

Para garantir a robustez contra esses erros decorrentes de um problema antigo no Airflow, recomendamos implementar proativamente estratégias de nova tentativa adequadas nos níveis de tarefa e DAG. Ao incorporar essas medidas, o sistema pode reduzir efetivamente o impacto desses erros, aumentando assim a confiabilidade geral e a resiliência do fluxo de trabalho.

A Identidade da carga de trabalho do GKE não é compatível

Esse problema se aplica apenas a ambientes do Cloud Composer 1. Cloud Composer 2 de nuvem usam a Identidade da carga de trabalho.

Não é possível ativar a Identidade da carga de trabalho para clusters do ambiente do Cloud Composer. Como resultado, é possível encontrar a descoberta WORKLOAD_IDENTITY_DISABLED no Security Command Center.

Os rótulos de ambiente adicionados durante uma atualização não são totalmente propagados

Os rótulos de ambiente atualizados não são aplicados às VMs do Compute Engine. Como solução alternativa, esses rótulos podem ser aplicados manualmente.

Upgrades do GKE no contexto do problema CVE-2020-14386

Estamos trabalhando para resolver CVE-2020-14386 de vulnerabilidades em todos os ambientes do Cloud Composer. Como parte da correção, todos os clusters do GKE do Cloud Composer serão atualizados para uma versão mais recente.

Os clientes que decidirem resolver a vulnerabilidade imediatamente poderão fazer o upgrade do cluster do GKE do Composer. Basta seguir estas instruções com as considerações a seguir:

Etapa 1. Se você estiver executando uma versão do Cloud Composer anterior à 1.7.2, atualize para uma versão mais recente do Cloud Composer. Se você já tiver a versão 1.7.2 ou posterior, vá para o próximo ponto.

Etapa 2. Atualize o cluster do GKE (mestre e nós) para a versão de patch mais recente 1.15 que contém a correção da vulnerabilidade.

Os registros de tarefas do Airflow não estão disponíveis no servidor da Web do Airflow após o upgrade do Airflow 1.9.0 para o Airflow 1.10.x.

O Airflow 1.10.x introduziu mudanças incompatíveis com versões anteriores da convenção de nomenclatura para arquivos de registro. As informações de zona agora estão adicionadas aos nomes de registro das Tarefas do Airflow.

O Airflow 1.9.0 armazena e espera que os nomes dos registros estejam no seguinte formato: BUCKET/logs/DAG/2020-03-30T10:29:06/1.log O Airflow 1.10.x armazena e espera que os nomes dos registros estejam no seguinte formato: BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Como resultado, se você fizer upgrade do Airflow 1.9.0 para o Airflow 1.10.x e quiser ler o registro de uma tarefa executada com o Airflow 1.9.0, o servidor da Web do Airflow exibirá a seguinte mensagem de erro : Unable to read remote log from BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Solução alternativa: renomeie os registros gerados pelo Airflow 1.9.0 no bucket do Cloud Storage usando o formato: BUCKET/logs/DAG/2020-03-30T10:29:06+00:00/1.log

Não é possível criar ambientes do Cloud Composer com a política da organização constraints/compute.disableSerialPortLogging aplicadas.

A criação do ambiente do Cloud Composer falhará se constraints/compute.disableSerialPortLogging for aplicada ao projeto de destino.

Diagnóstico

Para determinar se você foi afetado por esse problema, siga este procedimento:

Acesse o menu do GKE em console do Google Cloud. Acesse o menu do GKE

Em seguida, selecione o cluster recém-criado. Verifique o seguinte erro:

Not all instances running in IGM after 123.45s.
Expect <number of desired instances in IGM>. Current errors:

Constraint constraints/compute.disableSerialPortLogging violated for
project <target project number>.

Alternativas:

  1. Desative a política da organização no projeto em que o ambiente do Cloud Composer será criado.

    Uma política da organização sempre pode ser desativada para envolvidos no projeto, mesmo se os recursos pai (organização ou pasta) tiverem essa política ativada. Consulte a página Como personalizar políticas de restrições booleanas para mais detalhes.

  2. Usar filtros de exclusão

    Usar um filtro de exclusão para registros de porta serial tem a mesma meta que a desativação da política organizacional, já que haverá registros do console serial no Logging. Para mais detalhes, consulte a página Filtros de exclusão.

Uso do Deployment Manager para gerenciar recursos do Google Cloud protegidos pelo VPC Service Controls

O Composer usa o Deployment Manager para criar componentes de ambientes do Cloud Composer.

Em dezembro de 2020, talvez você tenha recebido informações dizendo que precisa executar mais configurações do VPC Service Controls para poder gerenciar recursos protegidos pelo VPC Service Controls usando o Deployment Manager.

Gostaríamos de esclarecer que você não precisa fazer nada. se você usa o Composer e não usa o Deployment Manager diretamente para gerenciar os recursos do Google Cloud mencionados anúncio.

Não é possível excluir um ambiente após a exclusão do cluster do GKE

Se você excluir o cluster do ambiente antes do próprio ambiente, as tentativas de excluir o ambiente resultarão no seguinte erro:

 Got error "" during CP_DEPLOYMENT_DELETING [Rerunning Task. ]

Para excluir um ambiente quando o cluster do GKE já for excluído:

  1. Abra a página do Deployment Manager no console do Google Cloud.

    Abra a página do Deployment Manager

  2. Encontre todas as implantações marcadas com rótulos:

    • goog-composer-environment:<environment-name>
    • goog-composer-location:<environment-location>

    Você verá duas implantações marcadas com os rótulos descritos:

    • Uma implantação chamada <environment-location>-<environment-name-prefix>-<hash>-sd
    • Uma implantação chamada addons-<uuid>
  3. Exclua manualmente os recursos que ainda estão listados nessas duas implantações e existem no projeto, como tópicos e assinaturas do Pub/Sub. Para fazer isso, siga estas etapas:

    1. Selecione as implantações.

    2. Clique em Excluir.

    3. Selecione a opção Excluir 2 implantações e todos os recursos criados por elas, como VMs, balanceadores de carga e discos e clique em Excluir tudo.

    A operação de exclusão falha, mas os recursos restantes são excluídos.

  4. Exclua as implantações usando uma destas opções:

    • No console do Google Cloud, selecione as duas implantações novamente. Clique em Excluir e selecione a opção Excluir duas implantações, mas manter os recursos criados por elas.

    • Execute um comando gcloud para excluir as implantações com a política ABANDON:

      gcloud deployment-manager deployments delete addons-<uuid> \
          --delete-policy=ABANDON
      
      gcloud deployment-manager deployments delete <location>-<env-name-prefix>-<hash>-sd \
          --delete-policy=ABANDON
      
  5. Exclua o ambiente do Cloud Composer.

O Deployment Manager exibe informações sobre um recurso incompatível

O seguinte aviso pode ser exibido na guia "Deployment Manager":

The deployment uses actions, which are an unsupported feature. We recommend
that you avoid using actions.

Para as implantações do Deployment Manager de propriedade do Cloud Composer, ignore este aviso.

Avisos sobre entradas duplicadas da tarefa "echo" pertencente ao DAG "echo-airflow_monitoring"

Você talvez veja a seguinte entrada nos registros do Airflow:

in _query db.query(q) File "/opt/python3.6/lib/python3.6/site-packages/MySQLdb/
connections.py", line 280, in query _mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry
'echo-airflow_monitoring-2020-10-20 15:59:40.000000' for key 'PRIMARY'")

Ignore essas entradas de registro, porque esse erro não afeta o DAG do Airflow e o processamento de tarefas.

Estamos trabalhando para melhorar o serviço do Cloud Composer e remover esses avisos dos registros do Airflow.

A criação de ambiente falha em projetos com as APIs Identity-Aware Proxy adicionadas ao perímetro do VPC Service Controls.

Em projetos com os controles de serviço da VPC ativados, a conta cloud-airflow-prod@system.gserviceaccount.com exige acesso explícito no seu perímetro de segurança para criar ambientes.

Para criar ambientes, use uma destas soluções:

  • Não adicione a API Cloud Identity-Aware Proxy e API TCP do Identity-Aware Proxy ao perímetro de segurança.

  • Adicione a conta de serviço cloud-airflow-prod@system.gserviceaccount.com como membro do perímetro de segurança usando a seguinte configuração no arquivo de condições YAML:

     - members:
        - serviceAccount:cloud-airflow-prod@system.gserviceaccount.com
    

A criação de ambiente do Cloud Composer 1 falha quando a política compute.requireOsLogin está ativada

Se a política compute.requireOsLogin for definida como true no projeto, Falha nas operações de criação do ambiente do Cloud Composer 1 v1.

Para criar ambientes do Cloud Composer 1, desative essa política no seu projeto.

Para mais informações, consulte Restrições da política da organização.

A criação ou o upgrade do ambiente do Cloud Composer falha quando o compute.vmExternalIpAccess está desativado

Os clusters do GKE de propriedade do Cloud Composer configurados no modo IP público exigem conectividade externa para as VMs. Por isso, a política compute.vmExternalIpAccess não pode proibir a criação de VMs com endereços IP externos. Para mais informações sobre essa política organizacional, consulte Restrições da política da organização.

Falha na criação do ambiente do Cloud Composer quando a política compute.vmCanIpForward está desativada

Os ambientes do Cloud Composer 1 criados no modo não nativo de VPC (usando o IP do alias) exigem essa política para permitir a criação de VMs com o recurso "Encaminhamento de IP" ativado. Para mais informações sobre essa política organizacional, consulte Restrições da política da organização.

A primeira execução de DAG para um arquivo DAG enviado tem várias tarefas com falha

Quando você faz o upload de um arquivo DAG, às vezes as primeiras tarefas da primeira execução do DAG falham com o erro Unable to read remote log.... Esse problema ocorre porque o arquivo DAG é sincronizado entre o bucket do ambiente, os workers do Airflow e os programadores do Airflow do ambiente. Essas sincronizações são feitas de forma independente. Se o programador receber o arquivo DAG e programá-lo para ser executado por um worker, e se o worker ainda não tiver o arquivo DAG, a execução da tarefa falhará.

Como solução alternativa, os ambientes do Airflow 2 no Cloud Composer 1.17.0-preview.9 e versões posteriores são configurados para executar duas novas tentativas de uma tarefa com falha por padrão. Se uma tarefa falhar, ela será repetida duas vezes com intervalos de cinco minutos.

Para usar a solução alternativa para esse problema no Airflow 1, substituição core-default_task_retries Opção de configuração do Airflow e defini-la como um número maior ou igual a2 de dados.

A tarefa falha com "OSError: [Errno 5] erro de entrada/saída" no Airflow 1.10.15 ou versões anteriores.

Um bug nas versões do Airflow 1 faz com que as tarefas sejam colocadas na fila do Redis duas vezes em alguns casos raros.

Às vezes, pode levar a uma disputa no arquivo de registros e a uma falha de tarefa subsequente. As tarefas falham com OSError: [Errno 5] Input/output error no Cloud Logging e Task is in the 'running' state which is not a valid state for execution. no registro de tentativas da tarefa.

Esse bug foi corrigido no Airflow 2. Se encontrar esse problema no Airflow 1 em uma tarefa de longa duração, aumente o valor da opção de configuração [celery_broker_transport_options]visibility_timeout do Airflow (o valor padrão). é o 604800 para o Composer 1.17.0, 21600 para ambientes mais antigos. Para tarefas de curta duração, considere adicionar novas tentativas às tarefas afetadas ou migrar seu ambiente para o Airflow 2.

Falha nos operadores do Dataproc/Dataflow com Negsignal.SIGSEGV

Esse é um problema intermitente da biblioteca grcpio, quando usado por um worker do Celery. Esse problema afeta o Airflow 1.10.14 e versões posteriores.

A solução é alterar a estratégia de pesquisa grpcio adicionando a seguinte variável de ambiente ao seu ambiente: GRPC_POLL_STRATEGY=epoll1. Essa solução já está aplicada ao Cloud Composer 1.17.1 e versões posteriores.

Anúncios sobre a remoção do suporte para APIs Beta obsoletas das versões do GKE

O Cloud Composer gerencia clusters subjacentes do GKE do Cloud Composer. A menos que você use explicitamente essas APIs nos DAGs e no código, ignore os avisos sobre as suspensões de uso da API GKE. O Cloud Composer cuida de todas as migrações, se necessário.

Upgrades do GKE no contexto do problema de segurança CVE-2021-25741

Todos os clusters do GKE existentes do Cloud Composer serão atualizados automaticamente para as versões mais recentes do GKE com uma correção para os problemas descritos na CVE-2021-25741.

Se você quiser corrigir essa vulnerabilidade imediatamente, faça upgrade do cluster do GKE do ambiente seguindo as instruções para fazer upgrade de um cluster.

  • Se você tiver um ambiente do Cloud Composer 1 e o GKE versão 1.18.x ou anterior, faça upgrade para 1.18.20-gke.4501.

  • Se você tiver um ambiente do Cloud Composer 1 e a versão 1.19.x do GKE, faça upgrade para 1.19.14-gke.301.

  • Se você tiver um ambiente do Cloud Composer 2 e a versão 1.21.x do GKE, faça upgrade para 1.21.4-gke.301

O Cloud Composer não pode ser afetado pela vulnerabilidade do Apache Log4j 2 (CVE-2021-44228)

Em resposta à Vulnerabilidade do Apache Log4j 2 (CVE-2021-44228), o Cloud Composer realizou uma investigação detalhada e acreditamos que ele não é vulnerável a esse exploit.

Os workers ou programadores do Airflow podem ter problemas ao acessar o bucket do Cloud Storage do ambiente.

O Cloud Composer usa o gcsfuse para acessar a pasta /data na do ambiente de execução e salvar os registros de tarefas do Airflow no diretório /logs (se ativado). Se o gcsfuse estiver sobrecarregado ou se o bucket do ambiente estiver indisponível, você poderá encontrar falhas na instância da tarefa do Airflow e erros Transport endpoint is not connected nos registros do Airflow.

Soluções:

Às vezes, a interface do Airflow não recarrega um plug-in depois que ele é alterado.

Se um plug-in consistir em muitos arquivos que importam outros módulos, a interface do Airflow poderá não reconhecer que um plug-in precisa ser recarregado. Nesse caso, é necessário reiniciar o servidor da Web do Airflow. Para fazer isso, adicione uma variável de ambiente ou instale ou desinstalação de dependências de PYPI. Você também pode reiniciar o servidor da Web do Airflow.

Problemas intermitentes na comunicação com o banco de dados de metadados do Airflow

Esse problema conhecido só se aplica ao Cloud Composer 1.

Alguns ambientes mais antigos do Cloud Composer 1 (1.16.3 ou anterior) criados antes de 12 de agosto de 2021 podem ter problemas temporários relacionados à comunicação com os bancos de dados de metadados do Airflow.

Se esse problema ocorrer, você verá nos registros de tarefas do Airflow esta mensagem de erro:

"Can't connect to MySQL server on 'airflow-sqlproxy-service.default.svc.cluster.local' (104)"

A equipe do Cloud Composer trabalha para resolver esse problema. Enquanto isso, se você acredita que esse problema está afetando você, siga estas etapas para eliminá-lo:

  1. No console do Google Cloud, acesse a página Configuração do ambiente. dos ambientes do Cloud Composer afetados.
  2. Siga o link ver detalhes do cluster para acessar o cluster do GKE subjacente do ambiente.
  3. Acesse a guia Nós e clique no default-pool que aparece na seção Pools de nós.

    default-pool na lista de pools de nós
    Figura 1.default-pool na lista de pools de nós (clique para ampliar)
  4. Clique em Editar no topo da página.

  5. Mude o tipo de imagem para Container-Optimized OS com containerd e salve a configuração conforme mostrado abaixo.

    Alterar o tipo de imagem do pool de nós do Docker para o containerd
    Figura 2. Alterar o tipo de imagem do pool de nós do Docker para o containerd (clique para ampliar)
  6. Depois que a alteração for enviada, o pool de nós default-pool será reconfigurado para usar o containerd como seu ambiente de execução de contêiner. Algumas das tarefas do Airflow podem falhar durante a reconfiguração do pool de nós. Se essas tarefas tiverem novas tentativas configuradas, será executado novamente pelo Airflow quando a operação no pool de nós for concluída.

O cluster do ambiente tem cargas de trabalho no estado "Não programável"

Esse problema conhecido só se aplica ao Cloud Composer 2.

No Cloud Composer 2, depois que um ambiente é criado, várias cargas de trabalho no do ambiente de execução permanecem no estado não programável.

Quando um ambiente é escalonado, novos pods de worker são criados, e o Kubernetes tenta executá-los. Se não houver recursos disponíveis para executá-los, os pods de trabalho serão marcados como não programáveis.

Nessa situação, o escalonador automático de cluster adiciona mais nós, o que leva alguns minutos. Até que isso seja feito, os pods permanecem no estado não programável e não executam nenhuma tarefa.

Cargas de trabalho de DaemonSet não programáveis chamadas composer-gcsfuse e composer-fluentd que não são que podem ser inicializados em nós onde não há componentes do Airflow não afetam seu ambiente.

Se o problema persistir por muito tempo (mais de uma hora), verifique o cluster Registros do escalonador automático. É possível encontrá-los no visualizador de registros com o seguinte filtro:

resource.type="k8s_cluster"
logName="projects/<project-name>/logs/container.googleapis.com%2Fcluster-autoscaler-visibility"
resource.labels.cluster_name="<cluster-name>"

Ele contém informações sobre as decisões tomadas pelo escalonador automático de cluster: abra qualquer noDecisionStatus para saber por que o cluster não pode ser escalonado.

Erro 504 ao acessar a interface do Airflow

Você pode receber o erro 504 Gateway Timeout ao acessar a interface do Airflow. Esse erro pode ter várias causas:

  • Problema de comunicação temporário. Nesse caso, tente acessar a interface do Airflow mais tarde. Você também pode reinicie o servidor da Web do Airflow.
  • (Somente no Cloud Composer 2) Problema de conectividade. Se a interface do Airflow for permanentemente indisponível e erros de tempo limite ou 504 forem gerados, verifique se o pode acessar *.composer.cloud.google.com. Se você usa o Google Access privado e envia tráfego por IPs virtuais private.googleapis.com ou o VPC Service Controls e envia tráfego por IPs virtuais restricted.googleapis.com, verifique se o DNS do Cloud está configurado também para nomes de domínio *.composer.cloud.google.com.
  • O servidor da Web do Airflow não responde. Se o erro 504 persistir, mas você ainda conseguir acessar a interface do Airflow em determinados momentos, o servidor da Web do Airflow pode não responder porque está sobrecarregado. Tente aumentar os parâmetros de escala e desempenho do servidor da Web.

Erro 502 ao acessar a interface do Airflow

O erro 502 Internal server exception indica que a interface do Airflow não pode atender às solicitações recebidas. Esse erro pode ter várias causas:

  • Problema de comunicação temporário. Tente acessar a interface do Airflow mais tarde.

  • Falha ao iniciar o servidor da Web. Para começar, o servidor da Web exige que os arquivos de configuração sejam sincronizados primeiro. Verifique os registros do servidor da Web entradas de registro semelhantes a: GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp ou GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp. Se você encontrar esses erros, verifique se os arquivos foram mencionados nas mensagens de erro ainda estão presentes no bucket do ambiente.

    Em caso de remoção acidental (por exemplo, porque uma política de retenção foi configurada), é possível restaurá-los:

    1. Defina uma nova variável de ambiente. É possível usar qualquer nome e valor de variável.

    2. Substituir uma opção de configuração do Airflow. Você pode usar uma opção de configuração do Airflow que não existe.

A interface do Airflow no Airflow 2.2.3 ou versões anteriores está vulnerável ao CVE-2021-45229

Conforme apontado em CVE-2021-45229, a tela "Trigger DAG with config" era suscetível a ataques XSS pelo argumento de consulta origin.

Recomendação: faça upgrade para a versão mais recente do Cloud Composer que oferece suporte ao Airflow 2.2.5.

Os workers exigem mais memória do que nas versões anteriores do Airflow

Sintomas:

  • No ambiente do Cloud Composer 2, todas as cargas de trabalho do cluster do Airflow estão no status CrashLoopBackOff e não executam tarefas. Também é possível ver OOMKilling avisos que são gerados se você estiver afetadas por esse problema.

  • Esse problema pode impedir upgrades de ambiente.

Causa:

  • Se você usa um valor personalizado para o [celery]worker_concurrency Airflow e as definições de memória personalizadas para workers do Airflow, esse problema pode ocorrer quando o consumo de recursos se aproxima do limite.
  • Os requisitos de memória do worker do Airflow no Airflow 2.6.3 com Python 3.11 são 10% maiores em comparação com os workers em versões anteriores.
  • Os requisitos de memória do worker do Airflow no Airflow 2.3 e versões mais recentes são de 30% maior em comparação com workers no Airflow 2.2 ou no Airflow 2.1.

Soluções:

  • Remova a substituição de worker_concurrency para que o Cloud Composer calcule esse valor automaticamente.
  • Se você usar um valor personalizado para worker_concurrency, defina-o com um valor menor. Você pode usar o valor calculado automaticamente como ponto de partida.
  • Como alternativa, é possível aumentar a quantidade de memória disponível para o Airflow trabalhadores
  • Se não for possível fazer upgrade do ambiente para uma versão posterior por esse motivo, problema, aplique uma das soluções propostas antes de fazer upgrade.

Como acionar DAGs por redes privadas usando as funções do Cloud Run

O Cloud Composer não oferece suporte ao acionamento de DAGs com funções do Cloud Run por redes particulares com o uso do Conector VPC.

Recomendação: use as funções do Cloud Run para publicar mensagens no Pub/Sub. Esses eventos podem acionar sensores do Pub/Sub para acionar DAGs do Airflow ou implementar uma abordagem baseada em operadores adiáveis.

Problema com os comandos do gcloud composer na versão 410.0.0

Na versão 410.0.0 do gcloud, os seguintes comandos do Cloud Composer:

  • gcloud composer environments run
  • gcloud composer environments list-packages

retornar um código de erro diferente de zero e exibir esta mensagem de erro:

  (ERROR: gcloud crashed (TypeError): 'NoneType' object is not callable)

Esse comportamento ocorre além da saída normal produzida pelos comandos do gcloud e não afeta a funcionalidade deles.

Se esse problema não afetar suas operações, continue usando a versão 410.0.0 e ignore a mensagem de erro incorreta. Caso você precise usar a versão 410.0.0 e usar o comando gcloud de forma programática, implemente uma lógica adicional para ignorar códigos de erro diferentes de zero e informações sobre o stack trace de erro na saída. Você também pode consultar a seção "Solução" para encontrar outras soluções.

Solução

  • Não faça upgrade para a versão 410.0.0. Use a versão 409.0.0 ou anterior.
  • Se já tiver feito upgrade, faça downgrade para uma versão anterior (por exemplo, 409.0.0). Para mais informações, consulte Usar arquivos com versão.

Pastas vazias no programador e workers

O Cloud Composer não remove ativamente pastas vazias dos workers e programadores do Airflow. Essas entidades podem ser criadas como resultado do ambiente o processo de sincronização de bucket quando essas pastas já existiam no bucket e acabaram sendo removidos.

Recomendação: ajuste os DAGs para que estejam preparados para pular esses dados vazios pastas.

Em algum momento, essas entidades são removidas dos armazenamentos locais dos programadores do Airflow e workers quando esses componentes forem reiniciados (por exemplo, como resultado do escalonamento operações de manutenção ou desativação no cluster do Cloud Composer).

Suporte ao Kerberos

O Cloud Composer ainda não é compatível com a configuração do Kerberos do Airflow.

Suporte a classes de computação no Cloud Composer 2

O Cloud Composer 2 é compatível apenas com a classe de computação de uso geral. Isso significa que a execução de pods que solicitam outras classes de computação (como Equilibrada ou Escalonada horizontalmente) não é possível.

A classe de uso geral permite a execução de pods que solicitam até 110 GB de memória e até 30 CPUs, conforme descrito em Solicitações máximas de classe de computação.

Se você quiser usar uma arquitetura baseada em ARM ou precisar de mais CPU e memória, use uma classe de computação diferente, que não é aceita no clusters do Cloud Composer 2.

Recomendação: use GKEStartPodOperator para executar pods do Kubernetes em um cluster diferente que ofereça suporte à classe de computação selecionada. Se você executar pods personalizados que exigem uma classe de computação diferente, eles também precisarão ser executados em um cluster que não seja do Cloud Composer 2.

Suporte para operadores do Google Campaign Manager 360

As operadoras do Google Campaign Manager em versões do Cloud Composer anteriores à 2.1.13 são baseadas na API Campaign Manager 360 v3.5, que foi descontinuada e vai ser desativada em 1º de maio de 2023.

Se você usa operadores do Google Campaign Manager, faça upgrade do ambiente para a versão 2.1.13 ou mais recente do Cloud Composer.

Suporte para os operadores do Google Display & Video 360

Operadores do Display & Video 360 do Google nas versões do Cloud Composer anteriores à versão 2.1.13 são baseadas na API Display & Video 360 v1.1, que é descontinuado, e a data de desativação é 27 de abril de 2023.

Se você usa operadores do Google Display e do Video 360, faça upgrade do ambiente para a versão 2.1.13 ou mais recente do Cloud Composer. Além disso, talvez seja necessário alterar os DAGs porque, como alguns os operadores do Google Display & Video 360 foram descontinuados e substituídos por para criar outros novos.

  • O uso de GoogleDisplayVideo360CreateReportOperator foi descontinuado. Em vez disso, use GoogleDisplayVideo360CreateQueryOperator. Esse operador retorna query_id em vez de report_id.
  • O uso de GoogleDisplayVideo360RunReportOperator foi descontinuado. Em vez disso, use GoogleDisplayVideo360RunQueryOperator. Esse operador retorna query_id e report_id em vez de apenas report_id e requer query_id em vez de report_id como parâmetro.
  • Para verificar se um relatório está pronto, use o novo sensor GoogleDisplayVideo360RunQuerySensor que usa os parâmetros query_id e report_id. O GoogleDisplayVideo360ReportSensor descontinuado o sensor exigia apenas report_id.
  • GoogleDisplayVideo360DownloadReportV2Operator agora exige os parâmetros query_id e report_id.
  • Em GoogleDisplayVideo360DeleteReportOperator, não há mudanças que podem afetar seus DAGs.

Restrições de nome de intervalo secundário

CVE-2023-29247 (a página de detalhes da instância de tarefa na UI está vulnerável a um XSS armazenado)

A interface do Airflow nas versões 2.0.x a 2.5.x é vulnerável a CVE-2023-29247.

Se você usa uma versão anterior do Cloud Composer que a 2.4.2 e suspeita que seu ambiente esteja vulnerável ao ataque, leia a descrição a seguir e as possíveis soluções.

No Cloud Composer, o acesso à interface do Airflow é protegido com o IAM e o controle de acesso à interface do Airflow.

Isso significa que, para explorar a vulnerabilidade na interface do Airflow, os invasores primeiro precisam ter acesso ao projeto, juntamente com as informações permissões e papéis do IAM.

Solução:

  • Verifique as permissões e os papéis do IAM no seu projeto, incluindo papéis do Cloud Composer atribuídos a usuários individuais. Verifique se somente usuários aprovados podem acessar a interface do Airflow.

  • Verifique as funções atribuídas aos usuários pelo mecanismo de controle de acesso à interface do Airflow. Esse é um mecanismo separado que oferece acesso mais granular à interface do Airflow. Garanta que apenas usuários aprovados possam acessar interface do Airflow e que todos os novos usuários sejam registrados com um papel adequado.

  • Considere o aumento da proteção com o VPC Service Controls.

O DAG de monitoramento de Airflow do ambiente do Cloud Composer 2 do Composer não é recriado após a exclusão

O DAG de monitoramento do Airflow não é recriado automaticamente se for excluído pelo usuário ou movido do bucket em ambientes do Composer com o composer-2.1.4-airflow-2.4.3.

Solução:

  • Isso foi corrigido em versões posteriores, como composer-2.4.2-airflow-2.5.3. A abordagem sugerida é fazer upgrade do ambiente para uma versão mais recente.
  • Uma alternativa ou solução temporária para uma atualização de ambiente seria copiar o DAG airflow_monitoring de outro ambiente com a mesma versão.

As operações de upgrade poderão falhar se o Sentry estiver ativado

A operação de upgrade para um ambiente do Cloud Composer pode falhar se você configurou o Sentry no ambiente e definiu o [sentry]sentry_on como true.

Solução:

  • Desative o Sentry no seu ambiente, faça o upgrade e configure o Sentry novamente.

Não é possível reduzir o armazenamento do Cloud SQL

O Cloud Composer usa o Cloud SQL para executar um banco de dados do Airflow. Acima o armazenamento em disco da instância do Cloud SQL pode aumentar porque é escalonado verticalmente de acordo com os dados armazenados pelas operações do Cloud SQL quando O banco de dados do Airflow cresce.

Não é possível reduzir o tamanho do disco do Cloud SQL.

Como alternativa, se você quiser usar o menor disco do Cloud SQL é possível recriar os ambientes do Cloud Composer com snapshots.

A métrica de uso do disco do banco de dados não diminui após a remoção de registros do Cloud SQL

Os bancos de dados relacionais, como o Postgres ou o MySQL, não removem linhas fisicamente ao eles são excluídos ou atualizados. Em vez disso, ele as marca como "tuplas inválidas" para manter a consistência dos dados e evitar o bloqueio de transações simultâneas.

O MySQL e o Postgres implementam mecanismos de recuperação de espaço após a exclusão de registros.

Embora seja possível forçar o banco de dados a recuperar o espaço em disco não utilizado, essa é uma operação que consome recursos e, além disso, bloqueia o banco de dados, o que torna o Cloud Composer indisponível. Portanto, é recomendável usar os mecanismos de criação para recuperar o espaço não utilizado.

Acesso bloqueado: erro de autorização

Se esse problema afetar um usuário, a caixa de diálogo Acesso bloqueado: erro de autorização vai conter a mensagem Error 400: admin_policy_enforced.

Se Controles de API &gt; Apps de terceiros não configurados aparecer, &gt; Não permitir que os usuários acessem aplicativos de terceiros é ativados no Google Workspace e no Apache Airflow no O app Cloud Composer não é permitido explicitamente, e os usuários não podem acessar a interface do Airflow, a menos que permita explicitamente o aplicativo.

Para permitir o acesso, siga as etapas fornecidas em Permitir o acesso à interface do Airflow no Google Workspace.

As instâncias de tarefas bem-sucedidas no passado foram marcadas como "FALHADAS"

Em algumas circunstâncias e cenários raros, instâncias de tarefas do Airflow que funcionaram no passado podem ser marcadas como FAILED.

Se isso acontecer, geralmente foi acionado por uma atualização do ambiente ou por operação de upgrade ou manutenção do GKE.

Observação: o problema em si não indica nenhum problema no ambiente e não causa falhas reais na execução de tarefas.

O problema foi corrigido no Cloud Composer versão 2.6.5 ou posterior.

Os componentes do Airflow têm problemas ao se comunicar com outras partes da configuração do Cloud Composer

Em casos muito raros, a lentidão da comunicação com o Compute Engine O servidor de metadados pode fazer com que os componentes do Airflow não funcionem de maneira ideal. Por exemplo, o programador do Airflow pode ser reiniciado, as tarefas do Airflow podem precisar ser tentadas novamente ou o tempo de inicialização da tarefa pode ser mais longo.

Sintomas:

Os seguintes erros aparecem nos registros dos componentes do Airflow, como programadores, workers ou o servidor da Web:

Authentication failed using Compute Engine authentication due to unavailable metadata server

Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out

Solução:

Defina a seguinte variável de ambiente: GCE_METADATA_TIMEOUT=30.

A pasta /data não está disponível no servidor da Web do Airflow

No Cloud Composer 2, o servidor da Web do Airflow é, na maioria, somente leitura e o Cloud Composer não sincronizará a pasta data/. a esse componente.

Às vezes, você pode querer compartilhar arquivos comuns entre todos os componentes do Airflow, incluindo o servidor da Web do Airflow.

Solução:

  • Una os arquivos a serem compartilhados com o servidor da Web em um módulo PYPI e instalá-lo como um pacote PYPI normal. Depois que o módulo PYPI for instalado no ambiente, os arquivos são adicionados às imagens do Airflow componentes e estão disponíveis para eles.

  • Adicione arquivos à pasta plugins/. Essa pasta é sincronizada com o servidor da Web do Airflow.

Tempos de análise de DAG não contínuos e diagramas de tamanho de pacotes de DAG no monitoramento

Tempos de análise de DAG não contínuos e diagramas de tamanho do pacote de DAG no painel de monitoramento indicam problemas com tempos de análise de DAG longos (mais de cinco minutos).

Tempos de análise do DAG do Airflow e gráficos do tamanho do pacote do DAG mostrando uma série de intervalos não contínuos
Figura 3. Tempos de análise de DAG não contínuos e gráficos de tamanho do repositório do DAG (clique para ampliar)

Solução: recomendamos manter o tempo total de análise do DAG abaixo de 5 minutos. Para reduzir o DAG de análise, siga as diretrizes de criação de DAGs.

Os registros de tarefas aparecem com atrasos

Esse problema conhecido se aplica ao Cloud Composer 3.

Sintoma:

  • No Cloud Composer 3, os registros de tarefas do Airflow não aparecem imediatamente e são atrasados por alguns minutos.

Causa:

Caso seu ambiente execute um grande número de tarefas ao mesmo tempo, os registros de tarefas podem ser atrasados porque o tamanho da infraestrutura do ambiente não é suficiente para processar todos os registros com rapidez suficiente.

Soluções:

  • Considere aumentar o tamanho da infraestrutura do ambiente para melhorar a performance.
  • Distribua as execuções de DAG ao longo do tempo para que as tarefas não sejam executadas ao mesmo tempo.

A seguir