{"meta":{"title":"Solução de problemas dos erros do Actions Runner Controller","intro":"Saiba como solucionar problemas de erros do Actions Runner Controller.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/actions","title":"GitHub Actions"},{"href":"/pt/actions/tutorials","title":"Tutoriais"},{"href":"/pt/actions/tutorials/use-actions-runner-controller","title":"Controlador de Ações Runner"},{"href":"/pt/actions/tutorials/use-actions-runner-controller/troubleshoot","title":"Solucionar problemas"}],"documentType":"article"},"body":"# Solução de problemas dos erros do Actions Runner Controller\n\nSaiba como solucionar problemas de erros do Actions Runner Controller.\n\n## Registro\n\nOs recursos do Actions Runner Controller (ARC), que incluem o controlador, o ouvinte e os executores, gravam logs na saída padrão (`stdout`). Recomendamos que você implemente uma solução de logging para coletar e armazenar esses logs. Ter logs disponíveis pode ajudar você ou o suporte do GitHub com solução de problemas e depuração. Para obter mais informações, confira [Arquitetura de Registro em Log](https://kubernetes.io/docs/concepts/cluster-administration/logging/) na documentação do Kubernetes.\n\n## Rótulos de recursos\n\nOs rótulos são adicionados aos recursos criados por Actions Runner Controller, que incluem os pods de controlador, ouvinte e executor. Você pode usar esses rótulos para filtrar recursos e ajudar na solução de problemas.\n\n### Pod do controlador\n\nOs seguintes rótulos são aplicados ao pod do controlador.\n\n```yaml\napp.kubernetes.io/component=controller-manager\napp.kubernetes.io/instance=<controller installation name>\napp.kubernetes.io/name=gha-runner-scale-set-controller\napp.kubernetes.io/part-of=gha-runner-scale-set-controller\napp.kubernetes.io/version=<chart version>\n```\n\n### Pod do ouvinte\n\nOs rótulos a seguir são aplicados aos pods do ouvinte.\n\n```yaml\nactions.github.com/enterprise= # Will be populated if githubConfigUrl is an enterprise URL\nactions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL\nactions.github.com/repository= # Will be populated if githubConfigUrl is a repository URL\nactions.github.com/scale-set-name= # Runners scale set name\nactions.github.com/scale-set-namespace= # Runners namespace\napp.kubernetes.io/component=runner-scale-set-listener\napp.kubernetes.io/part-of=gha-runner-scale-set\napp.kubernetes.io/version= # Chart version\n```\n\n### Pod do executor\n\nOs rótulos a seguir são aplicados aos runner pods.\n\n```yaml\nactions-ephemeral-runner= # True | False\nactions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL\nactions.github.com/scale-set-name= # Runners scale set name\nactions.github.com/scale-set-namespace= # Runners namespace\napp.kubernetes.io/component=runner\napp.kubernetes.io/part-of=gha-runner-scale-set\napp.kubernetes.io/version= # Chart version\n```\n\n## Verificar os logs do ouvinte do conjunto de executores e controlador\n\nPara verificar os logs do pod do controlador, você poderá usar o comando a seguir.\n\n```bash copy\nkubectl logs -n <CONTROLLER_NAMESPACE> -l app.kubernetes.io/name=gha-runner-scale-set-controller\n```\n\nPara verificar os logs do ouvinte do conjunto de executores, você poderá usar o comando a seguir.\n\n```bash copy\nkubectl logs -n <CONTROLLER_NAMESPACE> -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set\n```\n\n## Usando os gráficos do branch `master`\n\nRecomendamos que você use os gráficos da versão mais recente em vez do branch `master`. O branch `master` é altamente instável e não podemos garantir que os gráficos no branch `master` funcionarão em um determinado momento.\n\n## Solução de problemas do pod do ouvinte\n\nSe o pod do controlador estiver em execução, mas o pod do ouvinte não estiver, inspecione os logs do controlador primeiro e confira se há erros. Se não houver erros e o pod do ouvinte do conjunto de executores ainda não estiver em execução, verifique se o pod do controlador tem acesso ao servidor da API do Kubernetes em seu cluster.\n\nSe você tiver um proxy configurado ou estiver usando um proxy sidecar injetado automaticamente, como o [Istio](https://istio.io/), verifique se ele está configurado para permitir o tráfego do contêiner de controle (gerenciador) para o servidor de API do Kubernetes.\n\nSe você instalou o conjunto de executores de dimensionamento automático, mas o pod do ouvinte não foi criado, verifique se o `githubConfigSecret` fornecido está correto e se o `githubConfigUrl` fornecido é preciso. Confira [Autenticando o ARC na API de GitHub](/pt/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api) e [Como implantar conjuntos de dimensionamento de executores com o Actions Runner Controller](/pt/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller) para saber mais.\n\n## Os pods do executor são recriados após uma execução de fluxo de trabalho cancelada\n\nDepois que uma execução de fluxo de trabalho é cancelada, os eventos a seguir acontecem.\n\n* O sinal de cancelamento é enviado diretamente aos executores.\n* O aplicativo do executor é encerrado, o que também encerra os pods do executor.\n* No próximo poll, o sinal de cancelamento é recebido pelo ouvinte.\n\nPoderá haver um pequeno atraso entre quando os executores recebem o sinal e quando o ouvinte recebe o sinal. Quando os pods do executor começam a terminar, o ouvinte tenta trazer novos executores para corresponder ao número desejado de executores de acordo com o estado em que está. No entanto, quando o ouvinte receber o sinal de cancelamento, ele atuará para reduzir o número de executores. Eventualmente, o ouvinte reduzirá verticalmente para o número desejado de executores. Enquanto isso, você pode conferir executores adicionais.\n\n## Erro: `Name must have up to n characters`\n\nO ARC usa os nomes gerados de determinados recursos como rótulos para outros recursos. Devido a esse requisito, o ARC limita os nomes de recursos para 63 caracteres.\n\nComo parte do nome do recurso é definida por você, o ARC impõe um limite no número de caracteres que você pode usar para o nome da instalação e o namespace.\n\n```bash\nError: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:5:5): Name must have up to 45 characters\n\nError: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:8:5): Namespace must have up to 63 characters\n```\n\n## Erro: `Access to the path /home/runner/_work/_tool is denied`\n\nVocê poderá ver esse erro se estiver usando o modo Kubernetes com volumes persistentes. Este erro ocorre se o contêiner runner estiver em execução com um usuário não raiz e estiver causando uma incompatibilidade de permissões com o volume montado.\n\nPara corrigir isso, utilize uma das opções a seguir.\n\n* Use um tipo de volume que dê suporte a `securityContext.fsGroup`. Os volumes `hostPath` não dão suporte a essa propriedade, enquanto os volumes `local` e outros tipos de volumes a dão suporte. Atualize o `fsGroup` do pod do executor para corresponder ao GID do executor. Você pode fazer isso atualizando os valores do gráfico helm `gha-runner-scale-set` para incluir as informações abaixo. Substitua `VERSION` pela versão da imagem de contêiner `actions-runner` que você deseja usar.\n\n  ```yaml copy\n  template:\n    spec:\n      securityContext:\n        fsGroup: 123\n      containers:\n        - name: runner\n          image: ghcr.io/actions/actions-runner:latest\n          command: [\"/home/runner/run.sh\"]\n  ```\n\n* Se atualizar o `securityContext` do pod do executor não for uma solução viável, você poderá resolver o problema usando `initContainers` para alterar a propriedade do volume montado, como indicado abaixo.\n\n  ```yaml copy\n  template:\n    spec:\n      initContainers:\n        - name: kube-init\n          image: ghcr.io/actions/actions-runner:latest\n          command: [\"sudo\", \"chown\", \"-R\", \"1001:123\", \"/home/runner/_work\"]\n      volumeMounts:\n        - name: work\n          mountPath: /home/runner/_work\n      containers:\n        - name: runner\n          image: ghcr.io/actions/actions-runner:latest\n          command: [\"/home/runner/run.sh\"]\n  ```\n\n## Erro: `failed to get access token for GitHub App auth: 401 Unauthorized`\n\nUm erro `401 Unauthorized` ao tentar obter um token de acesso para um GitHub App pode ser resultado de um desvio do Protocolo de Tempo de Rede (NTP). Verifique se o sistema Kubernetes está sincronizando com precisão com um servidor do NTP e se não há um descompasso de tempo significativo. Há mais margem de manobra se o horário do sistema estiver atrasado no horário do GitHub, mas se o ambiente estiver mais de alguns segundos à frente, ocorrerão erros 401 ao usar o GitHub App.\n\n## Limites do grupo de executores\n\nVocê pode ter no máximo 10.000 executores auto-hospedados em um grupo de executores. Se esse limite for atingido, não será possível adicionar um novo executor.\n\n## Atualizações do executor\n\n> \\[!WARNING] Todas as atualizações lançadas para o software, incluindo versões principais, secundárias ou de patch, são consideradas como uma atualização disponível. Se você não executar uma atualização de software em 30 dias, o serviço do GitHub Actions não colocará trabalhos na fila para o seu executor. Além disso, se uma atualização crítica de segurança for necessária, o serviço de GitHub Actions não colocará os trabalhos na fila do seu executor até que ele seja atualizado.\n\nValide se a versão do software executor e/ou as imagens de executores personalizados em uso estão rodando a versão mais recente.\n\nPara saber mais, confira [Referência de executores auto-hospedados](/pt/actions/reference/runners/self-hosted-runners).\n\n## Aviso legal\n\nPartes foram adaptadas do <https://github.com/actions/actions-runner-controller/> de acordo com a licença Apache-2.0:\n\n```text\nCopyright 2019 Moto Ishizawa\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```"}