Cloud9 に学習用の minikube 環境を作る

クラウド

主題の通り、学習用に Cloud9 上に minikube 環境を構築します。

少々手間どったので備忘録しておきます。

環境

  • Cloud9
  • OS
    • AmazonLinux2
  • インスタンス
    • t3.medium(vCPU:2、Memory:4GiB)
  • Docker はインストール済み

参考サイト

インストール

基本は、参考サイト様の「インストール」章のとおりです。
だたし、一部うまくいかないところがあったので、そちらをうまいことして処理します。

前提のインストール
  • たぶん Docker 環境構築されてたら不要かもしれないが一応実行
$ sudo yum update
$ sudo yum install docker.io
$ sudo yum install conntrack
kubectl(kubernetesのCLI操作ツール) をインストール
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
minikube をインストール
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ chmod +x minikube
$ sudo mv minikube /usr/local/bin/

# 認識できているか確認
$ minikube version
minikube version: v1.27.1
commit: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
cri-dockerd のインストール

本来であれば minikube start --vm-driver=none とすればうまくいくはずだと思うのですが、実行すると以下の通りエラーになりました。

minikube start --vm-driver=none
* minikube v1.27.1 on Amazon 2
* Using the none driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Restarting existing none bare metal machine for "minikube" ...

* Exiting due to NOT_FOUND_CRI_DOCKERD: 

* Suggestion: 

    The none driver with Kubernetes v1.24+ and the docker container-runtime requires cri-dockerd.

    Please install cri-dockerd using these instructions:

    https://github.com/Mirantis/cri-dockerd#build-and-install

エラーの内容を直訳すると、「Kubernetes 1.24以降のバージョンでは、cri-dockerd が必要」とのことです

そのため、cri-docerd をインストールします。
手順は以下の github にありますが、ここでも一応記載しておきます。

GitHub - Mirantis/cri-dockerd: dockerd as a compliant Container Runtime Interface for Kubernetes
dockerd as a compliant Container Runtime Interface for Kubernetes - Mirantis/cri-dockerd
# まず、cri-dockerdをビルドするために、GOのコンパイラをインストールする
$ wget https://storage.googleapis.com/golang/getgo/installer_linux
$ chmod +x ./installer_linux
$ ./installer_linux
$ source ~/.bash_profile

# cri-dockerd のビルド&インストール
$ git clone https://github.com/Mirantis/cri-dockerd.git 
$ cd cri-dockerd
$ mkdir bin
$ go build -o bin/cri-dockerd # ここの処理が不安定だった。10分くらい応答がなかったからctrl+c して中止して、とか繰り返してたら3回めくらいに成功した。そのときは3分くらい応答がなかった
$ mkdir -p /usr/local/bin
$ sudo install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd 
$ sudo cp -a packaging/systemd/* /etc/systemd/system
$ sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
$ sudo systemctl daemon-reload 
$ sudo systemctl enable cri-docker.service
$ sudo systemctl enable --now cri-docker.socket
crictl のインストール

このまま minikube start --vm-driver=none すると、以下のようなエラーになりました。

$ minikube start --vm-driver=none                                                                                                                                                            
* minikube v1.27.1 on Amazon 2
* Using the none driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Restarting existing none bare metal machine for "minikube" ...
* OS release is Amazon Linux 2

X Exiting due to RUNTIME_ENABLE: Temporary Error: sudo crictl version: exit status 1
stdout:

stderr:
sudo: crictl: command not found

* 
╭─────────────────────────────────────────────────────────────────────────────────────────────╮
│                                                                                             │
│    * If the above advice does not help, please let us know:                                 │
│      https://github.com/kubernetes/minikube/issues/new/choose                               │
│                                                                                             │
│    * Please run `minikube logs --file=logs.txt` and attach logs.txt to the GitHub issue.    │
│                                                                                             │
╰─────────────────────────────────────────────────────────────────────────────────────────────╯

ググってみると、こちらの記事に解決方法が載っていました。

インストールします。

$ VERSION="v1.25.0"
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
$ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin
$ rm -f crictl-$VERSION-linux-amd64.tar.gz

また、さらに sudo で crictl が実行できるように、/usr/local/binに環境変数を通します。

$ sudo visudo

以下の通り記述を変更します。

- Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
+ Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin

実行

以上の準備により、以下を実行してみます。

$ minikube start

いろいろ出力されますが、
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
と出たら多分成功です。

以下を実行して動作しているか確認します。

$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

コメント

タイトルとURLをコピーしました