VPSにminikubeを入れて失敗した話
あまり活用していない、さくらのVPSサーバを持っていたので、そこに学習用にkubernetesを入れていろいろ使えたら便利だなーと思って導入を試みました。
結果的にVPSのスペックが低すぎて、まともに動きませんでした。。。
失敗談としてメモを残しておきます。
目次
環境
VPSサーバ | さくらのVPS 1Gプラン |
メモリ | 1G |
HDD | 100GB |
CPU | 仮想2Core |
OS | CentOS 7.6 |
準備
kubectlのインストール
参考: Install and Set Up kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl
Docker CE のインストール
minikubeを立ち上げる際にdockerが必要となるようなので、ここで入れておきます。
必要なパケージのインストール
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
リポジトリの追加
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
インストール
sudo yum install docker-ce docker-ce-cli containerd.io
docker の起動
sudo systemctl start docker
動作確認
sudo docker run hello-world
Hello Worldが問題なく動けばDocker ceのインストールは完了です
minikubeのインストール
参考: Install Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube
sudo cp minikube /usr/local/bin && rm minikube
minikubeの起動
sudo /usr/local/bin/minikube start --vm-driver=none
--vm-driver=none
を使うときはいろいろと注意点があるので気をつけたほうがいいかもしれません。
https://github.com/kubernetes/minikube/blob/master/docs/vmdriver-none.md
podの配置まで試してみる
deploymentの作成
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
起動したpodを確認
kubectl get pods
pod のアプリケーションをcurlで叩いてみる
kubectl exec -ti $POD_NAME bash
curl localhost:8080
exit
curl localhost:8080
のときに下記のような実行結果が出ます
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-6bt2z | v=1
これで一応アプリケーションが動くところまでは確認できました.
ただし、サーバの動作がかなり重くなってしまいました。
この時点のloadを見ると5~10あたりをウロウロしていて、まともにアプリケーションが動くような状態ではなかったです。
podを増やしたりすると、更に重くなるのでほぼ使えないです。。
まとめ
- VPS上でもminikubeの構築はできた
- さくらのVPS1Gのスペックで動かすのはきびしい
- kubernetesの必要とするスペックが思った以上に高かった
今回学習用に立てようと思いましたが、ちょっと実用レベルにはならなかったので、別の方法を考えていきたいと思います。