Logging
Actions Runner Controller (ARC) 资源(包括控制器、侦听器和运行器)将日志写入标准输出 (stdout
)。 我们建议实施日志记录解决方案来收集和存储这些日志。 日志有助于你或 GitHub 支持进行故障排除和调试。 有关详细信息,请参阅 Kubernetes 文档中的日志记录体系结构。
资源标签
Actions Runner Controller 创建的资源将添加标签,包括控制器、侦听器和运行器 Pod。 可以使用这些标签来筛选资源并帮助进行故障排除。
控制器 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
以下标签适用于运行器 Pod。
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
查看控制器和运行器集侦听器的日志
若要查看控制器 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
若要查看运行器集侦听器的日志,可以使用以下命令。
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 仍未运行,请确保控制器 Pod 有权访问群集中的 Kubernetes API 服务器。
如果你配置了代理,或者使用的是自动注入的挎斗代理(如 Istio),请确保将它配置为允许流量从控制器容器(管理器)传输到 Kubernetes API 服务器。
如果已安装自动缩放运行器集,但未创建侦听器 Pod,请验证你提供的 githubConfigSecret
是否正确,以及提供的 githubConfigUrl
是否准确。 有关详细信息,请参阅“向 GitHub API 进行身份验证”和“使用 Actions Runner Controller 部署运行器规模集”。
取消工作流运行后,重新创建了运行器 Pod
取消工作流运行后,会发生以下事件。
- 取消信号直接发送到运行器。
- 运行器应用程序终止,这也将导致运行器 Pod 终止。
- 在下次轮询中,侦听器会收到取消信号。
在运行器收到信号与侦听器收到信号之间可能会有一点延迟。 当运行器 Pod 开始终止时,侦听器会尝试启动新的运行器,根据它所处的状态来匹配所需的运行器数量。 但是,当侦听器收到取消信号时,它将采取行动,减少运行器的数量。 最终,侦听器将缩减到所需的运行器数量。 在此期间,你可能会看到额外的运行器。
错误: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 模式用于永久卷,可能会看到此错误。 如果运行器容器与非根用户一起运行,并且导致权限与装载的卷不匹配,就会发生此错误。
要解决此问题,可以执行以下操作之一。
-
使用支持
securityContext.fsGroup
的卷类型。hostPath
卷不支持此属性,而local
卷和其他类型的卷支持此属性。 更新运行器 Pod 的fsGroup
以匹配运行器的 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"]
-
如果更新运行器 Pod 的
securityContext
不是可行的解决方案,可以使用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"]
法律通告
部分内容改编自 Apache-2.0 许可证下的 https://github.com/actions/actions-runner-controller/ :
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.