Skip to main content
Glama
README.ko.mdโ€ข10.8 kB
# ๐Ÿฅ K8s Doctor MCP > AI ๊ธฐ๋ฐ˜ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ง„๋‹จ ๋ฐ ์ง€๋Šฅํ˜• ๋””๋ฒ„๊น… ์ถ”์ฒœ ์‹œ์Šคํ…œ [![npm version](https://img.shields.io/npm/v/@zerry_jin/k8s-doctor-mcp)](https://www.npmjs.com/package/@zerry_jin/k8s-doctor-mcp) [![npm downloads](https://img.shields.io/npm/dm/@zerry_jin/k8s-doctor-mcp)](https://www.npmjs.com/package/@zerry_jin/k8s-doctor-mcp) [![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-green)](https://nodejs.org) [![Kubernetes](https://img.shields.io/badge/kubernetes-1.20%2B-blue)](https://kubernetes.io) **[English](README.md)** | **[ํ•œ๊ตญ์–ด](#ํ•œ๊ตญ์–ด)** ## ๋ฐ๋ชจ <!-- ์—ฌ๊ธฐ์— ๋ฐ๋ชจ GIF ์ถ”๊ฐ€ --> ![K8s Doctor ๋ฐ๋ชจ](./docs/demo.gif) ## ์™œ K8s Doctor๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”? ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ณดํ†ต ์ด๋Ÿฐ ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง‘๋‹ˆ๋‹ค: - `kubectl get pods` - `kubectl logs` - `kubectl describe` - ๊ตฌ๊ธ€๋ง, ์Šคํƒ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ฒ€์ƒ‰... **K8s Doctor๊ฐ€ ๊ฒŒ์ž„์ฒด์ธ์ €์ž…๋‹ˆ๋‹ค.** ๋‹จ์ˆœํ•œ kubectl ๋ž˜ํผ๊ฐ€ ์•„๋‹ˆ๋ผ AI ๊ธฐ๋ฐ˜ ์ง„๋‹จ ๋„๊ตฌ๋กœ: - ๐Ÿ” **๊ทผ๋ณธ ์›์ธ ๋ถ„์„** - ๋‹จ์ˆœ ์ƒํƒœ ์ฒดํฌ๋ฅผ ๋„˜์–ด์„  ๋ถ„์„ - ๐Ÿง  **์—๋Ÿฌ ํŒจํ„ด ๊ฐ์ง€** - ํ”ํ•œ ์ด์Šˆ ์ž๋™ ์ธ์‹ (Connection Refused, OOM, DNS ์‹คํŒจ ๋“ฑ) - ๐Ÿ’ก **์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ… ์ œ๊ณต** - ์ •ํ™•ํ•œ kubectl ๋ช…๋ น์–ด๊นŒ์ง€ ์•Œ๋ ค์คŒ - ๐Ÿ“Š **Exit code ๋ถ„์„** - exit 137, 143, 1์ด ๋ฌด์Šจ ์˜๋ฏธ์ธ์ง€ ์„ค๋ช… - ๐ŸŽฏ **๋กœ๊ทธ ํŒจํ„ด ๋งค์นญ** - ์ˆ˜์ฒœ ์ค„ ๋กœ๊ทธ์—์„œ ํ•ต์‹ฌ๋งŒ ์ถ”์ถœ - ๐Ÿฅ **๊ฑด๊ฐ•๋„ ์ ์ˆ˜** - ํŒŒ๋“œ/ํด๋Ÿฌ์Šคํ„ฐ ๊ฑด๊ฐ•๋„๋ฅผ 0-100์ ์œผ๋กœ ํ‰๊ฐ€ ## ์ฃผ์š” ๊ธฐ๋Šฅ | ๋„๊ตฌ | ์„ค๋ช… | |------|------| | `diagnose-pod` | **ํŒŒ๋“œ ์ข…ํ•ฉ ์ง„๋‹จ** - ์ƒํƒœ, ์ด๋ฒคํŠธ, ๋ฆฌ์†Œ์Šค ๋ถ„์„ ๋ฐ ๊ฑด๊ฐ•๋„ ์ ์ˆ˜ ์ œ๊ณต | | `debug-crashloop` | **CrashLoopBackOff ์ „๋ฌธ๊ฐ€** - exit code ํ•ด์„, ๋กœ๊ทธ ๋ถ„์„, ๊ทผ๋ณธ ์›์ธ ํŒŒ์•… | | `analyze-logs` | **์Šค๋งˆํŠธ ๋กœ๊ทธ ๋ถ„์„** - ์—๋Ÿฌ ํŒจํ„ด ๊ฐ์ง€, ํ”ํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ์ฑ… ์ œ์•ˆ | | `check-resources` | **๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰** - CPU/Memory limit ํ™•์ธ, OOM ์œ„ํ—˜ ๊ฒฝ๊ณ  | | `full-diagnosis` | **ํด๋Ÿฌ์Šคํ„ฐ ๊ฑด๊ฐ• ์ฒดํฌ** - ๋ชจ๋“  ๋…ธ๋“œ์™€ ํŒŒ๋“œ ์Šค์บ” | | `check-events` | **์ด๋ฒคํŠธ ๋ถ„์„** - Warning ์ด๋ฒคํŠธ ํ•„ํ„ฐ๋ง ๋ฐ ๋ถ„์„ | | `list-namespaces` | **๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก** - ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋น ๋ฅธ ์กฐํšŒ | | `list-pods` | **ํŒŒ๋“œ ๋ชฉ๋ก** - ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ํŒŒ๋“œ ์ƒํƒœ ํ‘œ์‹œ | ## ์„ค์น˜ ### npm์œผ๋กœ ์„ค์น˜ (๊ถŒ์žฅ) ```bash npm install -g @zerry_jin/k8s-doctor-mcp ``` ### ์†Œ์Šค์—์„œ ๋นŒ๋“œ ```bash git clone https://github.com/ongjin/k8s-doctor-mcp.git cd k8s-doctor-mcp npm install && npm run build ``` ## Claude Code์— ๋“ฑ๋ก ```bash # npm ์ „์—ญ ์„ค์น˜ ํ›„ claude mcp --scope project add k8s-doctor -- k8s-doctor-mcp # ๋˜๋Š” ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•œ ๊ฒฝ์šฐ claude mcp --scope project add k8s-doctor -- node /path/to/k8s-doctor-mcp/dist/index.js ``` ## ๋น ๋ฅธ ์„ค์ • (๊ถŒ์žฅ) ๋งค๋ฒˆ ๋„๊ตฌ ์‚ฌ์šฉ ์Šน์ธ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๋‹ค๋ฉด, ์•„๋ž˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž๋™ ํ—ˆ์šฉ์„ ์„ค์ •ํ•˜์„ธ์š”. ### ๐Ÿ–ฅ๏ธ For Claude Desktop App Users 1. Claude ์•ฑ์„ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. 2. `k8s-doctor`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๋˜์ง‘๋‹ˆ๋‹ค. 3. ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๋ฉด **"Always allow requests from this server"** ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•˜๊ณ  **Allow**๋ฅผ ๋ˆ„๋ฅด์„ธ์š”. (์ดํ›„์—๋Š” ๋ฌป์ง€ ์•Š๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.) ### โŒจ๏ธ For Claude Code (CLI) Users ํ„ฐ๋ฏธ๋„ ํ™˜๊ฒฝ(`claude` ๋ช…๋ น์–ด)์„ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๊ถŒํ•œ ๊ด€๋ฆฌ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. 1. ํ„ฐ๋ฏธ๋„์—์„œ `claude`๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. 2. ํ”„๋กฌํ”„ํŠธ ์ž…๋ ฅ์ฐฝ์— `/permissions`๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ์นฉ๋‹ˆ๋‹ค. 3. **Global Permissions** ๋˜๋Š” **Project Permissions** ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ค๋ฉด `Allowed Tools`๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 4. `mcp__k8s-doctor__*` ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜, ํ•„์š”ํ•œ ๋„๊ตฌ๋งŒ ๊ฐœ๋ณ„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. > ๐Ÿ’ก **Tip**: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ `diagnose-pod`, `debug-crashloop`, `analyze-logs` ์„ธ ๊ฐ€์ง€๋งŒ ํ—ˆ์šฉํ•˜๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ์„ธ ๋„๊ตฌ๋กœ 90%์˜ ๋””๋ฒ„๊น… ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค. **๊ถŒ์žฅ ์„ค์ •:** ```bash # ๊ท ํ˜•์žกํžŒ ์ ‘๊ทผ - ์ฃผ์š” ์ง„๋‹จ ๋„๊ตฌ ํ—ˆ์šฉ claude config add allowedTools \ "mcp__k8s-doctor__diagnose-pod" \ "mcp__k8s-doctor__debug-crashloop" \ "mcp__k8s-doctor__analyze-logs" \ "mcp__k8s-doctor__full-diagnosis" ``` ## ํ•„์ˆ˜ ์กฐ๊ฑด - **kubectl** ์„ค์ • ๋ฐ ์ž‘๋™ ํ™•์ธ (`kubectl cluster-info` ์„ฑ๊ณตํ•ด์•ผ ํ•จ) - **kubeconfig** ํŒŒ์ผ์ด ๊ธฐ๋ณธ ์œ„์น˜(`~/.kube/config`)์— ์žˆ๊ฑฐ๋‚˜ `KUBECONFIG` ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • - **Node.js** 18 ์ด์ƒ - Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ์ ‘๊ทผ ๊ถŒํ•œ (๋กœ์ปฌ minikube/kind ๋˜๋Š” ์›๊ฒฉ) ## ์‚ฌ์šฉ ์˜ˆ์ œ ### ์˜ˆ์ œ 1: CrashLooping ํŒŒ๋“œ ์ง„๋‹จ ``` ์‚ฌ์šฉ์ž: "production ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ 'api-server' ํŒŒ๋“œ๊ฐ€ CrashLoop ์ƒํƒœ์ธ๋ฐ ์™œ ๊ทธ๋Ÿฐ๊ฑฐ์•ผ?" Claude (k8s-doctor ์‚ฌ์šฉ): ๐Ÿ” CrashLoopBackOff ์ง„๋‹จ Exit Code: 137 (OOM Killed) ๊ทผ๋ณธ ์›์ธ: ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ•์ œ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ๋ฉ”๋ชจ๋ฆฌ limit์„ ๋Š˜๋ฆฌ์„ธ์š”: ```yaml resources: limits: memory: "512Mi" # ํ˜„์žฌ ๊ฐ’๋ณด๋‹ค ๋†’๊ฒŒ ์„ค์ • ``` ๊ด€๋ จ ๋กœ๊ทธ: - ๋ผ์ธ 1234: Error: JavaScript heap out of memory - ๋ผ์ธ 1256: FATAL ERROR: Reached heap limit ``` ### ์˜ˆ์ œ 2: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ๋ถ„์„ ``` ์‚ฌ์šฉ์ž: "'backend-worker' ํŒŒ๋“œ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•ด์„œ ๋ญ๊ฐ€ ์‹คํŒจํ•˜๋Š”์ง€ ์•Œ๋ ค์ค˜" Claude (analyze-logs ์‚ฌ์šฉ): ๐Ÿ“ ๋กœ๊ทธ ๋ถ„์„ ๊ฒฐ๊ณผ ๊ฐ์ง€๋œ ์—๋Ÿฌ ํŒจํ„ด: ๐Ÿ”ด Database Connection Error (15ํšŒ ๋ฐœ์ƒ) ๊ฐ€๋Šฅํ•œ ์›์ธ: - DB ์„œ๋น„์Šค๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์Œ - ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด - ์ธ์ฆ ์‹คํŒจ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: - DB Pod ์ƒํƒœ ํ™•์ธ - ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ™•์ธ (ConfigMap/Secret) - ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ ํ™•์ธ: kubectl get endpoints ๐ŸŸก Timeout (8ํšŒ ๋ฐœ์ƒ) ๊ฐ€๋Šฅํ•œ ์›์ธ: ์‘๋‹ต ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ ํ•ด๊ฒฐ์ฑ…: ํƒ€์ž„์•„์›ƒ ๊ฐ’์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์„œ๋น„์Šค ์„ฑ๋Šฅ ์ตœ์ ํ™” ``` ### ์˜ˆ์ œ 3: ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๊ฑด๊ฐ• ์ฒดํฌ ``` ์‚ฌ์šฉ์ž: "ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๊ฑด๊ฐ• ์ƒํƒœ ํ™•์ธํ•ด์ค˜" Claude (full-diagnosis ์‚ฌ์šฉ): ๐Ÿฅ ํด๋Ÿฌ์Šคํ„ฐ ๊ฑด๊ฐ• ์ง„๋‹จ ์ „์ฒด ์ ์ˆ˜: 72/100 ๐Ÿ’› ๋…ธ๋“œ: 3/3 Ready โœ… ํŒŒ๋“œ: 45/52 Running - CrashLoop: 2๊ฐœ ๐Ÿ”ฅ - Pending: 5๊ฐœ โณ Critical ์ด์Šˆ: ๐Ÿ”ด ํŒŒ๋“œ "payment-service" CrashLooping (exit 1) ๐Ÿ”ด ํŒŒ๋“œ "worker-3" OOM Killed ๊ถŒ์žฅ์‚ฌํ•ญ: - 2๊ฐœ CrashLoop ํŒŒ๋“œ๋ฅผ ์ฆ‰์‹œ ์ˆ˜์ •ํ•˜์„ธ์š” - Pending ํŒŒ๋“œ๋“ค์˜ ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ ์—ฌ๋ถ€ ํ™•์ธ ``` ## ์ž‘๋™ ์›๋ฆฌ 1. **ํด๋Ÿฌ์Šคํ„ฐ ์—ฐ๊ฒฐ** - kubeconfig๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ (kubectl๊ณผ ๋™์ผ) 2. **์ข…ํ•ฉ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘** - ํŒŒ๋“œ ์ƒํƒœ, ์ด๋ฒคํŠธ, ๋กœ๊ทธ, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ 3. **ํŒจํ„ด ๋งค์นญ ์ ์šฉ** - ์‹ค์ „ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์ผ๋ฐ˜์ ์ธ ์—๋Ÿฌ ํŒจํ„ด ์ธ์‹ 4. **๊ทผ๋ณธ ์›์ธ ๋ถ„์„** - ๋‹จ์ˆœํžˆ ์ƒํƒœ๋งŒ ๋ณด์—ฌ์ฃผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ WHY(์™œ) ์‹คํŒจํ–ˆ๋Š”์ง€ ์„ค๋ช… 5. **ํ•ด๊ฒฐ์ฑ… ์ œ๊ณต** - ์ •ํ™•ํ•œ ๋ช…๋ น์–ด์™€ YAML๋กœ ์ˆ˜์ • ๋ฐฉ๋ฒ• ์ œ์‹œ ## ๊ฐ์ง€ํ•˜๋Š” ์—๋Ÿฌ ํŒจํ„ด K8s Doctor๊ฐ€ ์ธ์‹ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด๋“ค: - ๐Ÿ”ด **Connection Refused** - ์„œ๋น„์Šค ์ค€๋น„ ์•ˆ๋จ, ์ž˜๋ชป๋œ ํฌํŠธ, ๋„คํŠธ์›Œํฌ ์ •์ฑ… - ๐Ÿ”ด **Database Connection Errors** - DB ์ธ์ฆ, ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด - ๐Ÿ”ด **Out of Memory** - OOM kill, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ๋ถ€์กฑํ•œ limit - ๐ŸŸ  **File Not Found** - ConfigMap ๋ฏธ๋งˆ์šดํŠธ, ์ž˜๋ชป๋œ ๊ฒฝ๋กœ - ๐ŸŸ  **Permission Denied** - SecurityContext ๋ฌธ์ œ, fsGroup ์ด์Šˆ - ๐ŸŸ  **DNS Resolution Failed** - CoreDNS ๋ฌธ์ œ, ์ž˜๋ชป๋œ ์„œ๋น„์Šค๋ช… - ๐ŸŸก **Port Already in Use** - ๊ฐ™์€ ํฌํŠธ์˜ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค - ๐ŸŸก **Timeout** - ๋А๋ฆฐ ์‘๋‹ต, ๋„คํŠธ์›Œํฌ ์ง€์—ฐ - ๐ŸŸก **SSL/TLS Errors** - ๋งŒ๋ฃŒ๋œ ์ธ์ฆ์„œ, CA bundle ๋ˆ„๋ฝ ## ์•„ํ‚คํ…์ฒ˜ ``` k8s-doctor-mcp/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ index.ts # MCP ์„œ๋ฒ„ (๋ชจ๋“  ๋„๊ตฌ) โ”‚ โ”œโ”€โ”€ types.ts # TypeScript ํƒ€์ž… ์ •์˜ โ”‚ โ”œโ”€โ”€ diagnostics/ โ”‚ โ”‚ โ”œโ”€โ”€ pod-diagnostics.ts # ํŒŒ๋“œ ๊ฑด๊ฐ• ๋ถ„์„ โ”‚ โ”‚ โ””โ”€โ”€ cluster-health.ts # ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ์ง„๋‹จ โ”‚ โ”œโ”€โ”€ analyzers/ โ”‚ โ”‚ โ””โ”€โ”€ log-analyzer.ts # ์Šค๋งˆํŠธ ๋กœ๊ทธ ํŒจํ„ด ๋งค์นญ โ”‚ โ””โ”€โ”€ utils/ โ”‚ โ”œโ”€โ”€ k8s-client.ts # Kubernetes API ํด๋ผ์ด์–ธํŠธ โ”‚ โ””โ”€โ”€ formatters.ts # ์ถœ๋ ฅ ํฌ๋งทํŒ… ์œ ํ‹ธ โ””โ”€โ”€ package.json ``` ## ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ - K8s Doctor๋Š” **์ฝ๊ธฐ ์ „์šฉ** Kubernetes API๋งŒ ์‚ฌ์šฉ (list, get, describe) - `kubectl get/describe/logs`์™€ ๋™์ผํ•œ ๊ถŒํ•œ ํ•„์š” - ํด๋Ÿฌ์Šคํ„ฐ ์ƒํƒœ๋ฅผ ์ ˆ๋Œ€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Œ - kubeconfig ์ž๊ฒฉ์ฆ๋ช…์€ ๋กœ์ปฌ์—๋งŒ ์œ ์ง€ - ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก ์•ˆํ•จ ## ๋ฌธ์ œ ํ•ด๊ฒฐ ### "kubeconfig๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค" ```bash # kubectl ์ž‘๋™ ํ™•์ธ kubectl cluster-info # kubeconfig ์œ„์น˜ ํ™•์ธ echo $KUBECONFIG # ๋ช…์‹œ์  ๊ฒฝ๋กœ๋กœ ํ…Œ์ŠคํŠธ export KUBECONFIG=~/.kube/config ``` ### "Permission denied" ```bash # ํด๋Ÿฌ์Šคํ„ฐ ๊ถŒํ•œ ํ™•์ธ kubectl auth can-i get pods --all-namespaces # ์ตœ์†Œํ•œ ๋‹ค์Œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ ํ•„์š”: # - pods, events, namespaces, nodes ``` ### "Connection refused to cluster" ```bash # ํด๋Ÿฌ์Šคํ„ฐ ์—ฐ๊ฒฐ ํ™•์ธ kubectl get nodes # ๋กœ์ปฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฝ์šฐ (minikube/kind) minikube status kind get clusters ``` ## ๊ฐœ๋ฐœ ```bash # ํด๋ก  ๋ฐ ์„ค์น˜ git clone https://github.com/ongjin/k8s-doctor-mcp.git cd k8s-doctor-mcp npm install # ๊ฐœ๋ฐœ ๋ชจ๋“œ npm run dev # ๋นŒ๋“œ npm run build # Claude Code๋กœ ํ…Œ์ŠคํŠธ npm run build claude mcp add --scope project k8s-doctor-dev -- node $(pwd)/dist/index.js ``` ## ๊ธฐ์—ฌ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ํŠนํžˆ: - ๐Ÿ†• ์ƒˆ๋กœ์šด ์—๋Ÿฌ ํŒจํ„ด ๊ฐ์ง€ - ๐ŸŒ ๊ตญ์ œํ™” (๋” ๋งŽ์€ ์–ธ์–ด) - ๐Ÿ“Š ๋ฉ”ํŠธ๋ฆญ ํ†ตํ•ฉ (Prometheus ๋“ฑ) - ๐Ÿงช ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ - ๐Ÿ“– ๋ฌธ์„œ ๊ฐœ์„  ## ๋กœ๋“œ๋งต - [ ] Metrics Server ํ†ตํ•ฉ (์‹ค์‹œ๊ฐ„ CPU/Memory ์‚ฌ์šฉ๋Ÿ‰) - [ ] ๋„คํŠธ์›Œํฌ ์ •์ฑ… ์ง„๋‹จ - [ ] ์Šคํ† ๋ฆฌ์ง€/PVC ๋ฌธ์ œ ํ•ด๊ฒฐ - [ ] Helm ์ฐจํŠธ ๋ถ„์„ - [ ] ๋ฉ€ํ‹ฐ ํด๋Ÿฌ์Šคํ„ฐ ์ง€์› - [ ] ๋Œ€ํ™”ํ˜• ๋””๋ฒ„๊น… ๋ชจ๋“œ - [ ] ๋ฆฌํฌํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ (PDF, HTML) ## ๋ผ์ด์„ ์Šค MIT ยฉ [zerry](https://github.com/ongjin) ## ๊ฐ์‚ฌ์˜ ๋ง ๋‹ค์Œ ๊ธฐ์ˆ ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค: - [@modelcontextprotocol/sdk](https://github.com/anthropics/mcp) - Model Context Protocol - [@kubernetes/client-node](https://github.com/kubernetes-client/javascript) - Kubernetes JavaScript Client - [Claude Code](https://claude.com/claude-code) - AI ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋„๊ตฌ ## ์Šคํƒ€ ํžˆ์Šคํ† ๋ฆฌ ์ด ๋„๊ตฌ๊ฐ€ ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•ด์คฌ๋‹ค๋ฉด โญ ์Šคํƒ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ## ์ž‘์„ฑ์ž **zerry** - GitHub: [@zerry](https://github.com/ongjin) - kubectl ์ง€์˜ฅ์— ์ง€์นœ DevOps ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜… --- **๋กœ๊ทธ์— ๋น ์ง„ Kubernetes ์‚ฌ์šฉ์ž๋“ค์„ ์œ„ํ•ด โค๏ธ๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค**

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ongjin/k8s-doctor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server