0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

minikubeでkubernetesを学ぼう① ー 準備編 ー

0
Posted at

はじめに

kubernetesリソースをしっかり理解するために、ローカルPC上でminikubeを立ち上げ、リソースをapplyすることでその中身を理解することにしました。本記事では、まずそのセットアップとしてminikube を使ってローカルに k8s クラスタを立ち上げ、kubectl でコマンドを送れる状態を作るところまでを扱います。

minikube と kubectl とは

ツール 役割
kubectl k8s クラスタを操作する CLI(「k8s のリモコン」)
minikube ローカルマシン上にシングルノードの k8s クラスタを立ち上げるツール

minikube は本番環境と同じ Kubernetes API を持つため、学習・開発環境として十分な再現度がある。

前提条件

  • Docker Desktop がインストール済み(minikube のドライバとして使用)
  • RAM 4GB 以上が利用可能(推奨)
  • macOS / Linux / Windows(WSL2)のいずれか

Step 1: kubectl のインストール

macOS

# Homebrew でインストール
brew install kubectl

# バージョン確認
kubectl version --client

Linux

curl -LO "https://dl.k8s.io/release/$(curl -sL https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Windows

winget install Kubernetes.kubectl

確認コマンドの出力例:

Client Version: v1.29.x
Kustomize Version: v5.x.x

Step 2: minikube のインストール

macOS

brew install minikube

Linux

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Windows

winget install Kubernetes.minikube

Step 3: クラスタの起動

minikube は Kubernetes クラスタを動かすために、何らかの「隔離された実行環境」が必要です。その実行環境を提供するのがドライバです。--driver=docker を指定すると、minikube は Docker コンテナを「ノードに見立てて」 k8s クラスタを動かします。

# Docker ドライバで起動(推奨)
minikube start --driver=docker

# CPU とメモリを明示的に指定する場合
minikube start --driver=docker --cpus=2 --memory=4096

初回は必要なイメージのダウンロードがあるため、数分かかります。以下のような出力が出れば成功です。

* minikube v1.32.x on Darwin
* Using the docker driver based on user configuration
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Preparing Kubernetes v1.29.x on Docker ...
* Done! kubectl is now configured to use "minikube"

Step 4: 動作確認

クラスタに含まれるnodeと各コンポーネントの状態を調べてみます。

kubectl get nodes
kubectl get componentstatuses

期待される出力:

$ kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   1m    v1.29.x

$ kubectl get componentstatuses
NAME                 STATUS    MESSAGE   ERROR
scheduler            Healthy   ok        
controller-manager   Healthy   ok        
etcd-0               Healthy   ok  

各コンポーネントの役割

  • scheduler — 「この Pod はどのノードで動かすか」を決める調停役。CPUやメモリの空きを見て最適なノードを選びます。
  • controller-manager — 「Deployment で3台指定したのに2台しかいない」といった差分を検知して自動修正し続けるループ。Chapter 3 の ReplicaSet で実感できます。
  • etcd — クラスタの全状態(どんなリソースが存在するか)を保存するキーバリューDB。ここが壊れるとクラスタ全体が失われます。

STATUS: Ready と表示されたことから、kubectlでクラスタを操作できる状態であることが分かり、クラスタ内のコンポーネントもSTATUS: Healthと表示され、正常に稼働していることが分かります。

クラスタの停止・削除

# 停止(後で再開できる)
minikube stop

# 完全削除
minikube delete

まとめ

  • minikube start でローカル k8s クラスタが起動する
  • kubectl get nodes で Ready 状態を確認できたら準備完了
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?