kubernetes-operations について
kubectl を使った Kubernetes クラスターの管理とトラブルシューティングを支援し、ワークロード、ネットワーク、設定、ストレージ、稼働状況を扱います。宣言的マニフェストとコンテキストの明示指定を重視し、誤ったクラスターへの操作を避けます。
主な機能
- 01Kubernetes ワークロードの管理
- 02サービスとネットワークの確認
- 03ConfigMaps、Secrets、ストレージの管理
- 04Pod、ログ、イベントの調査
- 05dry-run によるマニフェスト検証
- 06クラスターコンテキストの明示指定
活用シーン
- 01Kubernetes リソースのデプロイと確認
- 02Pod の状態とアプリケーションログの診断
- 03サービス接続のトラブルシューティング
- 04クラスター設定とストレージの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill kubernetes-operationsインストール後、Claude Code で/kubernetes-operationsを入力して読み込まれたか確認します。
同梱ファイルREFERENCE.md
詳細
Kubernetes の運用
kubectl とクラウドネイティブのパターンに精通し、Kubernetes クラスターの管理、デプロイ、トラブルシューティングに関する専門知識を提供します。
このスキルを使用する場面
| 次の場合はこのスキルを使用してください… | 次の場合は代わりに を使用してください… |
|---|---|
| kubectl を使用して、Pod、Deployment、Service、Ingress、ConfigMap、または Secret を操作する場合 | kubectl debug のエフェメラルコンテナーまたはノードセッションが必要な場合は、kubectl-debugging を使用してください |
| Kubernetes のマニフェストや kustomize オーバーレイを直接適用または確認する場合 | ワークロードが Helm チャートとして配信される場合は、helm-release-management を使用してください |
| クラスター全体のネットワーク、ストレージ、またはワークロードの健全性を診断する場合 | クラスター操作の前に ArgoCD の認証が必要な場合は、argocd-login を使用してください |
主な専門知識
Kubernetes の運用
- ワークロード管理:Deployment、StatefulSet、DaemonSet、Job、CronJob
- ネットワーク:Service、Ingress、NetworkPolicy、DNS 設定
- 設定とストレージ:ConfigMap、Secret、PersistentVolume、PersistentVolumeClaim
- トラブルシューティング:Pod のデバッグ、ログの分析、クラスターイベントの確認
クラスター運用の手順
- マニフェストを優先:リソース管理には常に宣言型 YAML マニフェストを優先してください
- 検証とドライラン:
kubectl apply --dry-run=clientを使用して変更を検証してください - 確認と検証:変更の適用後、
kubectl get、kubectl describe、kubectl logsで確認してください - 健全性の監視:ノード、Pod、Service のステータスを継続的に確認してください
- クリーンアップ:古いリソースや未使用のリソースが適切にガベージコレクションされるようにしてください
基本的なコマンド
# Resource management
kubectl apply -f manifest.yaml
kubectl get pods -A
kubectl describe pod <pod-name>
kubectl logs -f <pod-name>
kubectl exec -it <pod-name> -- /bin/bash
# Debugging
kubectl get events --sort-by='.lastTimestamp'
kubectl top nodes
kubectl top pods --containers
kubectl port-forward <pod-name> 8080:80
# Deployment management
kubectl rollout status deployment/<name>
kubectl rollout history deployment/<name>
kubectl rollout undo deployment/<name>
# Cluster inspection
kubectl cluster-info
kubectl get nodes -o wide
kubectl api-resources
主なデバッグパターン
Pod のデバッグ
# Pod inspection
kubectl describe pod <pod-name>
kubectl get pod <pod-name> -o yaml
kubectl logs <pod-name> --previous
# Interactive debugging
kubectl exec -it <pod-name> -- /bin/bash
kubectl debug <pod-name> -it --image=busybox
kubectl port-forward <pod-name> 8080:80
ネットワークのトラブルシューティング
# Service debugging
kubectl get svc -o wide
kubectl get endpoints
kubectl describe svc <service>
# Network connectivity
kubectl run test-pod --image=busybox -it --rm -- sh
# Inside pod: nslookup, wget, nc commands
一般的な問題
# CrashLoopBackOff debugging
kubectl logs <pod> --previous
kubectl describe pod <pod>
kubectl get events --field-selector involvedObject.name=<pod>
# Resource constraints
kubectl top pod <pod>
kubectl describe pod <pod> | grep -A 5 Limits
# State management
kubectl state list
kubectl state show <resource>
ベストプラクティス
コンテキストの安全性(重要)
- すべての kubectl コマンドで、必ず
--contextを明示的に指定してください - 現在のコンテキストに依存しないでください。別のプロセスによって変更されている可能性があります
- すべての操作で
kubectl --context=<context-name> get podsの形式を使用してください - これにより、誤ったクラスターに対する操作(例:staging に対して production 用のコマンドを実行すること)を防げます
# CORRECT: Explicit context
kubectl --context=gke_myproject_us-central1_prod get pods
kubectl --context=staging-cluster apply -f deployment.yaml
# WRONG: Relying on current context
kubectl get pods # Which cluster is this targeting?
リソース定義
- 宣言型 YAML マニフェストを使用する
- 適切なラベルとセレクターを設定する
- リソースのリクエストと制限を定義する
- ヘルスチェック(liveness/readiness プローブ)を設定する
セキュリティ
- NetworkPolicy を使用してトラフィックを制限する
- アクセス制御に RBAC を導入する
- 機密データを Secret に保存する
- コンテナーを非 root ユーザーとして実行する
監視
- 適切なログとメトリクスを設定する
- 重大な状態に対するアラートを設定する
- ヘルスチェックと readiness プローブを使用する
- リソース使用量とクォータを監視する
エージェント向けの最適化
| コンテキスト | コマンド |
|---|---|
| Pod のステータス(構造化) | kubectl get pods -n <ns> -o json | jq '.items[] | {name:.metadata.name, status:.status.phase}' |
| 概要の確認 | kubectl get pods -n <ns> -o wide |
| イベント(簡潔) | kubectl get events -n <ns> --sort-by='.lastTimestamp' -o json |
| リソースの詳細 | kubectl get <resource> -o json |
| ログ(件数制限) | kubectl logs <pod> -n <ns> --tail=50 |
詳細なデバッグコマンド、トラブルシューティングのパターン、Helm のワークフロー、高度な K8s 操作については、REFERENCE.md を参照してください。
コメント
Markdown 対応