トラブルシューティングとサポート
ここでは、CircleCI Server v4.x で問題が発生した場合の最初のトラブルシューティング手順について説明します。 以下の説明で問題を解決できなかった場合は、サポートバンドルを生成するか、CircleCI アカウント チームにお問い合わせください。
サポートバンドルの生成
サポートバンドルは、発生している問題を CircleCI エンジニアが診断、修正するためのものです。 通常、サポートチケットを作成する場合、サポートバンドルを提出するように求められます。
サポート バンドルを生成するには、以下の手順に従います。
前提条件
-
まず、circleci-server がデプロイされており、kubectl によりクラスタ/名前空間にアクセスできることを確認します。
# To check if you have access to cluster/namespace
kubectl -n <namespace> get pods
-
次に、 krew をインストールします。
-
ローカルの開発マシンに support-bundle (kubectl プラグイン) をインストールします。
# To install support-bundle plugin
kubectl krew install support-bundle
サポートバンドルの生成
準備が整ったら、現在のディレクトリからサポートバンドルを実行し、処理の完了を待ちます。
kubectl support-bundle https://raw.githubusercontent.com/CircleCI-Public/server-scripts/main/support/support-bundle.yaml
Pod の管理
Pod の準備状況とステータスの確認
READY 列と STATUS 列を確認してください。 STATUS が Running でも、Pod ではユーザーのリクエストを処理する準備はできていません。 一部の Pod は、準備ができるまで多少の時間を要する場合があります。 |
kubectl get pods -n <namespace>
NAME READY STATUS RESTARTS AGE
api-service-5c8f557548-zjbsj 1/1 Running 0 6d20h
audit-log-service-77c478f9d5-5dfzv 1/1 Running 0 6d20h
builds-service-v1-5f8568c7f5-62h8n 1/1 Running 0 6d20h
circleci-mongodb-0 1/1 Running 0 6d20h
circleci-nomad-0 1/1 Running 6 6d20h
…
ステータスが Running
以外の Pod だけを表示するには、--field-selector
オプションを使用します。
kubectl get pods --field-selector status.phase!=Running -n <namespace>
NAME READY STATUS RESTARTS AGE
nomad-server 0/1 Error 0 5d22h
Pod の設定とステータスの確認
Pod の詳細な設定とステータスを確認するには、以下のコマンドを実行します。
kubectl describe pods <pod-name> -n <namespace>
Pod のログの取得
Pod のログを表示するには、以下のコマンドを実行します。
kubectl logs <pod-name> -n <namespace>
Pod の再起動
特定の Pod を再起動する最も簡単な方法は、その Pod を削除することです。 削除した Pod は、Kubernetes によって自動的に再作成されます。
kubectl delete pod <pod-name> -n <namespace> --now
エアギャップのある環境でREPLを活用する
air-gapped 環境の場合、まず lein
REPLの依存関係をダウンロードし、コミットして、プライベートDockerレジストリにアップロードする必要があります。
docker run -it clojure lein repl :connect 6005
docker commit $(docker ps -aq | head -1) <your-private-registry>/clojure
これで、REPLにアクセスする準備が整いました。 プライベート Docker レジストリにアクセスでき、クラスタに kubectl`アクセスできるシステムから、以下のスクリプトを実行します。 `circleci-server
でない場合は、必ず自分の名前空間に合わせて修正してください。
SVC_NAME=frontend
INET_ADDR="$(ip -4 route get 192.0.2.1 | grep -o 'src [0-9.]\{1,\}' | awk '{ print $2 }')"
# Start port-forwarding in background
kubectl port-forward "$(kubectl get po -l app="${SVC_NAME}" -n circleci-server -o jsonpath='{.items[0].metadata.name}')" --address "${INET_ADDR}" 6005 -n circleci-server &
# Start nREPL
sudo docker run --rm -it clojure lein repl :connect "${INET_ADDR}":6005
# End port-forwarding
kill $!
同時実行の制限を無効にします
もしあなたの組織がハードコードされた同時実行数の制限にぶつかっているのであれば、`values.yaml`で以下のように設定することで、この制限を無効にすることができます。
distributor_dispatcher:
...
disable_concurrency: false
ドキュメントの改善にご協力ください
このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。
- このページの編集をご提案ください (最初に「コントリビューションガイド」をご覧ください)。
- ドキュメントの問題点を報告する、またはフィードバックやコメントを送信するには、GitHub で issue を作成してください。
- CircleCI は、ユーザーの皆様の弊社プラットフォームにおけるエクスペリエンスを向上させる方法を常に模索しています。 フィードバックをお寄せいただける場合は、リサーチコミュニティにご参加ください。
サポートが必要ですか
CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。
または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.