ログの記録
コントローラー、リスナー、ランナーを含む Actions Runner Controller (ARC) リソースは、標準出力 (stdout
) にログを書き込みます。 これらのログを収集して格納するためのログ ソリューションを実装することをお勧めします。 ログを利用可能にすると、ユーザーや GitHub サポートがトラブルシューティングとデバッグを行うのに役立つ可能性があります。 詳細については、Kubernetes のドキュメントの「Logging Architecture (ロギングのアーキテクチャ)」を参照してください。
リソース ラベル
ラベルは、コントローラー、リスナー、ランナー ポッドを含む Actions Runner Controller によって作成されたリソースに追加されます。 これらのラベルを使用して、リソースをフィルター処理し、トラブルシューティングに役立てることができます。
コントローラー ポッド
コントローラー ポッドには、次のラベルが適用されます。
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>
リスナー ポッド
リスナー ポッドには、次のラベルが適用されます。
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
ランナー ポッド
ランナー ポッドには、次のラベルが適用されます。
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
コントローラーとランナー セット リスナーのログの確認
コントローラー ポッドのログを確認するには、次のコマンドを使用します。
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
ブランチ内のグラフが特定の時点で動作することは保証できません。
リスナー ポッドのトラブルシューティング
コントローラー ポッドが実行されているのにリスナー ポッドが実行されない場合は、まずコントローラーのログを調べて、エラーがあるかどうかを確認します。 エラーがないのにランナー セット リスナー ポッドが実行されない場合は、コントローラー ポッドがクラスター内の Kubernetes API サーバーにアクセスできることを確認します。
プロキシが構成されているか、Istio などの自動的に挿入されるサイドカー プロキシを使用している場合は、コントローラー コンテナー (マネージャー) から Kubernetes API サーバーへのトラフィックを許可するように構成されていることを確認します。
自動スケーリング ランナー セットをインストールしたのにリスナー ポッドが作成されていない場合は、指定した githubConfigSecret
が正しいことと、指定した githubConfigUrl
が正確であることを確認します。 詳細については、「GitHub API に対する認証を行う」と「アクション ランナー コントローラーを使用してランナー スケール セットをデプロイする」を参照してください。
取り消されたワークフロー実行後にランナー ポッドが再び作成される
ワークフローの実行が取り消されると、次のイベントが発生します。
- 取り消しシグナルがランナーに直接送信されます。
- ランナー アプリケーションが終了し、ランナー ポッドも終了します。
- 次のポーリング時に、取り消しシグナルがリスナーによって受信されます。
ランナーがシグナルを受信してからリスナーがシグナルを受信するまでに若干の遅延が発生する可能性があります。 ランナー ポッドの終了が開始されると、リスナーは、その状態に応じて、必要なランナー数と一致するように新しいランナーの起動を試みます。 ただしリスナーは、取り消しシグナルを受信すると、ランナーの数を減らすように動作します。 最終的に、リスナーは目的のランナー数までスケール ダウンします。 それまでの間は、余分なランナーが表示される可能性があります。
エラー: 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
ボリュームやその他の種類のボリュームではサポートされます。 ランナー ポッドの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"]
-
ランナー ポッドの
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.