Ведение журнала
Ресурсы Actions Runner Controller (ARC), которые включают контроллер, прослушиватель и средства выполнения, записывают журналы в стандартные выходные данные (stdout
). Мы рекомендуем реализовать решение для ведения журнала для сбора и хранения этих журналов. Наличие журналов может помочь вам или поддержке GitHub с устранением неполадок и отладкой. Дополнительные сведения см. в разделе "Архитектура ведения журнала" в документации по Kubernetes.
Метки ресурсов
Метки добавляются в ресурсы, созданные Actions Runner Controller, которые включают контроллер, прослушиватель и модули pod runner. Эти метки можно использовать для фильтрации ресурсов и устранения неполадок.
Модуль pod контроллера
К модулем pod контроллера применяются следующие метки.
app.kubernetes.io/component=controller-manager
app.kubernetes.io/instance=<controller installation name>
app.kubernetes.io/name=gha-runner-scale-set-controller
app.kubernetes.io/part-of=gha-runner-scale-set-controller
app.kubernetes.io/version=<chart version>
Модуль pod прослушивателя
Следующие метки применяются к модулям pod прослушивателя.
actions.github.com/enterprise= # Will be populated if githubConfigUrl is an enterprise URL
actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
actions.github.com/repository= # Will be populated if githubConfigUrl is a repository URL
actions.github.com/scale-set-name= # Runners scale set name
actions.github.com/scale-set-namespace= # Runners namespace
app.kubernetes.io/component=runner-scale-set-listener
app.kubernetes.io/part-of=gha-runner-scale-set
app.kubernetes.io/version= # Chart version
Модуль pod Runner
Следующие метки применяются к модулям pod runner.
actions-ephemeral-runner= # True | False
actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
actions.github.com/scale-set-name= # Runners scale set name
actions.github.com/scale-set-namespace= # Runners namespace
app.kubernetes.io/component=runner
app.kubernetes.io/part-of=gha-runner-scale-set
app.kubernetes.io/version= # Chart version
Проверка журналов контроллера и прослушивателя набора runner
Чтобы проверить журналы модуля pod контроллера, воспользуйтесь следующей командой.
kubectl logs -n <CONTROLLER_NAMESPACE> -l app.kubernetes.io/name=gha-runner-scale-set-controller
kubectl logs -n <CONTROLLER_NAMESPACE> -l app.kubernetes.io/name=gha-runner-scale-set-controller
Чтобы проверить журналы прослушивателя набора runner, воспользуйтесь следующей командой.
kubectl logs -n <CONTROLLER_NAMESPACE> -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set
kubectl logs -n <CONTROLLER_NAMESPACE> -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set
Использование диаграмм из master
ветви
Мы рекомендуем использовать диаграммы из последнего выпуска вместо master
ветви. Ветвь master
очень неустойчива, и мы не можем гарантировать, что диаграммы в master
ветви будут работать в любое время.
Устранение неполадок с модулем pod прослушивателя
Если модуль pod контроллера запущен, но модуль прослушивателя отсутствует, сначала проверьте журналы контроллера и проверьте наличие ошибок. Если нет ошибок, и модуль pod прослушивателя набора прослушивателя по-прежнему не запущен, убедитесь, что модуль pod контроллера имеет доступ к серверу API Kubernetes в кластере.
Если у вас настроен прокси-сервер или вы используете прокси-сервер на стороне, который автоматически внедряется, например Istio, убедитесь, что он настроен для разрешения трафика из контейнера контроллера (диспетчера) на сервер API Kubernetes.
Если вы установили набор runner автомасштабирования, но модуль pod прослушивателя не создан, убедитесь, что githubConfigSecret
предоставлено правильное значение, и что githubConfigUrl
предоставленный объект является точным. Дополнительные сведения см. в разделе [AUTOTITLE и Проверка подлинности в API GitHub](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
Модули pod runner повторно создаются после отмены выполнения рабочего процесса
После отмены выполнения рабочего процесса происходят следующие события.
- Сигнал отмены отправляется непосредственно в бегуну.
- Приложение runner завершает работу, которое также завершает модули pod runner.
- На следующем опросе сигнал отмены получается прослушивателем.
Может возникнуть небольшая задержка между тем, когда бегуники получают сигнал и когда прослушиватель получает сигнал. Когда модули pod runner начинают завершать, прослушиватель пытается привлечь новых бегунов, чтобы соответствовать требуемому количеству бегунов в соответствии с состоянием, в котором он находится. Тем не менее, когда прослушиватель получает сигнал отмены, он будет действовать, чтобы уменьшить количество бегунов. В конечном итоге прослушиватель будет масштабироваться до требуемого количества бегуни. В то же время вы можете увидеть дополнительных бегунов.
Ошибка: Name must have up to n characters
Arc использует созданные имена определенных ресурсов в качестве меток для других ресурсов. Из-за этого требования ARC ограничивает имена ресурсов 63 символами.
Так как часть имени ресурса определена вами, ARC накладывает ограничение на количество символов, которые можно использовать для имени установки и пространства имен.
Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:5:5): Name must have up to 45 characters
Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:8:5): Namespace must have up to 63 characters
Ошибка: Access to the path /home/runner/_work/_tool is denied
Эта ошибка может появить, если вы используете режим Kubernetes с постоянными томами. Эта ошибка возникает, если контейнер runner работает с пользователем, не корневым пользователем, и вызывает несоответствие разрешений с подключенным томом.
Чтобы устранить эту проблему, можно выполнить одно из следующих действий.
-
Используйте тип тома, поддерживающий
securityContext.fsGroup
.hostPath
тома не поддерживают это свойство, в то время какlocal
тома и другие типы томов поддерживают его.fsGroup
Обновите модуль pod runner, чтобы он соответствовал GID бегуна. Это можно сделать, обновивgha-runner-scale-set
значения диаграммы helm, чтобы включить следующие значения. ЗаменитеVERSION
версиюactions-runner
образа контейнера, который вы хотите использовать.YAML spec: securityContext: fsGroup: 123 containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
spec: securityContext: fsGroup: 123 containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
-
Если обновление
securityContext
модуля pod runner не является жизнеспособным решением, вы можете обойти проблему с помощьюinitContainers
изменения владельца подключенного тома, как показано ниже.YAML template: spec: initContainers: - name: kube-init image: ghcr.io/actions/actions-runner:latest command: ["sudo", "chown", "-R", "1001:123", "/home/runner/_work"] volumeMounts: - name: work mountPath: /home/runner/_work containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
template: spec: initContainers: - name: kube-init image: ghcr.io/actions/actions-runner:latest command: ["sudo", "chown", "-R", "1001:123", "/home/runner/_work"] volumeMounts: - name: work mountPath: /home/runner/_work containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
Юридическая информация
Части были адаптированы в соответствии с https://github.com/actions/actions-runner-controller/ лицензией Apache-2.0:
Copyright 2019 Moto Ishizawa
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.