Kubernetes Monitor

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides a read-only interface to Kubernetes clusters for retrieving comprehensive cluster information and diagnosing issues, including namespace management, pod status monitoring, node capacity checking, and resource management across deployments and services.

k8s-mcp

Kubernetes 클러스터를 위한 Python 기반의 읽기 전용 모델 컨텍스트 프로토콜(MCP) 서버로, 클러스터 정보를 검색하고 문제를 진단하기 위한 포괄적인 API를 제공합니다.

Claude를 사용한 채팅 예시

설치

필수 조건

  • 파이썬 3.8 이상
  • Kubernetes 클러스터에 액세스(kubeconfig 또는 클러스터 내 구성을 통해)
  • 필수 Python 패키지( pyproject.tomldependencies 참조)
  • uv - https://github.com/astral-sh/uv

지엑스피1

# Clone the repository git clone git@github.com:vlttnv/k8s-mcp.git cd k8s-mcp # Install dependencies uv venv source .venv/bin/activate uv sync

Claude configure를 사용하는 경우, 텍스트 편집기에서 ~/Library/Application Support/Claude/claude_desktop_config.json 파일의 Claude for Desktop App 구성을 열어주세요. 파일이 없다면 직접 생성하세요.

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
{ "mcpServers": { "k8s-mcp": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/k8s-mcp", "run", "server.py" ] } } }

명령 필드에 uv 실행 파일의 전체 경로를 입력해야 할 수도 있습니다. MacOS/Linux에서는 which uv, Windows에서는 where uv를 실행하여 경로를 확인할 수 있습니다.

구성

이 애플리케이션은 Kubernetes 클러스터에 연결하기 위해 자동으로 두 가지 방법을 시도합니다.

  1. Kubeconfig 파일 : 로컬 kubeconfig 파일을 사용합니다(일반적으로 ~/.kube/config 에 있음)
  2. 클러스터 내 구성 : Kubernetes Pod 내부에서 실행하는 경우 서비스 계정 토큰을 사용합니다.

kubeconfig가 올바르게 설정되어 있거나 적절한 RBAC 권한이 있는 클러스터 내부에서 실행 중인 경우 추가 구성이 필요하지 않습니다.

용법

예시

다음은 Claude에게 Kubernetes 클러스터와 리소스에 대해 물어볼 수 있는 몇 가지 유용한 프롬프트 예시입니다.

일반 클러스터 상태

  • "내 클러스터의 전반적인 상태는 어떻습니까?"
  • "내 클러스터의 모든 네임스페이스를 보여주세요"
  • "내 클러스터에서 사용 가능한 노드는 무엇이며, 노드의 상태는 어떻습니까?"
  • "내 노드 전체의 리소스 활용도는 어떻습니까?"

포드 및 배포

  • "프로덕션 네임스페이스의 모든 포드를 나열하세요"
  • "CrashLoopBackOff 상태의 포드가 있나요?"
  • "재시작 횟수가 많은 포드를 보여주세요"
  • "모든 네임스페이스에 걸친 모든 배포를 나열합니다"
  • "어떤 배치가 진행되지 않고 있나요?"

디버깅 문제

  • "스테이징 네임스페이스에 있는 내 Pod가 실패하는 이유는 무엇인가요?"
  • "프로덕션 네임스페이스의 서비스에 대한 YAML 구성을 가져옵니다"
  • "기본 네임스페이스에서 최근 이벤트를 보여주세요"
  • "보류 상태에 갇힌 포드가 있나요?"
  • "내 클러스터에서 ImagePullBackOff 오류가 발생하는 원인은 무엇입니까?"

자원 관리

  • "내 클러스터의 노드 리소스 소비량을 보여주세요"
  • "정리해야 할 버려진 리소스가 있나요?"
  • "프로덕션 네임스페이스의 모든 서비스 나열"
  • "스테이징과 프로덕션 간의 리소스 요청을 비교합니다"

특정 자원 검사

  • "kube-system에서 coredns 배포에 대한 구성을 보여주세요"
  • "스테이징에서 역방향 프록시 서비스에 대한 세부 정보를 가져옵니다"
  • "포드 xyz에서 어떤 컨테이너가 실행되고 있나요?"
  • "고장난 포드에 대한 로그를 보여주세요"

API 참조

네임스페이스

  • get_namespaces() : 클러스터에서 사용 가능한 모든 네임스페이스를 나열합니다.

포드

  • list_pods(namespace=None) : 모든 포드를 나열하고, 선택적으로 네임스페이스로 필터링합니다.
  • failed_pods() : 실패 또는 오류 상태의 모든 포드를 나열합니다.
  • pending_pods() : 보류 상태의 모든 포드를 이유와 함께 나열합니다.
  • high_restart_pods(restart_threshold=5) : 임계값을 초과하는 재시작 횟수를 갖는 Pod를 찾습니다.

노드

  • list_nodes() : 모든 노드와 해당 상태를 나열합니다.
  • node_capacity() : 모든 노드에서 사용 가능한 용량을 표시합니다.

배포 및 서비스

  • list_deployments(namespace=None) : 모든 배포를 나열합니다.
  • list_services(namespace=None) : 모든 서비스 나열
  • list_events(namespace=None) : 모든 이벤트 나열

자원 관리

  • orphaned_resources() : 소유자 참조가 없는 리소스 나열
  • get_resource_yaml(namespace, resource_type, resource_name) : 특정 리소스에 대한 YAML 구성을 가져옵니다.

특허

MIT 라이센스

기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

-
security - not tested
A
license - permissive license
-
quality - not tested

Claude와 같은 자연어 인터페이스를 통해 클러스터 정보를 쿼리하고 문제를 진단할 수 있는 Kubernetes용 읽기 전용 MCP 서버입니다.

  1. Installation
    1. Prerequisites
  2. Configuration
    1. Usage
      1. Examples
    2. API Reference
      1. Namespaces
      2. Pods
      3. Nodes
      4. Deployments & Services
      5. Resource Management
    3. License
      1. Contributing
        ID: oam68lbi8z