はじめに
kubectl run コマンドは、Kubernetes でリソースを作成する最もシンプルで汎用性の高い方法の 1 つです。これにより、コンテナを迅速にデプロイしたり、バッチ処理用のジョブを作成したり、アプリケーションの複数のレプリカを管理するためのデプロイメントを設定したりできます。この実験では、初心者が kubectl run コマンドの基本とその効果的な使い方を理解するのを助けるために設計されています。
この実験を終えると、以下のことが学べます。
- Minikube クラスタを起動して検証する。
kubectl runを使用してポッドを作成する。- 複数のレプリカを持つデプロイメントを作成する。
- バッチ処理用のジョブを実行する。
- クラスタを維持するためにリソースをクリーンアップする。
Minikube クラスタを起動する
リソースを作成する前に、動作中の Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量の Kubernetes 環境です。
作業ディレクトリに移動する:
ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。
cd /home/labex/projectMinikube を起動する:
Minikube を起動して Kubernetes クラスタを初期化します。
minikube start- このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
- Minikube は、システムの性能に応じて数分かかる場合があります。
Minikube が動作していることを確認する:
Minikube クラスタの状態を確認します。
minikube statuskubeletやapiserverなどのコンポーネントが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 ウェブ サーバーを実行するポッドを作成します。
ポッドを作成する:
次のコマンドを実行して、
nginx-podという名前のポッドを作成します。kubectl run nginx-pod --image=nginx--imageオプションは使用するコンテナ イメージを指定します。ここでは、公式の Nginx イメージを使用しています。
ポッドを確認する:
ポッドが実行されていることを確認します。
kubectl get pods- 出力の中から
nginx-podを探します。 - ポッドが準備完了すると、
STATUS列にRunningが表示されます。
- 出力の中から
ポッドの状態が Pending と表示される場合、Kubernetes はまだコンテナ イメージを取得している可能性があります。しばらく待ってから kubectl get pods を再度実行してください。
デプロイメントを作成してレプリカをスケールする
デプロイメント は、ポッドのセットを管理し、それらが期待通りに実行されていることを確認します。これは、アプリケーションのスケーリングと更新に役立ちます。
デプロイメントを作成する:
次のコマンドを実行して、
nginx - deploymentという名前のデプロイメントを作成します。kubectl create deployment nginx - deployment --image=nginx--imageオプションは使用するコンテナ イメージを指定します。
デプロイメントを 3 つのレプリカにスケールする:
--replicasフラグは非推奨となっているため、代わりにkubectl scaleを使用してデプロイメントをスケールします。kubectl scaleコマンドを使用してレプリカの数を調整します。kubectl scale deployment nginx - deployment --replicas=3- これにより、デプロイメントの一部として 3 つのポッドが実行されることが保証されます。
デプロイメントとそのレプリカを確認する:
デプロイメントとポッドの状態を確認します。
kubectl get deployments kubectl get podsREADY列の下に 3 つのレプリカが表示されていることを確認します。kubectl get podsの出力に 3 つのポッドが表示されていることを確認します。
ポッドが Running 状態でない場合、クラスタ リソースが不十分な可能性があります。次のコマンドでポッドのイベントを確認してください。
kubectl describe pod <pod - name>
ジョブを作成する
ジョブ は、正常に完了する必要のあるタスクを実行するために使用されます。たとえば、バッチ ジョブやデータ処理タスクなどです。ここでは、kubectl run を使用してジョブを作成し、その実行を確認します。
- ジョブを作成する
次のコマンドを実行して、busybox - job という名前のジョブを作成します。
kubectl run busybox - job --image=busybox --restart=OnFailure -- echo "Hello from Kubernetes"
--restart=OnFailureフラグは、これがジョブであることを指定します。echoコマンドは、ジョブが実行するタスクを定義します。
- ジョブの状態を確認する
次のコマンドを実行して、ジョブを確認します。
kubectl get jobs
予想される出力:
NAME COMPLETIONS DURATION AGE
busybox - job 1/1 5s 10s
COMPLETIONS: ジョブが正常に 1 回実行されたことを示します (1/1)。- ジョブがリストに表示されない場合は、自動的にクリーンアップされた可能性があります。次のステップに進んで、そのポッドを確認してください。
- ジョブのポッドを確認する
ジョブはポッド内で実行されるため、次のコマンドを使用してポッドを確認します。
kubectl get pods
予想される出力:
NAME READY STATUS RESTARTS AGE
busybox - job 0/1 Completed 0 30s
STATUSフィールドにはCompletedが表示され、ジョブが完了したことを示します。
- ジョブの出力を確認する
ジョブのポッドのログを確認して、出力を確認します。
kubectl logs busybox - job
予想される出力:
Hello from Kubernetes
これにより、ジョブが正常に実行されたことが確認されます。
クリーンアップ
クラスタをクリーンに保つために、実験中に作成したリソースを削除します。
リソースを削除する:
次のコマンドを実行します。
kubectl delete pod nginx - pod kubectl delete pod busybox - job kubectl delete deployment nginx - deploymentクリーンアップを確認する:
リソースが残っていないことを確認します。
kubectl get pods kubectl get deployments- 出力に作成したリソースが表示されないことを確認します。
まとめ
この実験では、以下のことを学びました。
- Minikube クラスタを起動して確認する方法。
kubectl runを使用してポッド、デプロイメント、ジョブを作成および管理する方法。- クラスタを整理するためにリソースをクリーンアップする方法。
kubectl run コマンドは、Kubernetes でアプリケーションを展開し、ワークロードを管理するための簡単で強力な方法を提供します。これらの手順を練習することで、より高度な Kubernetes ワークフローのための堅牢な基礎を築くことができます。


