ローカル環境
ローカルでKubernetesを起動する方法はたくさんありますが、ここでは筆者がよく利用するものをご紹介します。ローカル環境なので自分でマシンを用意できれば無料でKubernetesクラスタを構築することができます。
-
minikube
- Kubernetes公式ドキュメントで紹介されているもののなかで最もシンプルにインストールできるツール。マルチノードクラスタ。
-
kind
- 簡単に複数のKubernetesクラスタを構築できるが、Dockerが必要。マルチノードクラスタ。
-
Docker Desktop
- Docker for Desktopを利用していると簡単に利用することができる。シングルノードクラスタ。
Docker DesktopはLinuxに対応していませんが、minikubeとkindはmacOS、Windows、Linuxどの環境でも利用することができます。
筆者の環境はmac OS Monterey(12.1)でメモリ16GBです。KubernetesはDockerよりも更にメモリを使いますので、ローカル環境のメモリには注意してください。
また、既にDocker Desktopを使用している方はDocker DesktopでKubernetesの利用をお勧めします。
minikube
1. minikube をインストールする
Installにはhomebrewを使います。
brew install minikube
minikubeをインストールしたことがある方はwhich minikube
が失敗するかもしれません。その場合以下のコマンドを試してください。
brew unlink minikube brew link minikube
2. クラスタを作成する
minikube start
実行すると色々なメッセージがでてきます。
実際はメッセージに絵文字が含まれることがありますが、本記事では省略しています。
❯ minikube start [~] Darwin 12.1 上の minikube v1.24.0 hyperkitドライバーが自動的に選択されました。他の選択肢: virtualbox, ssh docker-machine-driver-hyperkit ドライバをダウンロードしています: > docker-machine-driver-hyper...: 65 B / 65 B [----------] 100.00% ? p/s 0s > docker-machine-driver-hyper...: 8.35 MiB / 8.35 MiB 100.00% 39.32 MiB p/ The 'hyperkit' driver requires elevated permissions. The following commands will be executed: $ sudo chown root:wheel /Users/aoi/.minikube/bin/docker-machine-driver-hyperkit $ sudo chmod u+s /Users/aoi/.minikube/bin/docker-machine-driver-hyperkit Password: VM ブートイメージをダウンロードしています... > minikube-v1.24.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s > minikube-v1.24.0.iso: 225.58 MiB / 225.58 MiB 100.00% 43.35 MiB p/s 5.4s コントロールプレーンのノード minikube を minikube 上で起動しています Kubernetes v1.22.3 のダウンロードの準備をしています > preloaded-images-k8s-v13-v1...: 501.73 MiB / 501.73 MiB 100.00% 43.40 Mi hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) を作成しています... この VM は https://k8s.gcr.io アクセスにおける問題があります 外部イメージを取得するためには、プロキシーを設定する必要があるかも知れません: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/ Docker 20.10.8 で Kubernetes v1.22.3 を準備しています... Certificate client.crt has expired. Generating a new one... ▪ 証明書と鍵を作成しています... ▪ Control Plane を起動しています... ▪ RBAC のルールを設定中です... Kubernetes コンポーネントを検証しています... ▪ イメージ gcr.io/k8s-minikube/storage-provisioner:v5 を使用しています 有効なアドオン: storage-provisioner, default-storageclass /usr/local/bin/kubectl is version 1.20.7, which may have incompatibilites with Kubernetes 1.22.3. ▪ kubectl v1.22.3 が必要ですか? 'minikube kubectl -- get pods -A' を試してみてください 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
3. kubectlにコンフィグを設定する
minikube start
を実行すると自動でkubectlのコンフィグが設定され、即座にクラスタにアクセスできるようになります。そのため、ここでは何も実行する必要がありません。
正常に起動できたら、4ページ目の「kubectlを利用してクラスタにアクセスする」の章に進んでください。
kind
kindを利用するためにはあらかじめDockerをインストールしておく必要があります(参考)。
ただし既にDocker for Desktopを利用している方は学習用途としてであればkindよりもKubernetes for Docker Desktopを使う方がインストールが簡単でしょう。
1. kindをインストールする(参考)
brew install kind
2. クラスタを作成する
kind create cluster
実行すると以下の結果が得られます。
❯ kind create cluster [~] Creating cluster "kind" ... ✓ Ensuring node image (kindest/node:v1.21.1) ✓ Preparing nodes ✓ Writing configuration ✓ Starting control-plane ✓ Installing CNI ✓ Installing StorageClass Set kubectl context to "kind-kind" You can now use your cluster with: kubectl cluster-info --context kind-kind Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community
3. kubectlにconfigを設定する
筆者の環境では自動でconfigが設定されていましたが、configが設定されていない方はメッセージに書かれている通りconfigを設定しましょう。
kubectl cluster-info --context kind-kind
完了したら「kubectlを利用してクラスタにアクセスする」の章に進んでください。
Docker Desktop
筆者はDocker Desktop 4.2.1を利用しています。
1. Kubernetesをインストールする
1.1 メニューからPreferenceを選択する
1.2 Kubernetesメニューを開き、「Enable Kubernetes」にチェックを入れる。「Apply&Restart」をクリックする
2. kubectlにコンフィグを設定する
自動でkubectlのconfigが設定されているはずです。kubectl context current-context
を実行して確認しましょう。
❯ kubectl config current-context docker-desktop