日志记录
Actions 运行器控制器 (ARC) 资源(包括控制器、侦听器和运行器)将日志写入标准输出 (stdout
)。我们建议您实现日志记录解决方案来收集和存储这些日志。拥有可用的日志可以帮助您或 GitHub 支持人员进行故障排除和调试。有关更多信息,请参阅 Kubernetes 文档中的日志记录架构。
资源标签
标签会添加到 Actions 运行器控制器创建的资源中,其中包括控制器、侦听器和运行器 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 运行器控制器部署运行器规模集”。
取消工作流运行后重新创建运行器 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"]
法律声明
部分内容已根据 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.