Kubernetes クラスター情報

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

はじめに

Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するコンテナオーケストレーション プラットフォームです。この実験では、cluster-info コマンドを使用して Kubernetes クラスターを調べる方法を学びます。実験が終了すると、Kubernetes クラスターを起動する方法、必須のクラスター情報を取得する方法、内部コンポーネントを調べる方法、および API サーバーの接続性をテストする方法を理解しているでしょう。

この実験は初心者向けに作成されており、Kubernetes の事前経験は必要ありません。

Kubernetes クラスターを起動する

Kubernetes クラスターには実行環境が必要です。この実験では、Kubernetes クラスターをローカルで実行できるツールである Minikube を使用します。以下の手順に従ってください。

  1. ターミナルを開き、/home/labex/project ディレクトリにいることを確認します。

    cd ~/project
    
  2. Minikube クラスターを起動します。

    minikube start
    
    • Minikube は単一ノードの Kubernetes クラスターを作成します。
    • このプロセスにはシステムによって数分かかる場合があります。初期化中に、さまざまな Kubernetes コンポーネントが設定されます。

Minikube クラスターの初期化

基本的なクラスター情報を取得する

Minikube が実行されているときは、kubectl cluster-info コマンドを使用してクラスターに関する情報を表示します。次のコマンドを実行します。

kubectl cluster-info
  • API サーバー の URL は、クラスターとやり取りするための主要なエンドポイントです。
  • CoreDNS は、クラスター内のサービスの発見と DNS 解決を担当します。

出力例

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • https://192.168.49.2:8443 は、Kubernetes API サーバーの URL です。ここにすべての kubectl コマンドが送信されます。
  • CoreDNS サービスは、Kubernetes がサービスとポッドのドメイン名を解決するのを支援します。

クラスターコンポーネントを詳細に調べる

クラスターとその内部コンポーネントをより深く理解するには、次のコマンドを使用します。

kubectl cluster-info dump

このコマンドは、重要なコンポーネントに関する詳細情報を提供します。

  • etcd:クラスターのすべてのデータを格納するキーバリューストア。
  • kube-apiserver:Kubernetes API 要求のエントリポイント。
  • kube-scheduler:利用可能なノードにワークロード(ポッド)を割り当てます。
  • kube-controller-manager:クラスターの状態を維持します(たとえば、必要な数のポッド レプリカが実行されていることを確認します)。

出力例

このコマンドは、Kubernetes システム コンポーネントの構成と状態を詳細に記載した冗長な出力を生成します。分析を容易にするために、出力をファイルにリダイレクトできます。

kubectl cluster-info dump > cluster-details.txt

これにより、出力が現在のディレクトリの cluster-details.txt に保存されます。

クラスター内のノードを表示する

ノードは、Kubernetes でワークロードを実行するマシンです。クラスター内のノードを一覧表示するには、次のコマンドを実行します。

kubectl get nodes
  • ノード名(たとえば、minikube)は、マシンを識別します。
  • ステータスReady)は、ノードが正常であり、ワークロードを実行できることを示します。
  • Minikube クラスターでは、ノードはコントロール プレーンとワーカー ノードの両方として機能します。

出力例

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   5m    v1.20.0

API サーバーへのアクセスをテストする

API サーバーは、Kubernetes コントロール プレーンの重要なコンポーネントです。次のコマンドを実行することで、そのアクセス可能性をテストできます。

curl $(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') --insecure
  • このコマンドは API サーバーの URL を取得し、そこに対して簡単な要求を行います。
  • --insecure フラグは、SSL 証明書の検証をバイパスします。これは、このローカル設定では許容されます。

出力例

API サーバーにアクセスできる場合、レスポンスは次のようになります。

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

このレスポンスは、API サーバーが実行されていることを確認しますが、認証が不足しているためアクセスが拒否されます。これは予想される結果です。

まとめ

この実験では、以下のことを学びました。

  • Minikube を使って Kubernetes クラスターを起動する方法。
  • kubectl cluster-info を使ってクラスターの詳細を取得する方法。
  • kubectl cluster-info dump を使ってクラスターコンポーネントを詳細に調べる方法。
  • kubectl get nodes を使ってクラスター内のノードを一覧表示する方法。
  • curl コマンドを使って API サーバーの接続性をテストする方法。

この実践的な経験は、Kubernetes クラスターを理解して探索するための基礎を提供しました。これらのコマンドは、Kubernetes 環境のデバッグと管理に欠かせないものです。

次のステップ:

  • Kubernetes 内のポッドとワークロードを探索する。
  • アプリケーションを公開するためのサービスを作成する方法を学ぶ。
  • クラスター内のワークロードのスケーリングを試す。

練習を続け、楽しく学びましょう!