k8s について
k8sは、Kubernetesクラスターでコンテナ化アプリケーションを管理するエージェント向けのスキルです。kubectlコマンドとYAMLマニフェストを使ったデプロイ、スケーリング、設定、トラブルシューティングを扱います。
主な機能
- 01YAMLやコマンドによるPodのデプロイ
- 02DeploymentとReplicaSetのスケーリング
- 03サービス、ストレージ、リソースの設定
- 04SecretとConfigMapの管理
- 05kubectlによるログとイベントの確認
活用シーン
- 01複数コンテナアプリのデプロイ
- 02負荷に応じたレプリカ数の調整
- 03クラスターリソースの問題調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill k8sインストール後、Claude Code で/k8sを入力して読み込まれたか確認します。
詳細
k8s
目的
このスキルを使うと、Kubernetes を使用してコンテナ化されたアプリケーションをオーケストレーションおよび管理できます。クラスター内のポッド、サービス、デプロイメントのスケーリング、デプロイ、保守に重点を置いています。
使用するタイミング
複数コンテナのアプリをデプロイする場合、ワークロードを動的にスケーリングする場合、本番環境のリソースを管理する場合、またはクラスターの問題をトラブルシューティングする場合に、このスキルを使用します。CI/CD パイプラインやマイクロサービスアーキテクチャなど、基本的な Docker の範囲を超えたコンテナオーケストレーションを扱う場合に適用します。
主な機能
- YAML マニフェストまたは命令型コマンドを使ってポッドをデプロイおよび管理します。
- デプロイメントとレプリカセットを使ってアプリケーションをスケーリングします。たとえば、CPU メトリクスに基づく自動スケーリングを行います。
- ClusterIP、NodePort、LoadBalancer タイプを使ってサービスを公開します。
- PersistentVolumes と PersistentVolumeClaims を使ってストレージを管理します。
- kubectl logs やイベントなどの組み込みツールを使ってリソースを監視およびデバッグします。
- サービスディスカバリーとロードバランシングのために、ネットワーキングプラグインと連携します。
- 安全な設定のために、シークレットと ConfigMap を管理します。
使用パターン
$KUBECONFIG 環境変数で指定した有効な kubeconfig ファイルを使って、必ず認証してください。宣言型の設定では YAML ファイルを作成して適用し、命令型のタスクでは kubectl を直接使用します。パターン:kubectl config use-context my-context でコンテキストを読み込んでから、操作を実行します。スクリプトには、コマンドの終了コードを確認するなど、エラーチェックを含めてください。
例 1:シンプルな Nginx ポッドをデプロイします。
- ポッドを作成します:
kubectl run nginx-pod --image=nginx --port=80 - ポッドを公開します:
kubectl expose pod nginx-pod --type=NodePort --port=80 - 確認します:
kubectl get pods -l run=nginx-pod
例 2:デプロイメントをスケーリングします。
- デプロイメント YAML を適用します:
kubectl apply -f deployment.yaml - deployment.yaml の内容:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: my-image - スケーリングします:
kubectl scale deployment my-app --replicas=5 - ステータスを確認します:
kubectl get deployments my-app
一般的なコマンド/API
CLI の操作には kubectl を使用します。API にアクセスする場合は、/api/v1/pods などのエンドポイントで Kubernetes API サーバーにアクセスします。必要に応じて、必ず --namespace フラグで名前空間を指定してください。
- リソースの取得:
kubectl get pods --namespace=default -o wide(フラグ:-o は出力形式、--namespace は対象範囲を指定します) - リソースの作成:
kubectl apply -f pod.yaml --record(フラグ:-f はファイル、--record は履歴を指定します) - リソースの削除:
kubectl delete deployment my-app --cascade=foreground(フラグ:--cascade は依存リソースのクリーンアップを指定します) - リソースの更新:
kubectl set image deployment/my-app my-container=my-image:new-tag - API エンドポイント:認証を使って curl を実行します。例:
curl -k -H "Authorization: Bearer $KUBE_TOKEN" https://api.example.com/api/v1/namespaces/default/pods - 設定形式:マニフェストには YAML を使用します。例:
apiVersion: v1 kind: Pod metadata: name: example spec: containers: - name: example image: nginx - 環境設定:認証のために $KUBECONFIG=/path/to/config をエクスポートします。
統合に関する注意事項
Kubernetes API またはオペレーターを介して、Kubernetes を他のツールと連携させます。認証には、kubeconfig ファイル用の $KUBECONFIG または API トークン用の $KUBE_API_KEY を使用します。パターン:スクリプト内で $KUBECONFIG が設定されているか確認し、設定されていない場合は入力を促すか、エラーを返します。CI/CD では、Argo CD や Jenkins プラグインなどのツールを使用します。例:パッケージ化には Helm チャートを使用し、helm install my-chart ./chart-dir でインストールします。kubeconfig にクラウドプロバイダー固有の設定を指定して、AWS EKS などのクラウドプロバイダーとの互換性を確保してください。
エラー処理
必ず kubectl の終了コードを確認してください。ゼロ以外の場合は、詳細を確認するために kubectl describe <resource> を使用します。よくあるエラーには、リソースが見つからない場合の「NotFound」があります。この場合は、まず kubectl get で存在を確認して対処します。権限に関する「Forbidden」の場合は、RBAC ロールを確認してください。コードでは、コマンドを try-catch ブロックで囲みます。例として、Python では次のようにします。import subprocess; try: subprocess.run(['kubectl', 'get', 'pods'], check=True) except subprocess.CalledProcessError as e: print(f"Error: {e}")。API 呼び出しでは、403 や 500 などの HTTP エラーを処理し、指数バックオフで再試行します。問題を診断するには、kubectl get events --namespace=default でイベントを記録します。
グラフの関係
- クラスターに関連:devops-sre(例:CI/CD ツールなど、他の devops スキルへのリンク)。
- タグ経由で接続:kubernetes(例:コンテナー管理スキルとの関連)、k8s(kubernetes の同義語)、containers(Docker またはオーケストレーションスキルへのリンク)。
- 想定されるエッジ:このスキルはネットワーキングおよびストレージのスキルに依存し、Prometheus などのモニタリングスキルに出力を提供します。