はじめに
こんにちは!
本記事は「本気で学ぶKubernetes」シリーズの第3回です。このシリーズでは、Kubernetesの基礎から実践まで、段階的に学んでいきます。
このシリーズは、第1回から順に読むことで体系的に学べる構成にしています。
まだご覧になっていない方は、ぜひ最初からご覧ください!
今回は実践に進む前の準備として、Kubernetesを動かすための環境準備と基本ツール・コマンドを整理していきます。kubectl、minikubeといった基本ツールのインストール方法から、よく使うコマンドまで、チートシート形式でまとめました。
この記事は人間がKubernetesの公式ドキュメントを読み漁りながら、人間の手で書いていますのでご安心ください!
前提知識
- k8sの基本概念を理解している方
- ローカルでk8sを試してみたい方
- kubectlやminikubeという言葉は聞いたことがあるが使ったことがない方
筆者の環境
- OS: macOS Sonoma 14.5
- チップ: Apple Silicon M2
- メモリ: 24GB
- コンテナランタイム: Rancher Desktop 1.20.1
基本コマンドの実行方法自体はどのOSでもさほど変わりないと思います。
パッケージのインストールについてはMacOSのみ紹介し、Homebrewを使ってパッケージ管理をしていきます。
kubectlとは
kubectlは、Kubernetesクラスタを操作するためのCLIツールです。
読み方はキューブコントロールです。(キューブ派とクーべ派があるようです)
主な用途としては
- リソース管理: Pod、Deployment、Serviceなどのk8sリソースの作成・削除・更新
- デプロイメント操作: アプリケーションのデプロイ、スケーリング
- クラスター情報の取得: クラスタの状態確認、リソース使用状況の監視
- デバッグ: ログ確認、コンテナ内でのコマンド実行、ポート転送
- 設定管理: kubeconfigファイルを通じた複数クラスタの管理
Kubernetesに関わるほぼ全ての操作はこのkubectlから実行できます。
ローカルオンプレミス環境だけでなく、EKSやGKEなどクラウドにデプロイしたクラスターの切り替えから操作までを行えます。
インストール方法
Mac(Homebrew)
brew install kubectl
インストールが完了したら、バージョンを確認します。
kubectl version --client
# 出力例:
# Client Version: v1.29.15
Lanchar Desktopを使用している場合はkubectlを含めたコンテナに関するツールが既にインストールされているようです。
出典: Kubernetes公式ドキュメント - macOS上でのkubectlのインストールおよびセットアップ
基本コマンド体系
kubectlのコマンドは以下の構文で統一されています。
コンテナ系のツールは引数が多いため、正直覚えるのがとても大変ですね。
# kubectl [command] [type] [name] [flags]
kubectl get pods nginx -n default
↑ ↑ ↑ ↑
コマンド 種類 名前 フラグ
kubectlコマンドチートシート
実際に使われそうなコマンドをカテゴリ別に整理しました。
| カテゴリ | コマンド | 説明 | 使用例 |
|---|---|---|---|
| リソース確認 | get |
リソース一覧の取得 | kubectl get pods |
describe |
リソースの詳細情報 | kubectl describe pod hello-node |
|
logs |
Podのログ確認 | kubectl logs hello-node |
|
logs -f |
ログをリアルタイム表示 | kubectl logs -f hello-node |
|
| リソース操作 | apply |
マニフェストの適用 | kubectl apply -f deployment.yaml |
create |
リソースの作成 | kubectl create deployment hello-node |
|
delete |
リソースの削除 | kubectl delete pod hello-node |
|
edit |
リソースの編集 | kubectl edit deployment hello-node |
|
| デバッグ | exec |
コンテナ内でコマンド実行 | kubectl exec -it hello-node -- /bin/bash |
port-forward |
ローカルからPodへポート転送 | kubectl port-forward pod/hello-node 8080:8080 |
|
top |
リソース使用状況 | kubectl top pods |
|
| コンテキスト | config view |
kubeconfig表示 | kubectl config view |
config use-context |
コンテキスト切り替え | kubectl config use-context minikube |
|
config get-contexts |
コンテキスト一覧 | kubectl config get-contexts |
よく使うリソースタイプの省略形
毎回長い名前を打つのは面倒なので、省略形が用意されています。
粋な計らいとても助かります!
-
pods→po -
services→svc -
deployments→deploy -
replicasets→rs -
namespaces→ns -
nodes→no
省略形はk8sで一般的に使われる名称のため、確実に覚えた方が良さそうです!
便利なオプション
またkubectlには便利なオプションがたくさんあります。
-
-o wide: 詳細情報を表示 -
-o yaml: YAML形式で出力 -
-o json: JSON形式で出力 -
-n <namespace>: 指定したnamespaceで実行 -
--all-namespacesまたは-A: 全namespaceで実行 -
--watchまたは-w: リアルタイムでの監視
minikubeとは
minikubeは、ローカル環境でのKubernetesクラスタを構築するツールです。
ローカルでKubernetesを動かす選択肢はいくつかありますが、一般的で機能も豊富に提供されているようです。
| ツール | 特徴 | 用途 |
|---|---|---|
| minikube | ローカル向けのクラスター構築 | 学習・開発 |
| kind (Kubernetes in Docker) | 軽量、Docker上で動作 | CI/CD、軽量開発 |
| Docker Desktop | Mac/Windowsで手軽 | 簡易開発 |
| Rancher Desktop | Docker Desktop代替 | 開発 |
| kubeadm | 本番環境向け | 本番クラスター構築 |
Kubernetes組み込み版(k3s)も利用可能ですが、今回学習のためminikubeを使用してリソース構築をしていきたいと思います。
インストール方法
Mac(Homebrew)
brew install minikube
以下のコマンドでバージョンを確認します。
バージョン情報が表示されれば無事インストール完了です。
minikube version
# minikube version: v1.37.0
minikubeコマンドチートシート
| カテゴリ | コマンド | 説明 | 使用例 |
|---|---|---|---|
| 基本操作 | start |
クラスタの起動 | minikube start |
stop |
クラスターの停止 | minikube stop |
|
delete |
クラスターの削除 | minikube delete |
|
status |
状態確認 | minikube status |
|
pause |
クラスターの一時停止 | minikube pause |
|
unpause |
クラスターの再開 | minikube unpause |
|
| 情報確認 | dashboard |
GUIダッシュボード起動 | minikube dashboard |
ip |
クラスタのIPアドレス確認 | minikube ip |
|
profile list |
プロファイル一覧 | minikube profile list |
|
| デバッグ | ssh |
ノードへのSSH接続 | minikube ssh |
logs |
minikubeのログ確認 | minikube logs |
|
| サービス | service |
Serviceへのアクセス | minikube service hello-node |
service list |
Service一覧とURL | minikube service list |
|
tunnel |
LoadBalancer有効化 | minikube tunnel |
|
| アドオン | addons list |
アドオン一覧 | minikube addons list |
addons enable |
アドオン有効化 | minikube addons enable metrics-server |
|
addons disable |
アドオン無効化 | minikube addons disable metrics-server |
加えてminikubeには便利なアドオンがあらかじめ用意されています。
-
ingress: Ingress Controllerを有効化 -
metrics-server: リソースのメトリクスを収集 -
dashboard: Kubernetes Dashboardを表示
実践
ここまでインプットばかりでうずうずしてきたところで、ここからは実際にクラスターを作成して操作してみます。
minikube start
# 😄 Darwin 14.5 (arm64) 上の minikube v1.37.0
# ...(省略)...
# 🏄 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用するよう設定されました
5分〜10分くらいするとクラスターが立ち上がります。
minikube status
# minikube
# type: Control Plane
# host: Running
# kubelet: Running
# apiserver: Running
# kubeconfig: Configured
次はアドオンで利用可能なダッシュボードを起動してみます。
新しくターミナルを開いて以下のコマンドを実行します。
minikube dashboard
# 🤔 ダッシュボードの状態を検証しています...
# 🚀 プロキシーを起動しています...
# 🤔 プロキシーの状態を検証しています...
# 🎉 デフォルトブラウザーで http://127.0.0.1:60439/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ を開いています...
実行するとこのようなダッシュボード画面が表示されました。
公式が用意しているWebUIです。
稼働中のPodやサービスなどあらゆる情報がここで閲覧できるようですね。
またGUIベースでKubernetesのリソース作成削除も行うことができます。
今度はkubectlコマンドでDeploymentを作成します。
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.53 -- /agnhost netexec --http-port=8080
# deployment.apps/hello-node created
以下のコマンドで作成したDeploymentを確認できます。
kubectl get deployments
# NAME READY UP-TO-DATE AVAILABLE AGE
# hello-node 1/1 1 1 70s
# 詳細を確認したい場合はこちら
kubectl get deployments -o yaml
# 作成されたPodを確認。
kubectl get pods
# NAME READY STATUS RESTARTS AGE
# hello-node-6c9b5f4b59-6zxz5 1/1 Running 0 4m42s
Podはそのままだとクラスター内部のIPアドレスからしかアクセスできないため、Serviceを作成して公開します。
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
# service/hello-node exposed
# 作成されたサービスを確認。
kubectl get services
# NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
# hello-node LoadBalancer 10.xx.xx.xx <pending> 8080:32673/TCP 2m38s
# kubernetes ClusterIP 10.xx.xx.xx <none> 443/TCP 31m
以下のコマンドを実行するとブラウザが開き、アプリケーションの応答が表示されます。
minikube service hello-node
# NOW: 2025-12-02 10:23:32.244945149 +0000 UTC m=+630.231632219
ダッシュボードで確認するとServiceやPodなどKubernetesクラスターのリソースが作成され公開されていることが確認できました。
クラスタの停止・削除
最後に今回作成したリソースのお片付けを行います。
# 作成したリソースの削除
kubectl delete service hello-node
kubectl delete deployment hello-node
# クラスタの停止(データは保持される)
minikube stop
# 次回起動時
minikube start
# クラスタの削除(もう使わない場合はこちら)
minikube delete
出典: Kubernetes公式ドキュメント - Hello Minikube
あると便利な開発ツール
ここからは必須ではありませんが、実務では非常に便利なツールを簡単に紹介します。
| ツール | 概要 | 用途 |
|---|---|---|
| Helm | Kubernetesのパッケージマネージャー | apt/yum/npmのKubernetes版でMySQL、Redis、Nginxなど既存アプリの導入など |
| Kustomize | マニフェストのカスタマイズツール | 環境ごとの差分管理(dev/staging/prod) |
| k9s | ターミナル上で動作するKubernetes UI | キーボードでリソース確認・操作可能 |
| kubectx / kubens | クラスタ/Namespace切り替えツール | 複数環境を扱う時の切り替え |
| stern | 複数Podのログを同時にTail表示 | デバッグ時のログ確認 |
| Lens | デスクトップGUIのKubernetes IDE | CUIが苦手な方向けのGUI操作ツール |
| dive | Dockerイメージのレイヤー構造解析 | イメージサイズの最適化ツール |
まとめと次回予告
今回確認したコマンドを簡単にまとめると以下の通りです。
- kubectl: Kubernetesクラスタとそのリソースを操作するためのCLIツール
- minikube: ローカルでk8sクラスタを動かすための環境構築ツール
公式ドキュメントにチートシートがまとめられているので、その他の使い方はぜひ以下のリンクをご確認ください!
リソース作成、リソース操作のためのコマンドは、Kubernetes自体の主要概念を正しく理解しておかないとなかなかとっつきづらい部分が多い印象です。
百聞は一見にしかず、実際にDeloplymentやPodのYAMLを作成して、Nginxを起動できるようなハンズオンを行いながら慣れていければと思います。
それでは、また明日!

