Kubernetes の describe コマンド

KubernetesBeginner
オンラインで実践に進む

はじめに

Kubernetes の describe コマンドは、Kubernetes リソースに関する詳細情報を表示するための強力なツールです。describe コマンドを使用すると、リソースの状態、イベント、ラベル、アノテーションなどの情報を表示できます。これは、Kubernetes クラスタのトラブルシューティングに役立ちます。

Minikube を起動してクラスタを検証する

Kubernetes を使用する前に、稼働しているクラスタが必要です。Minikube は軽量のローカル Kubernetes クラスタを提供します。

  1. プロジェクト ディレクトリに移動する:

    ターミナルを開き、デフォルトの作業ディレクトリに移動します。

    cd /home/labex/project
    
  2. Minikube を起動する:

    クラスタを初期化するために Minikube を起動します。

    minikube start
    
    • Minikube は単一ノードの Kubernetes クラスタを作成します。この手順には数分かかる場合があります。
  3. Minikube の状態を確認する:

    Minikube が正常に起動したかどうかを確認します。

    minikube status
    

    apiserverkubelet などのコンポーネントが Running と表示されていることを確認します。

  4. Kubernetes の設定を確認する:

    kubectl が Minikube クラスタに接続されていることを確認します。

    kubectl cluster-info
    

    これにより、API サーバーやその他のコンポーネントに関する詳細が表示されます。

Minikube が起動に失敗した場合は、minikube delete を使用してリセットして再度試してください。

kubectl describe コマンドを調べる

kubectl describe コマンドは、特定のリソースまたはリソースのグループに関する詳細情報を表示するために使用されます。このコマンドを使用すると、リソースの構成、状態、および関連するイベントに関する洞察が得られます。

kubectl describe の利用可能なオプションを表示するには、次のコマンドを実行します。

kubectl describe -h

次の出力が表示されます。

特定のリソースまたはリソースのグループの詳細を表示します。

選択されたリソースの詳細な説明を表示します。これには、イベントやコントローラーなどの関連リソースも含まれます。
次のように、名前、その種類のすべてのオブジェクト、名前の接頭辞、またはラベル セレクタを指定して、単一のオブジェクトを選択できます。たとえば:

  $ kubectl describe TYPE NAME_PREFIX

は、まず TYPE と NAME_PREFIX の完全一致を確認します。そのようなリソースが存在しない場合、NAME_PREFIX で始まる名前を持つすべてのリソースの詳細が出力されます。

サポートされているリソースの完全な一覧については、「kubectl api-resources」を使用してください。

例:
  ## ノードを記述する
  kubectl describe nodes kubernetes-node-emt8.c.myproject.internal

  ## ポッドを記述する
  kubectl describe pods/nginx

  ## "pod.json" で型と名前によって識別されるポッドを記述する
  kubectl describe -f pod.json

  ## すべてのポッドを記述する
  kubectl describe pods

  ## ラベル name=myLabel によるポッドを記述する
  kubectl describe po -l name=myLabel

  ## 'frontend' リプリケーション コントローラーによって管理されるすべてのポッドを記述する
  ## (rc で作成されたポッドは、ポッド名の接頭辞として rc の名前を持ちます)
  kubectl describe pods frontend

ポッドを記述する

この手順では、Kubernetes のポッドに関する情報を表示するために describe コマンドをどのように使用するかを学びます。

  1. レプリカのテンプレートとして使用される単純なポッドを作成します。次の内容で myapp-pod.yaml という名前のファイルを作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: myapp-pod
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80
    

    次のコマンドを使用してポッドを作成します。

    kubectl apply -f myapp-pod.yaml
    
  2. 次に、ポッドを記述します。

    kubectl describe pod myapp-pod
    

このコマンドは、指定されたポッドに関する詳細情報を取得します。これには、状態、ラベル、アノテーション、イベントなどが含まれます。

デプロイメントを記述する

この手順では、Kubernetes のデプロイメントに関する情報を表示するために describe コマンドをどのように使用するかを学びます。

  1. 次の内容で myapp-deployment.yaml という名前のファイルを作成します。

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

    次のコマンドを使用してデプロイメントを作成します。

    kubectl apply -f myapp-deployment.yaml
    
  2. デプロイメントを記述します。

    kubectl describe deployment myapp-deployment
    

このコマンドは、指定されたデプロイメントに関する詳細情報を取得します。これには、状態、ラベル、アノテーション、イベントなどが含まれます。

サービスを記述する

この手順では、Kubernetes のサービスに関する情報を表示するために describe コマンドをどのように使用するかを学びます。

  1. 次の内容で myapp-service.yaml という名前のファイルを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: myapp-service
    spec:
      selector:
        app: myapp-deployment
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
    

    次のコマンドを使用してサービスを作成します。

    kubectl apply -f myapp-service.yaml
    
  2. 次のコマンドを使用してサービスを記述します。

    kubectl describe service myapp-service
    

このコマンドは、指定されたサービスに関する詳細情報を取得します。これには、状態、ラベル、アノテーション、イベントなどが含まれます。

まとめ

この実験では、Kubernetes の describe コマンドを使用して、Kubernetes リソースに関する詳細情報を表示する方法を学びました。また、ポッド、デプロイメント、およびサービスを記述する方法も学びました。