mcpField
K
kubectl

kubectl

github.com/oldwinterクラウド・DevOps10101 回インストール1 週間前に更新
リポジトリ

kubectl について

kubectl で Kubernetes クラスターを管理するスキルです。日常点検やトラブルシューティング、デプロイ変更を担う運用担当者向けで、本番・ステージング・ローカル環境のエイリアスと危険な操作の確認手順を備えています。

主な機能

  1. 01クラスターと名前空間の事前設定エイリアス
  2. 02Kubernetes リソースとログの確認
  3. 03Pod とサービスのトラブルシューティング
  4. 04スケーリングとローリング更新の管理
  5. 05危険な変更前の確認

活用シーン

  1. 01環境ごとの Pod 状態の確認
  2. 02イベントとログを使った起動障害の調査
  3. 03デプロイのスケーリングやリソース使用量の監視
  4. 04確認を経た本番環境の変更

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oldwinter/skills --skill kubectl

インストール後、Claude Code で/kubectlを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
jsonpath_formatting.md
troubleshooting.md
scripts/
cluster_status.py
restart_monitor.py

詳細

Kubectl スキル

このスキルでは、kubectl と関連ツールを使用して Kubernetes クラスターを包括的に管理できます。

環境

クラスターエイリアス

3 つのクラスター/名前空間の組み合わせが事前設定されています。

エイリアスクラスター名前空間用途
k1AWS EKS Productionproduction本番環境
k2AWS EKS Productionstagingステージング環境
kK3s (192.168.10.117)simplexローカル開発環境

使用方法:

k1 get pods          # 查看生产环境 pods
k2 get pods          # 查看预发布环境 pods
k get pods           # 查看本地环境 pods
追加ツール
  • kubectx - クラスターを切り替えます
  • kubens - 名前空間を切り替えます
  • argocd - GitOps デプロイ(別のスキルを参照)
  • kargo - プログレッシブデリバリー(別のスキルを参照)

安全プロトコル

確認が必要な危険な操作

以下の操作を実行する前に、必ずユーザーに明示的に確認してください。

  • 削除操作:delete pod、delete deployment、delete service、delete pvc
  • レプリカ数をゼロに変更:scale --replicas=0
  • 本番環境の変更:リソースを変更する k1 コマンド
  • ノードのドレイン/コーディング解除:drain、cordon、uncordon
  • 適用/パッチ:本番環境のリソースへの変更
確認形式
⚠️ 危险操作确认

环境: [Production/Staging/Local]
操作: [具体操作描述]
资源: [受影响的资源]
影响: [潜在影响说明]

是否继续执行?

一般的な操作のリファレンス

リソースの表示
Pod
# List pods with status
k1 get pods
k1 get pods -o wide                    # Include node and IP info
k1 get pods --show-labels              # Show labels
k1 get pods -l app=simplex-api         # Filter by label

# Pod details
k1 describe pod <pod-name>

# Watch pods in real-time
k1 get pods -w
Deployment
# List deployments
k1 get deployments
k1 get deploy -o wide

# Deployment details
k1 describe deployment <name>

# Rollout status
k1 rollout status deployment/<name>

# Rollout history
k1 rollout history deployment/<name>
Service と Endpoint
# List services
k1 get services
k1 get svc

# Service details with endpoints
k1 describe svc <name>
k1 get endpoints <name>
すべてのリソース
# Get all common resources
k1 get all

# Get specific resource types
k1 get pods,svc,deploy

# Get all resources with labels
k1 get all -l app=simplex-api
ログとデバッグ
ログの表示
# Basic logs
k1 logs <pod-name>

# Follow logs (streaming)
k1 logs -f <pod-name>

# Last N lines
k1 logs --tail=100 <pod-name>

# Logs since time
k1 logs --since=1h <pod-name>
k1 logs --since=10m <pod-name>

# Previous container logs (after restart)
k1 logs --previous <pod-name>

# Multi-container pod
k1 logs <pod-name> -c <container-name>

# All containers in pod
k1 logs <pod-name> --all-containers=true
コマンドの実行
# Execute command in container
k1 exec <pod-name> -- <command>

# Interactive shell
k1 exec -it <pod-name> -- /bin/sh
k1 exec -it <pod-name> -- /bin/bash

# Specific container in multi-container pod
k1 exec -it <pod-name> -c <container> -- /bin/sh
デバッグ
# Pod events and status
k1 describe pod <pod-name>

# Get pod YAML
k1 get pod <pod-name> -o yaml

# Debug with ephemeral container
k1 debug <pod-name> -it --image=busybox

# Check resource usage
k1 top pods
k1 top nodes
デプロイ管理
スケーリング
# Scale deployment
k1 scale deployment/<name> --replicas=3

# Autoscale
k1 autoscale deployment/<name> --min=2 --max=5 --cpu-percent=80
ローリングアップデート
# Update image
k1 set image deployment/<name> <container>=<image>:<tag>

# Rollout status
k1 rollout status deployment/<name>

# Pause/resume rollout
k1 rollout pause deployment/<name>
k1 rollout resume deployment/<name>

# Rollback
k1 rollout undo deployment/<name>
k1 rollout undo deployment/<name> --to-revision=2
再起動
# Restart deployment (rolling restart)
k1 rollout restart deployment/<name>
構成リソース
ConfigMap
# List ConfigMaps
k1 get configmaps
k1 get cm

# View ConfigMap content
k1 describe cm <name>
k1 get cm <name> -o yaml

# Create from file
k1 create configmap <name> --from-file=<path>

# Create from literal
k1 create configmap <name> --from-literal=key=value
Secret
# List Secrets
k1 get secrets

# View Secret (base64 encoded)
k1 get secret <name> -o yaml

# Decode Secret value
k1 get secret <name> -o jsonpath='{.data.password}' | base64 -d

# Create Secret
k1 create secret generic <name> --from-literal=password=xxx
PersistentVolumeClaim
# List PVCs
k1 get pvc

# PVC details
k1 describe pvc <name>
ネットワーク操作
ポートフォワーディング
# Forward local port to pod
k1 port-forward pod/<name> 8080:80

# Forward to service
k1 port-forward svc/<name> 8080:80

# Background port-forward
k1 port-forward pod/<name> 8080:80 &
Service の公開
# Expose deployment as service
k1 expose deployment/<name> --port=80 --target-port=8080

# Get service external IP
k1 get svc <name> -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'
クラスター管理
ノード
# List nodes
k1 get nodes
k1 get nodes -o wide

# Node details
k1 describe node <name>

# Node resource usage
k1 top nodes
名前空間
# List namespaces
k1 get namespaces

# Switch namespace (using kubens)
kubens <namespace>

# Create namespace
k1 create namespace <name>
コンテキスト管理
# List contexts
kubectx

# Switch context
kubectx <context-name>

# Show current context
kubectl config current-context
リソースの監視
# Pod resource usage
k1 top pods
k1 top pods --sort-by=cpu
k1 top pods --sort-by=memory

# Node resource usage
k1 top nodes

# HPA status
k1 get hpa
k1 describe hpa <name>

出力形式

ステータス確認の場合

簡潔に要約してください。

✅ Pod 状态 (production)
┌──────────────────────────┬─────────┬──────────┬─────────┐
│ Pod                      │ Status  │ Restarts │ Age     │
├──────────────────────────┼─────────┼──────────┼─────────┤
│ simplex-api-xxx-abc      │ Running │ 0        │ 2d      │
│ simplex-api-xxx-def      │ Running │ 0        │ 2d      │
└──────────────────────────┴─────────┴──────────┴─────────┘
トラブルシューティングの場合

問題を調査する際は、以下の情報を収集してください。

  1. Pod のステータス:k1 get pod <name>
  2. Pod のイベント:k1 describe pod <name>
  3. 最近のログ:k1 logs --tail=50 <name>
  4. リソース使用量:k1 top pod <name>
カスタム出力形式
# JSON output
k1 get pods -o json

# YAML output
k1 get pod <name> -o yaml

# Custom columns
k1 get pods -o custom-columns=NAME:.metadata.name,STATUS:.status.phase

# JSONPath
k1 get pods -o jsonpath='{.items[*].metadata.name}'

トラブルシューティングのワークフロー

Pod が起動しない
  1. Pod のステータスを確認します:k1 get pod <name>
  2. イベントを確認します:k1 describe pod <name>(Events セクションを確認)
  3. ログを確認します:k1 logs <name> または k1 logs --previous <name>
  4. よくある問題:
    • ImagePullBackOff:イメージ名とレジストリの認証情報を確認します
    • CrashLoopBackOff:アプリケーションのログを確認します
    • Pending:リソース要求とノードの容量を確認します
リソース使用量が多い
  1. Pod の使用状況を確認します:k1 top pods --sort-by=memory
  2. ノードの使用状況を確認します:k1 top nodes
  3. HPA のステータスを確認します:k1 get hpa
  4. スケーリングを検討します:k1 scale deployment/<name> --replicas=N
Service にアクセスできない
  1. Service を確認します:k1 get svc <name>
  2. Endpoint を確認します:k1 get endpoints <name>
  3. Pod のラベルが Service のセレクターと一致していることを確認します
  4. クラスター内からテストします:k1 exec -it <pod> -- curl <service>:<port>

統合に関する注意事項

GitOps 操作(Git 経由のデプロイ)には、ArgoCD と Kargo のスキルを使用してください。

  • ArgoCD:アプリケーションの同期、ロールバック、ステータス
  • Kargo:プログレッシブデリバリー、貨物の昇格

AWS インフラストラクチャの操作には、AWS CLI スキルを使用してください。

コメント