Skip to content

cdsl-research/Kubernetes-Checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kubernetes-Checker

KubernetesのYAMLファイルと kubectl describe の出力を照合し,設定ミスを特定するPythonスクリプトである.

開発環境

  • OS:Ubuntu 24.04.2 LTS
  • Python:3.12.3

構成ファイル

ファイル名 説明
exam.yaml CronJobのYAML定義.Prometheusのバックアップジョブを1分ごとに実行.
kubectl_describe.txt kubectl describe の出力例.コンテナ起動失敗やBackOffエラーを含む.
rules.json エラーパターンと対応する検出ルールを定義したJSONファイル.
k8s_rule_checker3.py YAMLとdescribe出力を照合し,ルールに基づいて問題箇所を抽出するPythonスクリプト.

使用方法

python3 k8s_rule_checker3.py <yamlファイル> <kubectl-describe出力ファイル> [rules.json]

▼使用例▼

python3 k8s_rule_checker3.py exam.yaml kubectl_describe.txt

検出されるルール

ID 名前 説明
missing_file ファイルが見つからない no such file or directory エラーに一致し,YAML内の該当パスを特定する.
exec_failed 実行ファイルの実行に失敗 exec: エラーに一致し,実行対象のスクリプトパスを特定する.
backoff コンテナの再起動失敗 Back-offCrashLoopBackOff に一致し,再起動ループの原因を推定する.

出力例

  • k8s_rule_checker3.py スクリプトを用いて,Kubernetesの設定ファイル exam.yaml と kubectl_describe.txt を検証した結果は,YAMLファイルの16行目に記述された args のスクリプトパスがエラーの原因箇所であることを表している.
  • Pod内のファイル構成と一致していないまたは実行権限がない理由により,コンテナ起動時にスクリプトを実行できない.
スクリーンショット 2025-11-04 163704

▼16行目の正しい記述▼

16       - "/prometheus-backup.sh"

コンテナ内のルートディレクトリに配置されたスクリプトを指定する形式が正しいため,Dockerfileやイメージ構成に応じて正しいパスを指定する必要がある.

実装のポイント

  • rules.json に定義された正規表現で kubectl describe の出力を解析.
  • 該当するパスやキーワードを exam.yaml から検索し,エラーの原因箇所とされる前後2行の行番号とコンテキストを表示.
  • 直接的な原因(missing_file, exec_failed)が見つかった場合は,backoff のような副次的なエラーは除外して表示.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages