🐷

Kubernetesでよく使うコマンドと設定ガイド

2025/03/15に公開

Kubernetes(K8s)は、コンテナ化されたアプリケーションを効率的に管理・運用できるプラットフォームです。本記事では、Kubernetesのよく使うコマンドや設定について詳しく解説します。


1. Kubernetesの基本コマンド

🔹 クラスタ情報を確認

kubectl cluster-info  # クラスタの情報を表示
kubectl get nodes      # ノード一覧を表示
kubectl get pods -A    # すべての名前空間のPod一覧を取得

🔹 Podの操作

kubectl get pods               # Pod一覧を取得
kubectl describe pod <pod名>    # Podの詳細情報を表示
kubectl logs <pod名>            # Podのログを表示
kubectl delete pod <pod名>      # Podを削除

🔹 デプロイメントの操作

kubectl get deployments                # デプロイメント一覧を取得
kubectl describe deployment <名称>      # デプロイメントの詳細を表示
kubectl scale deployment <名称> --replicas=3  # レプリカ数を変更
kubectl delete deployment <名称>        # デプロイメント削除

2. Kubernetesの設定ファイル(YAML)

🔹 基本的なPodの定義ファイル

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  containers:
    - name: my-app-container
      image: nginx:latest
      ports:
        - containerPort: 80

適用方法:

kubectl apply -f pod.yaml  # YAMLを適用

🔹 Deployment(デプロイメント)定義ファイル

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app-container
          image: nginx:latest
          ports:
            - containerPort: 80

適用:

kubectl apply -f deployment.yaml

3. Kubernetesネットワークの設定

🔹 Service(サービス)の作成

Podを外部公開するための設定:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

適用:

kubectl apply -f service.yaml
kubectl get services  # サービスの一覧を表示

🔹 Ingress(外部アクセス用)設定

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80

適用:

kubectl apply -f ingress.yaml
kubectl get ingress  # Ingress一覧を取得

4. スケーリングとローリングアップデート

🔹 Podのスケール(水平スケール)

kubectl scale deployment my-deployment --replicas=5

🔹 ローリングアップデート(アプリの更新)

kubectl set image deployment/my-deployment my-app-container=nginx:latest
kubectl rollout status deployment/my-deployment

5. Kubernetesの監視・デバッグ

🔹 リソースの状態を確認

kubectl top pods      # PodのCPU/メモリ使用量を確認
kubectl top nodes     # ノードのCPU/メモリ使用量を確認

🔹 トラブルシューティング

kubectl describe pod <pod名>  # 詳細情報を取得
kubectl logs <pod名>          # ログを取得
kubectl exec -it <pod名> -- /bin/sh  # Podの中に入る

6. まとめ

  • kubectl get でリソースの確認
  • kubectl apply -f で設定ファイルを適用
  • kubectl scale でスケール調整
  • kubectl rollout でローリングアップデート

これらのコマンドを活用することで、Kubernetesクラスタの管理がスムーズに行えます!

Discussion