Kubernetes Kubernetes

ローカルクラスターをセットアップして kubectl を使い始める

minikube で単一ノードのクラスターを動かし、kubectl で接続し、毎日使うコマンドを学びます。

10 min learn.level.初級

本番のクラスターには多くのノードがありますが、学習には、自分のマシン上に 1 つ欲しいところです。一般的な選択肢は、minikube、kind、Docker Desktop に組み込まれた Kubernetes のオプションです。このガイドでは、Docker ドライバーを使った minikube を使います。kubectl のコマンドは、そのどれでも、そしてあらゆる実際のクラスターでも、同一です。

コンテナツール、minikube、kubectl をインストールする

minikube には、そのノードをホストするためのコンテナランタイムまたは仮想マシンが必要です。最も一般的な選択は Docker なので、まず Docker Desktop(Linux では Docker Engine)をインストールし、実行中であることを確認します。次に minikube と kubectl をインストールします。Homebrew を使う macOS では次のとおりです。

brew install minikube kubectl

他のシステムでは、各 OS の最新の手順が記載された minikube のインストールページと kubectl のインストールドキュメントに従ってください。minikube には、約 2 CPU、2 GB の空きメモリ、20 GB のディスクが必要です。

クラスターを起動する

minikube start --driver=docker
minikube status

minikube が必要なイメージをダウンロードするため、最初の起動は遅くなります。ドライバーの設定は、minikube のノード全体が、ご自身のマシン上の Docker コンテナとして動作することを意味します。そのノードの中で、Kubernetes は独自のコンテナランタイムで Pod を実行するため、コンテナの層が 2 つあります。最初は混乱するかもしれませんが、クラスターの使い方には影響しません。

kubectl が到達できることを確認する

kubectl cluster-info
kubectl get nodes

control-plane ロールで Ready のステータスのノードが 1 つ表示されるはずです。その 1 つのノードが、コントロールプレーンとワークロードの両方を実行します。これはまさに、アーキテクチャのガイドで説明したローカル開発向けの近道です。

kubeconfig とコンテキストを理解する

kubectl がクラスターと通信するには、クラスターのアドレスと認証情報が必要です。それは kubeconfig ファイル(デフォルトでは ~/.kube/config)から読み取られ、minikube start がエントリを追加してくれます。各エントリは、クラスター、ユーザー、必要に応じてデフォルトの namespace を、コンテキストにまとめます。

kubectl config get-contexts
kubectl config current-context
kubectl config use-context minikube

破壊的なことを実行する前に、現在のコンテキストを確認してください。kubeconfig に staging や本番のクラスターも含まれている場合、現在のコンテキストが、コマンドがどれに届くかを決めます。

日常のコマンドを学ぶ

kubectl get pods                # 現在の namespace の Pod を一覧表示
kubectl get pods -A             # すべての namespace の Pod を一覧表示
kubectl describe pod NAME       # 1 つの Pod の詳細と最近のイベント
kubectl logs NAME               # コンテナの出力
kubectl delete pod NAME         # Pod を削除
kubectl api-resources           # クラスターが知っているすべてのリソースタイプ
kubectl explain pod.spec        # 任意のフィールドの組み込みリファレンス
kubectl get --help              # 任意のコマンドのヘルプ

kubectl explain は覚えておく価値があります。クラスターの API から直接、すべてのリソースのすべてのフィールドを説明してくれるため、フィールドを調べるためにターミナルを離れる必要はほとんどありません。

その日の作業が終わったら、minikube stop でクラスターを一時停止し、minikube delete で完全に削除します。

人気のガイド