ローカルクラスターをセットアップして kubectl を使い始める
minikube で単一ノードのクラスターを動かし、kubectl で接続し、毎日使うコマンドを学びます。
本番のクラスターには多くのノードがありますが、学習には、自分のマシン上に 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 で完全に削除します。
人気のガイド
-
Kubernetes とは何か、そしてそれが解決する問題 コンテナだけではスケールしなくなる理由と、Kubernetes がマシンの集まりを 1 つのプラットフォームに変える方法。 -
Kubernetes クラスターの仕組み:コントロールプレーンとノード クラスターを動かすコンポーネントと、kubectl apply から実行中のコンテナまでの間に何が起きるか。 -
Deployment:スケーリング、自己修復、ローリングアップデート Pod のレプリカを実行し、ダウンタイムなしで更新し、リリースがうまくいかなかったときにロールバックします。 -
Service:短命な Pod のための安定したネットワーキング Pod に安定したアドレスを与え、クラスターの内外に公開し、誰が誰と通信できるかを制限します。 -
失敗する Pod をデバッグする:describe、logs、exec、port-forward Pod が Pending のまま、クラッシュする、応答しない原因を突き止めるための、繰り返し使えるチェックリスト。