日志记录
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 服务器。
如果您配置了代理,或者使用自动注入的 sidecar 代理(例如 Istio),请确保它已配置为允许来自控制器容器(管理器)到 Kubernetes API 服务器的流量。
如果您安装了自动缩放运行器集,但监听器 Pod 未创建,请验证您提供的 githubConfigSecret
是否正确,以及您提供的 githubConfigUrl
是否准确。有关更多信息,请参阅“对 GitHub API 进行身份验证”和“使用 Actions Runner Controller 部署运行器规模集”。
取消工作流运行后会重新创建运行器 Pod
取消工作流运行后,会发生以下事件。
- 取消信号直接发送到运行器。
- 运行器应用程序终止,这也终止了运行器 Pod。
- 在下次轮询时,监听器会收到取消信号。
运行器收到信号和监听器收到信号之间可能会有轻微的延迟。当运行器 Pod 开始终止时,监听器会尝试启动新的运行器以匹配其状态中所需的运行器数量。但是,当监听器收到取消信号时,它将采取措施减少运行器数量。最终,监听器将缩减到所需的运行器数量。在此期间,您可能会看到额外的运行器。
错误:名称必须最多包含 n 个字符
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
错误:拒绝访问路径 /home/runner/_work/_tool
如果您使用的是带有持久卷的 Kubernetes 模式,则可能会看到此错误。如果运行器容器以非 root 用户身份运行,并且导致与挂载的卷发生权限不匹配,则会发生此错误。
要解决此问题,您可以执行以下操作之一。
-
使用支持
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"]
法律声明
部分内容已从 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.