Skip to content

docs(BOXP-176): INC-5 post-incident — shanghai-3 ハング原因調査と再発防止 - #774

Open
boxp wants to merge 6 commits into
mainfrom
codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0
Open

docs(BOXP-176): INC-5 post-incident — shanghai-3 ハング原因調査と再発防止#774
boxp wants to merge 6 commits into
mainfrom
codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0

Conversation

@boxp

@boxp boxp commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Summary

2026-08-19 02:10-11:30 UTC に発生した `shanghai-3` control-plane 到達不能(INC-5)の post-incident analysis をドキュメントに記録する。

  • `docs/project_docs/BOXP-176/plan.md` 新規作成: 調査タイムライン、根本原因仮説、再発防止策の状況
  • `docs/project_docs/shanghai-node-resilience/plan.md` 更新: INC-5 の再発を追記

調査結果のまとめ

観測事実:

  • shanghai-3 が約 9 時間 NotReady (02:10-11:30 UTC)、SSH "No route to host"
  • etcd は 2/3 member で quorum 維持、Kubernetes API は VIP 経由で正常
  • 物理再起動で完全復旧 (SD カード交換不要)
  • 前回 boot の journal 消失 (SD カード I/O 障害によりjournaldバッファがdisk flushされる前にクラッシュした可能性)

根本原因仮説: docs/project_docs/shanghai-node-resilience/plan.md に記録された microSD I/O 破綻によるカーネルハードハングと同一パターン(確定不能)。

再発防止策の適用状況:

  • A (watchdog) / B (armbian-ramlog無効化 + journal永続化) / D1 / D2 は実装済み
  • D3 (etcd metrics URL): メトリクスURL設定は実装済みだが、アクセス制御 (2381/TCP) は未実施 (BOXP-177 で追跡)

watchdog が効かなかった原因候補: 電源断またはハードウェア障害(watchdog はソフトウェアフリーズには有効だが電源断には無効)。

未完了の課題

  • B (journal永続化) の実効性確認 — CI apply 成功だが次回クラッシュ時に実際にログが残るかは未確認
  • D3 アクセス制御 — etcd metrics エンドポイント (0.0.0.0:2381) のホスト側フィルタリングが未実装 (BOXP-177 でトラッキング)
  • C (etcd を USB SSD へ移行) — 長期的な恒久対策(別途チケット化)

Test plan

  • ドキュメントのみの変更。Kubernetes リソースの変更なし。
  • kustomize build に影響なし(docs/ ディレクトリのみ)。

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

変更されたアプリケーションはありません

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

変更されたアプリケーションはありません

@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch 2 times, most recently from b6bf9c2 to e866fef Compare August 19, 2026 16:39
@github-actions

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

変更されたアプリケーションはありません

@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch 2 times, most recently from ea66b21 to 6e765ce Compare August 19, 2026 16:53
@github-actions

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

変更されたアプリケーションはありません

- docs/project_docs/BOXP-176/plan.md を新規作成
  - 調査結果・観測地点・etcd quorum 確認・根本原因 (確定不能) を記録
  - 再発防止策 A/B/D1-D3 の状況まとめ (D1/D2は#761実装済み)
  - /proc/diskstats エラーカウンタ誤記を dmesg/journalctl 確認に修正
- docs/project_docs/shanghai-node-resilience/plan.md を更新
  - INC-5 再発の追記 (2026-08-19)
  - D3 の localhost バインド不可・hostNetwork NetworkPolicy 非適用・
    iptables/tcpdump 実測確認手順を追記
  - 残課題セクションに D3 アクセス制御の詳細を追記

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch from 6e765ce to 39f94d1 Compare August 19, 2026 17:00
boxp and others added 3 commits August 19, 2026 17:03
Calico等のCNIではGlobalNetworkPolicyでhostNetwork通信を制御できる場合があるため、
「iptables/nftablesが必須」という断定を「一つの手段として有効」に緩和し、
CNI実装・設定への依存を明記した。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
boxp/arch PR #11944 (2026-08-05マージ) で A(watchdog)・B(armbian-ramlog無効化+journal永続化)・
D3(etcd metrics URL) が実装済みであり、2026-08-17 CI apply で全ノード (shanghai-1/2/3) に
適用済みだったことが確認されたため、「A/B/D3が未適用のまま再発した」という誤記を修正する。

あわせて9時間の無応答が発生した考えられる理由(電源断、またはAnsible journald.yml→
node_resilience.yml の実行順序問題)と、journal消失の推定原因(SDカードI/Oエラーでflushできず)
を文書化する。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…を通知するため成立しない

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch from f25a4ed to 4f80e19 Compare August 20, 2026 02:31
@github-actions

Copy link
Copy Markdown
Contributor

ArgoCD Diff Result

変更されたアプリケーションはありません

@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch from 4f80e19 to b9e53a7 Compare August 20, 2026 02:36
@boxp
boxp force-pushed the codex-task-board/BOXP-176-20260819T160145Z-fbfd9fbf-e321-4d78-8ece-b61fdd3704d0 branch from ffff9a2 to bf3a9b8 Compare August 20, 2026 02:41
- D3 (etcd metrics URL) はメトリクスURL設定のみ実装済みであり、
  2381/TCPのアクセス制御はBOXP-177で追跡中の未完了タスクであることを明確化
- 施策一覧表にBOXP-177参照とアクセス制御未実施の⚠️表記を追加
- 「A/B/D1/D2/D3すべて実装済み」の断定表現を「D3はアクセス制御未実施」に修正
- shanghai-node-resilience/plan.mdのD3記述も同様に整合

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant