はじめに
Kubenetesの学習のために、minikube(ローカルのクラスターを作成するツール)の環境構築を行う。
実行環境
- Microsoft Azure 仮想マシン
- OS: Ubuntu 24.04 LTS
- Docker v27.4.1
- kubectl v1.32.0
- minikube v1.34.0
インストール
事前準備
- 作成した仮想マシンにSSH接続でログイン
Docker
公式ドキュメントに従ってDocker Engineをインストール
-
apt
リポジトリのセットアップ
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- Dockerパッケージ(最新バージョン)のインストール
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
hello-world
イメージを実行して、Dockerが正しくインストールされたことを確認
$ sudo docker run hello-world
以下のメッセージが表示されDockerが正常に実行されたことが確認できた。
Hello from Docker!
This message shows that your installation appears to be working correctly.
- Dockerバージョンの確認
$ docker --version
Docker version 27.4.1, build b9d17ea
kubectl
公式ドキュメントに従ってKubectlをインストール(Debianベースのディストリビューションが対象)
- K8sの
apt
リポジトリに必要なパッケージのインストール
sudo apt-get update
# apt-transport-httpsはダミーパッケージの可能性があります。その場合、そのパッケージはスキップできます
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
- K8sパッケージリポジトリの公開署名キーのダウンロード
# `/etc/apt/keyrings`フォルダーが存在しない場合は、curlコマンドの前に作成する必要があります。下記の備考を参照してください。
# sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 特権のないAPTプログラムがこのkeyringを読めるようにします
- K8sリポジトリの追加
# これにより、/etc/apt/sources.list.d/kubernetes.listにある既存の設定が上書きされます
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list # command-not-foundのようなツールが正しく動作するようにします
- kubectlのインストール
sudo apt-get update
sudo apt-get install -y kubectl
- kubectlバージョンの確認
$ kubectl version
Client Version: v1.32.0
Kustomize Version: v5.5.0
The connection to the server localhost:8080 was refused - did you specify the right host or port?
minikube
公式ドキュメントに従ってminikubeをインストール
- minikubeのインストール
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
- minikubeバージョンの確認
$ minikube version
minikube version: v1.34.0
commit: 210b148df93a80eb872ecbeb7e35281b3c582c61
実行
minikubeは仮想環境上で動作するため、動作させる環境(ドライバ)を指定する必要がある。
今回はDockerをドライバとして使用する。
Dockerをドライバとする際のドキュメント
- 実行
$ minikube start --driver=docker
😄 minikube v1.34.0 on Ubuntu 24.04
✨ Using the docker driver based on user configuration
💣 Exiting due to PROVIDER_DOCKER_NEWGRP: "docker version --format <no value>-<no value>:<no value>" exit status 1: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/version": dial unix /var/run/docker.sock: connect: permission denied
💡 Suggestion: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
📘 Documentation: https://docs.docker.com/engine/install/linux-postinstall/
権限エラーができるのでサジェストされた以下のコマンドを実行
sudo usermod -aG docker $USER && newgrp docker
- 再実行
$ minikube start --driver=docker
😄 minikube v1.34.0 on Ubuntu 24.04
✨ Using the docker driver based on user configuration
📌 Using Docker driver with root privileges
👍 Starting "minikube" primary control-plane node in "minikube" cluster
🚜 Pulling base image v0.0.45 ...
💾 Downloading Kubernetes v1.31.0 preload ...
> gcr.io/k8s-minikube/kicbase...: 487.90 MiB / 487.90 MiB 100.00% 84.98 M
> preloaded-images-k8s-v18-v1...: 326.69 MiB / 326.69 MiB 100.00% 38.10 M
🔥 Creating docker container (CPUs=2, Memory=3900MB) ...
🐳 Preparing Kubernetes v1.31.0 on Docker 27.2.0 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔗 Configuring bridge CNI (Container Networking Interface) ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
いろいろ書かれていてよく分からないが、動いたっぽい!
おわりに
実際に何が起こっているのかはよく理解していないので今後勉強する必要があるが、とりあえずK8sを勉強するための環境構築は完了した。
ドライバにDockerを使用する手順を記載したが、途中までminikubeにはVirtualboxが必須だと勘違いしていてインストールに苦戦した。
ドライバは選択肢が複数あることに気づいたので、Virtualboxのインストールは今回は諦め(本質ではないので)、Dockerに切り替えた。