Kubernetes の実行コマンド

KubernetesKubernetesBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

kubectl run コマンドは、Kubernetes でリソースを作成する最もシンプルで汎用性の高い方法の 1 つです。これにより、コンテナを迅速にデプロイしたり、バッチ処理用のジョブを作成したり、アプリケーションの複数のレプリカを管理するためのデプロイメントを設定したりできます。この実験では、初心者が kubectl run コマンドの基本とその効果的な使い方を理解するのを助けるために設計されています。

この実験を終えると、以下のことが学べます。

  1. Minikube クラスタを起動して検証する。
  2. kubectl run を使用してポッドを作成する。
  3. 複数のレプリカを持つデプロイメントを作成する。
  4. バッチ処理用のジョブを実行する。
  5. クラスタを維持するためにリソースをクリーンアップする。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/BasicCommandsGroup -.-> kubernetes/expose("Expose") kubernetes/BasicCommandsGroup -.-> kubernetes/run("Run") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("Scale") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/logs("Logs") subgraph Lab Skills kubernetes/initialization -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/get -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/create -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/delete -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/expose -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/run -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/scale -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/describe -.-> lab-8456{{"Kubernetes の実行コマンド"}} kubernetes/logs -.-> lab-8456{{"Kubernetes の実行コマンド"}} end

Minikube クラスタを起動する

リソースを作成する前に、動作中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量の Kubernetes 環境です。

  1. 作業ディレクトリに移動する:

    ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。

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

    Minikube を起動して Kubernetes クラスタを初期化します。

    minikube start
    • このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
    • Minikube は、システムの性能に応じて数分かかる場合があります。
  3. Minikube が動作していることを確認する:

    Minikube クラスタの状態を確認します。

    minikube status
    • kubeletapiserver などのコンポーネントが Running と表示されていることを確認します。
    • クラスタが動作していない場合は、minikube start を再度実行します。

Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。

kubectl run コマンドを調べる

kubectl run コマンドは、ポッド内で特定のイメージを作成して実行するために使用されます。これには、ポッドの動作、環境、仕様をカスタマイズするための複数のオプションが用意されています。

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

kubectl run -h

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

ポッド内で特定のイメージを作成して実行します。

例:
## nginx ポッドを起動する
kubectl run nginx --image=nginx

## hazelcast ポッドを起動し、コンテナにポート 5701 を公開する
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701

## hazelcast ポッドを起動し、コンテナ内に環境変数 "DNS_DOMAIN=cluster" と "POD_NAMESPACE=default" を設定する
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

## hazelcast ポッドを起動し、コンテナ内にラベル "app=hazelcast" と "env=prod" を設定する
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"

## ドライ ラン; 対応する API オブジェクトを作成せずに表示する
kubectl run nginx --image=nginx --dry-run=client

## nginx ポッドを起動するが、JSON から解析された部分的な値セットで仕様を上書きする
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": {... } }'

## busybox ポッドを起動し、フォアグラウンドで実行し、終了した場合は再起動しない
kubectl run -i -t busybox --image=busybox --restart=Never

## デフォルト コマンドを使用して nginx ポッドを起動するが、そのコマンドに対してカスタム引数 (arg1.. argN) を使用する
kubectl run nginx --image=nginx -- <arg1> <arg2>... <argN>

## 異なるコマンドとカスタム引数を使用して nginx ポッドを起動する
kubectl run nginx --image=nginx --command -- <cmd> <arg1>... <argN>

ポッドを作成する

ポッド は、Kubernetes で最も小さな展開可能単位であり、一緒に実行される 1 つ以上のコンテナを表します。このステップでは、Nginx ウェブ サーバーを実行するポッドを作成します。

  1. ポッドを作成する:

    次のコマンドを実行して、nginx-pod という名前のポッドを作成します。

    kubectl run nginx-pod --image=nginx
    • --image オプションは使用するコンテナ イメージを指定します。ここでは、公式の Nginx イメージを使用しています。
  2. ポッドを確認する:

    ポッドが実行されていることを確認します。

    kubectl get pods
    • 出力の中から nginx-pod を探します。
    • ポッドが準備完了すると、STATUS 列に Running が表示されます。

ポッドの状態が Pending と表示される場合、Kubernetes はまだコンテナ イメージを取得している可能性があります。しばらく待ってから kubectl get pods を再度実行してください。

デプロイメントを作成してレプリカをスケールする

デプロイメント は、ポッドのセットを管理し、それらが期待通りに実行されていることを確認します。これは、アプリケーションのスケーリングと更新に役立ちます。

  1. デプロイメントを作成する:

    次のコマンドを実行して、nginx - deployment という名前のデプロイメントを作成します。

    kubectl create deployment nginx - deployment --image=nginx
    • --image オプションは使用するコンテナ イメージを指定します。
  2. デプロイメントを 3 つのレプリカにスケールする:

    --replicas フラグは非推奨となっているため、代わりに kubectl scale を使用してデプロイメントをスケールします。

    kubectl scale コマンドを使用してレプリカの数を調整します。

    kubectl scale deployment nginx - deployment --replicas=3
    • これにより、デプロイメントの一部として 3 つのポッドが実行されることが保証されます。
  3. デプロイメントとそのレプリカを確認する:

    デプロイメントとポッドの状態を確認します。

    kubectl get deployments
    kubectl get pods
    • READY 列の下に 3 つのレプリカが表示されていることを確認します。
    • kubectl get pods の出力に 3 つのポッドが表示されていることを確認します。

ポッドが Running 状態でない場合、クラスタ リソースが不十分な可能性があります。次のコマンドでポッドのイベントを確認してください。

kubectl describe pod <pod - name>

ジョブを作成する

ジョブ は、正常に完了する必要のあるタスクを実行するために使用されます。たとえば、バッチ ジョブやデータ処理タスクなどです。ここでは、kubectl run を使用してジョブを作成し、その実行を確認します。

  1. ジョブを作成する

次のコマンドを実行して、busybox - job という名前のジョブを作成します。

kubectl run busybox - job --image=busybox --restart=OnFailure -- echo "Hello from Kubernetes"
  • --restart=OnFailure フラグは、これがジョブであることを指定します。
  • echo コマンドは、ジョブが実行するタスクを定義します。
  1. ジョブの状態を確認する

次のコマンドを実行して、ジョブを確認します。

kubectl get jobs

予想される出力:

NAME          COMPLETIONS   DURATION   AGE
busybox - job   1/1           5s         10s
  • COMPLETIONS: ジョブが正常に 1 回実行されたことを示します (1/1)。
  • ジョブがリストに表示されない場合は、自動的にクリーンアップされた可能性があります。次のステップに進んで、そのポッドを確認してください。
  1. ジョブのポッドを確認する

ジョブはポッド内で実行されるため、次のコマンドを使用してポッドを確認します。

kubectl get pods

予想される出力:

NAME               READY   STATUS      RESTARTS   AGE
busybox - job        0/1     Completed   0          30s
  • STATUS フィールドには Completed が表示され、ジョブが完了したことを示します。
  1. ジョブの出力を確認する

ジョブのポッドのログを確認して、出力を確認します。

kubectl logs busybox - job

予想される出力:

Hello from Kubernetes

これにより、ジョブが正常に実行されたことが確認されます。

クリーンアップ

クラスタをクリーンに保つために、実験中に作成したリソースを削除します。

  1. リソースを削除する:

    次のコマンドを実行します。

    kubectl delete pod nginx - pod
    kubectl delete pod busybox - job
    kubectl delete deployment nginx - deployment
  2. クリーンアップを確認する:

    リソースが残っていないことを確認します。

    kubectl get pods
    kubectl get deployments
    • 出力に作成したリソースが表示されないことを確認します。

まとめ

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

  1. Minikube クラスタを起動して確認する方法。
  2. kubectl run を使用してポッド、デプロイメント、ジョブを作成および管理する方法。
  3. クラスタを整理するためにリソースをクリーンアップする方法。

kubectl run コマンドは、Kubernetes でアプリケーションを展開し、ワークロードを管理するための簡単で強力な方法を提供します。これらの手順を練習することで、より高度な Kubernetes ワークフローのための堅牢な基礎を築くことができます。